zoukankan      html  css  js  c++  java
  • struts2 action中获取request session application的方法

    共四种方式:

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

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

    【方法一】

    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";
    	}
    }

    取出结果

     <body>
        <%
           String username1 = (String)request.getAttribute("username1");
           String username2 = (String)session.getAttribute("username2");
           String username3 = (String)application.getAttribute("username3");
        %>
        <%=username1 %>
        <%=username2 %>
        <%=username3 %>
      </body>

    【方法二】

    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";
    	}
    }
    
    【方法三】

    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";
    	}
    }

    【方法四】

    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属性的访问


  • 相关阅读:
    ES6中的let关键字,有什么用呢?
    ES6系列-什么是ES6?新手应该怎么理解
    css的变量教程,更强大的css
    尤雨溪在直播中讲到的Vue3.0 Beta的那些特性,快记笔记了
    前端基础进阶(七)-前端工程师最容易出错的问题-this关键字
    前端基础进阶(六)-大厂面试题问题:循环闭包与setTimeout
    JavaScript 中 this的指向
    What happens to our code? JavaScript 代码是怎样执行的
    Truthy and Falsy Values and Equality Operators
    iDisposable
  • 原文地址:https://www.cnblogs.com/itmyhome/p/4131592.html
Copyright © 2011-2022 走看看