struts2 action中获取request session application的方法

来源:互联网 发布:模型预测控制 知乎 编辑:程序博客网 时间:2024/04/28 05:33

共四种方式:

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

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

【方法一】

[java] view plaincopy
  1. public class LoginAction {  
  2.     private Map request;  
  3.     private Map session;  
  4.     private Map application;  
  5.       
  6.     public String execute() {  
  7.         request = (Map)ActionContext.getContext().get("request");  
  8.         session = ActionContext.getContext().getSession();  
  9.         application = ActionContext.getContext().getApplication();  
  10.         request.put("username1""jingjing1");  
  11.         session.put("username2""jingjing2");  
  12.         application.put("username3""jingjing3");  
  13.         return "success";  
  14.     }  
  15. }  

取出结果

[html] view plaincopy
  1. <body>  
  2.    <%  
  3.       String username1 = (String)request.getAttribute("username1");  
  4.       String username2 = (String)session.getAttribute("username2");  
  5.       String username3 = (String)application.getAttribute("username3");  
  6.    %>  
  7.    <%=username1 %>  
  8.    <%=username2 %>  
  9.    <%=username3 %>  
  10.  </body>  

【方法二】

[java] view plaincopy
  1. public class LoginAction implements RequestAware,SessionAware,ApplicationAware {  
  2.     private Map<String, Object> request;  
  3.     private Map<String, Object> session;  
  4.     private Map<String, Object> application;  
  5.       
  6.     public void setRequest(Map<String, Object> request) {  
  7.         // TODO Auto-generated method stub  
  8.         this.request = request;  
  9.     }  
  10.   
  11.     public void setSession(Map<String, Object> session) {  
  12.         // TODO Auto-generated method stub  
  13.         this.session = session;  
  14.     }  
  15.   
  16.     public void setApplication(Map<String, Object> application) {  
  17.         // TODO Auto-generated method stub  
  18.         this.application = application;  
  19.     }  
  20.     public String execute() {  
  21.         request.put("username1""jingjing11");  
  22.         session.put("username2""jingjing222");  
  23.         application.put("username3""jingjing33");  
  24.         return "success";  
  25.     }  
  26. }  
【方法三】

[java] view plaincopy
  1. public class LoginAction {  
  2.     private HttpServletRequest request;  
  3.     private HttpSession session;  
  4.     private ServletContext application;  
  5.     public String execute() {  
  6.               
  7.         request = ServletActionContext.getRequest();  
  8.         session = request.getSession();  
  9.         application = session.getServletContext();  
  10.           
  11.         //application = ServletActionContext.getRequest().getSession().getServletContext();  
  12.           
  13.         request.setAttribute("aaa""aaa");  
  14.         session.setAttribute("bbb""bbb");  
  15.         application.setAttribute("ccc""ccc");  
  16.           
  17.         return "success";  
  18.     }  
  19. }  

【方法四】

[java] view plaincopy
  1. public class LoginAction implements ServletRequestAware {  
  2.     private HttpServletRequest request;  
  3.     private HttpSession session;  
  4.     private ServletContext application;  
  5.       
  6.     public void setServletRequest(HttpServletRequest request) {  
  7.         // TODO Auto-generated method stub  
  8.         this.request = request;  
  9.         this.session = request.getSession();  
  10.         this.application = session.getServletContext();  
  11.     }  
  12.       
  13.     public String execute() {         
  14.         request.setAttribute("111""111");  
  15.         session.setAttribute("222""222");  
  16.         application.setAttribute("333""333");  
  17.         return "success";  
  18.     }         
  19. }  

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属性的访问
原创粉丝点击