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

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

1. 获取requestsession的方法

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 = (Mapcontext.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-->