首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts2学习札记【九】/ 获取request,Session的方法

2012-09-04 
struts2学习笔记【九】/ 获取request,Session的方法1.?获取request,session的方法1.1.?非IOCpublic?class?Te

struts2学习笔记【九】/ 获取request,Session的方法

1.?获取request,session的方法

1.1.?非IOC

public?class?Test?extends?ActionSupport{

???? ActionContext?context;

???? Map?request;

???? Map?session;

???? Map?application;

????public?String?execute()throws?Exception{

???? context?=?ActionContext.getContext();

?????? request?=?(Map)?context.get("request");

???? session?=?context.getSession();

?????? application?=?context.getApplication();

???? request.put("req",?"ceshi");

???? session.put("sess",?"admin");

???? return?"SUCCESS";

???? }

}

前台取值方法:

<s:property??value="#request.req">

<s:property??value="#session.sess">

这是OGNL写法,在后面我们将详细的学习。

1.2.?IOC模式

public?class?Test?extends?ActionSupport?

implements?RequestAware,SessionAware,ApplicationAware{

Map?request;

Map?session;

Map?application;

public?String?execute()throws?Exception{

request.put("req",?"ceshi");

session.put("sess",?"admin");

return?"SUCCESS";

}

public?void?setRequest(Map?request)?{

this.request?=?request;

}

public?void?setSession(Map?session)?{

this.session?=?session;

}

public?void?setApplication(Map?application)?{

this.application?=?application;

}

}

该方法区别与第一个方法的地方在于其实现了几个借口,同时实现了其自带的几个方法,这几个set方法会自动寻找类的属性,在方法体中进行赋值操作,容器自己注入。

以上两种方法,如果需要获得容器对应的作用域中固有属性,就没有用了。

1.3.?非IOC模式

public?class?TestScope?extends?ActionSupport{

HttpServletRequest?request;

HttpSession?session;

ServletContext?application;

public?String?execute()throws?Exception{

request?=?ServletActionContext.getRequest();

session?=?request.getSession();

application?=?ServletActionContext.getServletContext();

request.setAttribute("loginname",?"admin");

return?"SUCCESS";

}

}

如果只是单纯的传递值,那么以上两种方法均可以达到,但是如果需要用到一些servlet本身的属性时,这样的操作就很有价值了。

1.4.?IOC模式

public?class?TestScope?extends?ActionSupport?implements?

ServletRequestAware,ServletContextAware

{

HttpServletRequest?request;

HttpSession?session;

ServletContext?application;

public?String?execute()throws?Exception{

session?=?request.getSession();

request.setAttribute("loginname",?"admin");

return?"SUCCESS";

}

public?void?setServletRequest(HttpServletRequest?request)?{

this.request?=?request;

}

public?void?setServletContext(ServletContext?application)?{

this.application?=?application;

}

}

唯一需要我们关注的时,在系统注入的时候,session没有被注入,我们必须手动的通过request这个属性来获取session的值。

什么是IOC,有兴趣可以自己学习,一下,不过我相信,通过以上例子,大家应该有个模糊的印象。

<!--EndFragment-->

热点排行