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