急求~~Struts2编程中response.addCookie()返回空指针异常的问题的原因和解决方案
在我的Action的execute()函数中,我想把从jsp页面传来的值保存为cookie,结果却抛出了空指针异常execute函数的代码:publicStringexe...
在我的Action的execute()函数中,我想把从jsp页面传来的值保存为cookie,结果却抛出了空指针异常
execute函数的代码:
public String execute(){
System.out.println("action");
if(getUser().equals("liu")&&getPassword().equals("shilei")){
ActionContext.getContext().getSession().put("user", getUser());
Cookie cookie=new Cookie("user",user);
cookie.setMaxAge(60*60);
response.addCookie(cookie);//就是这里出错了
return SUCCESS;
}
return ERROR;
}
执行后的结果
java.lang.NullPointerException
action.LoginAction.execute(LoginAction.java:38)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
response我是在Action中声明的一个private HttpServletResponse response; 展开
execute函数的代码:
public String execute(){
System.out.println("action");
if(getUser().equals("liu")&&getPassword().equals("shilei")){
ActionContext.getContext().getSession().put("user", getUser());
Cookie cookie=new Cookie("user",user);
cookie.setMaxAge(60*60);
response.addCookie(cookie);//就是这里出错了
return SUCCESS;
}
return ERROR;
}
执行后的结果
java.lang.NullPointerException
action.LoginAction.execute(LoginAction.java:38)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
response我是在Action中声明的一个private HttpServletResponse response; 展开
4个回答
展开全部
我记得structs2要实现implements ServletResponseAware 接口重写
@Override
public void setServletResponse(HttpServletResponse arg0) {
this.response = arg0;
}
private HttpServletResponse response; //添加set方法
//这样就可以获得response了 不会出现空值了
@Override
public void setServletResponse(HttpServletResponse arg0) {
this.response = arg0;
}
private HttpServletResponse response; //添加set方法
//这样就可以获得response了 不会出现空值了
更多追问追答
追问
implements ServletResponseAware需要继承哪一个包啊?
追答
import javax.servlet.http.HttpServletResponse;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单说,你的response没初始化,是null,可通过跟获取session相似的方式获得response
追问
那该到底该怎么获取呢?你可以具体的说一下嘛?
追答
Action类需要实现ServletResponseAware接口,struts2框架会负责给你注入request和response.
response = ActionContext.getContext().get(StrutsStatics.HTTP_RESPONSE);这样也行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
HttpServletResponse response = (HttpServletResponse)
ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);
ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);
更多追问追答
追问
org.apache.struts2.StrutsStatics.HTTP_RESPONSE的jar包是哪一个啊?
追答
struts-core
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
response 哪来的?
追问
response我是在Action中声明的一个
private HttpServletResponse response;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询