您的位置:首页 > 移动开发

struts2 action中获取request session application的方法

2017-04-28 09:22 656 查看
共四种方式:

其中前两种得到的是Map<String,Object>  后两种得到的才是真正的request对象

而Map就是把request对象中的属性取出做成了键值对而已。

【方法一】

[java] view
plaincopy

public class LoginAction {  

    private Map request;  

    private Map session;  

    private Map application;  

      

    public String execute() {  

        request = (Map)ActionContext.getContext().get("request");  

        session = ActionContext.getContext().getSession();  

        application = ActionContext.getContext().getApplication();  

        request.put("username1", "jingjing1");  

        session.put("username2", "jingjing2");  

        application.put("username3", "jingjing3");  

        return "success";  

    }  

}  

取出结果

[html] view
plaincopy

<body>  

   <%  

      String username1 = (String)request.getAttribute("username1");  

      String username2 = (String)session.getAttribute("username2");  

      String username3 = (String)application.getAttribute("username3");  

   %>  

   <%=username1 %>  

   <%=username2 %>  

   <%=username3 %>  

 </body>  

【方法二】

[java] view
plaincopy

public class LoginAction implements RequestAware,SessionAware,ApplicationAware {  

    private Map<String, Object> request;  

    private Map<String, Object> session;  

    private Map<String, Object> application;  

      

    public void setRequest(Map<String, Object> request) {  

        // TODO Auto-generated method stub  

        this.request = request;  

    }  

  

    public void setSession(Map<String, Object> session) {  

        // TODO Auto-generated method stub  

        this.session = session;  

    }  

  

    public void setApplication(Map<String, Object> application) {  

        // TODO Auto-generated method stub  

        this.application = application;  

    }  

    public String execute() {  

        request.put("username1", "jingjing11");  

        session.put("username2", "jingjing222");  

        application.put("username3", "jingjing33");  

        return "success";  

    }  

}  

【方法三】

[java] view
plaincopy

public class LoginAction {  

    private HttpServletRequest request;  

    private HttpSession session;  

    private ServletContext application;  

    public String execute() {  

              

        request = ServletActionContext.getRequest();  

        session = request.getSession();  

        application = session.getServletContext();  

          

        //application = ServletActionContext.getRequest().getSession().getServletContext();  

          

        request.setAttribute("aaa", "aaa");  

        session.setAttribute("bbb", "bbb");  

        application.setAttribute("ccc", "ccc");  

          

        return "success";  

    }  

}  

【方法四】

[java] view
plaincopy

public class LoginAction implements ServletRequestAware {  

    private HttpServletRequest request;  

    private HttpSession session;  

    private ServletContext application;  

      

    public void setServletRequest(HttpServletRequest request) {  

        // TODO Auto-generated method stub  

        this.request = request;  

        this.session = request.getSession();  

        this.application = session.getServletContext();  

    }  

      

    public String execute() {         

        request.setAttribute("111", "111");  

        session.setAttribute("222", "222");  

        application.setAttribute("333", "333");  

        return "success";  

    }         

}  

HttpServletRequest方法总结:

HttpServletRequest接口是继承自ServletRequest接口的,增加了和HTTP相关的一些方法

getScheme() 方法返回请求的计划,比如http,https或者ftp.

getServerName() 方法返回被发送请求的服务器的主机名

getServerPort() 方法返回被发送请求的端口号。

getContextPath() 返回请求地址的根目录,以"/"开关,但不是以"/"结尾。

一个常用的获得服务器地址的连接字符串是:

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";


getCookies() 取得cookie 

getMethod() 取得请求方法,如get,post或put

getRequestURL() 取得请求URL(统一资源定位符)

getRequestURI() 取得请求URI(统一资源标识符)

getSession() 取得对应session


public HttpSession getSession(); 

public HttpSession getSession(boolean create); 

返回与这个请求关联的当前的有效的session。如果调用这个方法时没带参数,那么在没有session与这个请求关联的情况下,将会新建一个session。如果调用这个方法时带入了一个布尔型的参数,只有当这个参数为真时,session才会被建立。


ServletRequestAware与RequestAware的区别
ServletRequestAware——提供对HttpServletRequest对象的访问

RequestAware ——通过Map来提供对所有request属性的访问
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javaee
相关文章推荐