struts2取得session的问题。我在做spring自带的宠物店程序,想把它改成struts2的东西,我们一般写action都会
struts2取得session的问题。
我在做spring自带的宠物店程序,想把它改成struts2的东西,我们一般写action都会继承ActionSupport这个类,我的想法是觉得每次都要在程序里取request,session太麻烦,所以我写了一个BaseAction让他继承ActionSupport,在这里声名一下request,session并赋值,之后我自己的action继承BaseAction也就等于继承了ActionSupport并且把request,session注入进来了,但是我在自己的Action里居然取不到值。
BaseAction我是这样写的:protected Map session=ActionContext.getContext().getSession();
protected HttpServletRequest request = ServletActionContext.getRequest();
但是我如果在自己的action中这样写就可以,请指教一下,是什么原因,另外有没有人有办法,不要每次都要取request,session.
[解决办法]
写一个BaseAction,它继承ActionSupport,实现ServletRequestAware和SessionAware接口,你的业务Action直接继承BaseAction,直接使用request和session即可。
例:
public class BaseAction extends ActionSupport implements ServletRequestAware,
SessionAware {
protected HttpServletRequest request;
protected Map<String, Object> session;
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public void setSession(Map<String, Object> session) {
this.session = session;
}
}
[解决办法]
[解决办法]HttpSession s=ServletActionContext.getRequest().getSession() 试试这个
[解决办法]up!!!
[解决办法]2楼说的挺对的呀,我感觉蛮对的呀。
[解决办法]public class BaseAction implements ServletRequestAware,ServletResponseAware,SessionAware{
/**
* 非Ioc方式创建
*/
//public HttpServletRequest getRequest(){
//return ServletActionContext.getRequest();
//}
//public HttpServletResponse getResponse(){
//return ServletActionContext.getResponse();
//}
//public HttpSession getSession(){
//return ServletActionContext.getRequest().getSession();
//}
/**
* Ioc方式创建
*/
protected HttpServletRequest request;
protected HttpServletResponse response;
protected Map session;
protected final String INDEX="index";
protected final String ERROR="error";
protected final String SUCCESS="success";
protected final String LOGIN="login";
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
public void setServletResponse(HttpServletResponse response) {
this.response=response;
}
public void setSession(Map m) {
this.session=m;
}
}
[解决办法]这个成:
/**
* 获得请求对象HttpServletRequest
*
* @return request
*/
protected final HttpServletRequest getRequest()
{
return ServletActionContext.getRequest();
}
/**
* 获得struts2的session对象
*
* @return Map<String, Object>
*/
protected final Map<String, Object> getSession()
{
return getActionContext().getSession();
}
[解决办法]学习了
[解决办法]