Struts2里如何取得request,session,application

  1. 一共有4种方法
    第一种:
    取得MAP类型的request,session,application
    在java文件里写
    package com.xjtu.st;
    
    import java.util.Map;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class LoginAction extends ActionSupport{
    	private Map request;
    	private Map session;
    	private Map application;
    	public LoginAction(){
    		request = (Map)ActionContext.getContext().get("request");
    		session = ActionContext.getContext().getSession();
    		application = ActionContext.getContext().getApplication();
    	}
    	
    	public String execute(){
    		request.put("rs", "rs");
    		session.put("ss", "ss");
    		application.put("as", "as");
    		
    		return SUCCESS;
    	}
    }
    
    ActionContext.getContext()是获得Action的上下文,然后可以获得MAP类型的request等
  2. 在输出页面可获得参数
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <%@ taglib uri="/struts-tags" prefix="s" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        
        
        <title>My JSP 'MyJsp.jsp' starting page</title>
        
    	<meta http-equiv="pragma" content="no-cache">
    	<meta http-equiv="cache-control" content="no-cache">
    	<meta http-equiv="expires" content="0">    
    	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    	<meta http-equiv="description" content="This is my page">
    	<!--
    	<link rel="stylesheet" type="text/css" href="styles.css">
    	-->
    
      </head>
      
      <body>
       hello  <br>
     <s:property value="#request.rs"/> <br><!--  //通过标签取值-->
       <s:property value="#session.ss"/> <br>
       <s:property value="#application.as"/> <br>
       <%=request.getAttribute("rs") %><br><!-- 用原始的方法取值-->
         <%=session.getAttribute("ss") %><br>
           <%=application.getAttribute("as") %><br>
       
      </body>
    </html>
    

  3. 第二种:
    实现RequestAware,SessionAware,ApplicationAware接口,该方法成为DI(依赖注入)或者IOC(控制反转)。代码如下
    package com.xjtu.st;
    
    import java.util.Map;
    
    import org.apache.struts2.interceptor.ApplicationAware;
    import org.apache.struts2.interceptor.RequestAware;
    import org.apache.struts2.interceptor.SessionAware;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class LoginAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
    	private Map request;
    	private Map session;
    	private Map application;
    	
    	
    	public String execute(){
    		request.put("rs", "rrs");
    		session.put("ss", "sss");
    		application.put("as", "aas");
    		
    		return SUCCESS;
    	}
    
    	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;
    	}
    }
    

    前面2种是取得Map类型的,后两种是取得HtteServletRequest,HttpSession,ServletContext类型的办法
  4. 第三种:
    代码如下
    package com.xjtu.st;
    
    import java.util.Map;
    
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    import org.apache.struts2.ServletActionContext;
    import org.apache.struts2.interceptor.ApplicationAware;
    import org.apache.struts2.interceptor.RequestAware;
    import org.apache.struts2.interceptor.SessionAware;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class LoginAction extends ActionSupport {
    	private HttpServletRequest request;
    	private HttpSession session;
    	private ServletContext application;
    	
    	public LoginAction(){
    		request= ServletActionContext.getRequest();
    		session = request.getSession();
    		application = session.getServletContext();
    	}
    	public String execute(){
    		request.setAttribute("rs", "rrrs");
    		session.setAttribute("ss", "ssss");
    		application.setAttribute("as", "aaas");
    		
    		return SUCCESS;
    	}
    
    
    
    	
    }
    
    该方法不常用
  5. 第四种:
    也是ioc的方式
    代码如下
    package com.xjtu.st;
    
    import java.util.Map;
    
    import javax.servlet.ServletContext;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    import org.apache.struts2.ServletActionContext;
    import org.apache.struts2.interceptor.ApplicationAware;
    import org.apache.struts2.interceptor.RequestAware;
    import org.apache.struts2.interceptor.ServletRequestAware;
    import org.apache.struts2.interceptor.SessionAware;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class LoginAction extends ActionSupport implements ServletRequestAware{
    	private HttpServletRequest request;
    	private HttpSession session;
    	private ServletContext application;
    	
    
    	public String execute(){
    		request.setAttribute("rs", "rrrrs");
    		session.setAttribute("ss", "sssss");
    		application.setAttribute("as", "aaaas");
    		
    		return SUCCESS;
    	}
    	public void setServletRequest(HttpServletRequest request) {
    		// TODO Auto-generated method stub
    		this.request = request;
    		session = request.getSession();
    		application = session.getServletContext();
    		
    	}
    
    
    
    	
    }
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值