首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

struts2取得session的有关问题

2012-01-11 
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;
}
}

[解决办法]

探讨
写一个BaseAction,它继承ActionSupport,实现ServletRequestAware和SessionAware接口,你的业务Action直接继承BaseAction,直接使用request和session即可。

例:

public class BaseAction extends ActionSupport implements ServletRequestAwar……

[解决办法]
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();
}
[解决办法]
学习了
[解决办法]
探讨
写一个BaseAction,它继承ActionSupport,实现ServletRequestAware和SessionAware接口,你的业务Action直接继承BaseAction,直接使用request和session即可。



例:

public class BaseAction extends ActionSupport implements ServletRequestAwar……

热点排行