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-->