Struts2获取request,session,application的几种方式

request,session,application在正常使用时,在会话中传递数据的方式都是通过key-value的形式传递,因此,我们可以将它们看做Map,Struts2为我们提供了多种获取它们的方法;

  1. 通过ActionContext获取得到
  public class TestAction1 extends ActionSupport {
  
        	//初始化三个同名map
        	private Map request;
        	private Map session;
        	private Map application;
        	
        	//在构造器内对获取到web元素之后赋值给到之前的map
        	public LoginAction1(){
        		request = (Map) ActionContext.getContext().get("request");
        		session = (Map) ActionContext.getContext().getSession();
        		application = (Map) ActionContext.getContext().getApplication();
        	}
        	
        //此时map已经具有web元素的作用,可以在web作用域里面传递数据啦	
		public String execute(){
		request.put("1", "1");
		session.put("2", "2");
		application.put("3", 3");
		return SUCCESS;
	}

2.通过实现RequestAware,SessionAware,ApplicationAware接口达到IOC控制反转来实现获取web元素;(此方法建议重点掌握)

public class TestAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware {
	
	//初始化三个同名指定数据类型的同名map(接口中的方法有规定了)
	private Map<String, Object> request;
	private Map<String, Object> session;
	private Map<String, Object> application;
	
	//实现三个接口中的方法
	public void setRequest(Map<String, Object> request) {
		this.request = request;
		
	}
	public void setSession(Map<String, Object> session) {
		this.session = session;
	}
	public void setApplication(Map<String, Object> application) {
		this.application = application;
		
	}

 	//放入Key与value
	public String execute(){
		request.put("1", "1");
		session.put("2", "2");
		application.put("3", 3");
		return SUCCESS;
	}
}

3.通过普通的HttpServlet方法获取;

public class TestAction3 extends ActionSupport {
//先初始化三个web元素
	private HttpServletRequest request;
	private HttpSession session;
	private ServletContext application;
	
	//获取web元素
	public TestAction3(){
		request = ServletActionContext.getRequest();
		session = request.getSession();
		application = session.getServletContext();
	}
	
	//放入Key与value
	public String execute(){
		request.setAttribute("1", "1");
		session.setAttribute("2", "2");
		application.setAttribute("3", "3");
		return SUCCESS;
	}

4.通过实现ServletRequestAware接口获取;

public class TestAction3 extends ActionSupport implements SevletRequestAware {
//先初始化三个web元素
	private HttpServletRequest request;
	private HttpSession session;
	private ServletContext application;
	
	//实现ServletRequestAware中的setServletRequest
	public void setServletRequest(HttpServletRequest request){
		this.request = request;
		this.seesion = request.getSession();
		this.application = session.getServletContext;
	}
	//获取web元素
	public TestAction4(){
		request = ServletActionContext.getRequest();
		session = request.getSession();
		application = session.getServletContext();
	}
	
	//放入Key与value
	public String execute(){
		request.setAttribute("1", "1");
		session.setAttribute("2", "2");
		application.setAttribute("3", "3");
		return SUCCESS;
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值