Struts2里如何取得request,session,application(一)

2014-11-23 23:22:32 · 作者: · 浏览: 0
一共有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等
在输出页面可获得参数
<%@ 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+"/";
%>



  
    
    
    My JSP 'MyJsp.<a href="http://www.2cto.com/kf/web/jsp/" target="_blank" class="keylink">jsp</a>' starting page
    
	
  
	
  
	
      
	
  
	
  
	
  

  
  
  
   hello  



<%=request.getAttribute("rs") %>
<%=session.getAttribute("ss") %>
<%=application.getAttribute("as") %>
html>

第二种:
实现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
  
    request) {
		// TODO Auto-generated method stub
		this.request=request;
		
	}

	public void setSession(Map
   
     session) { // TODO Auto-generated method stub this.session= session; } public void setApplication(Map
    
      application) { // TODO Auto-generated method stub this.application = application; } } 
    
   
  

前面2种是取得Map类型的,后两种是取得HtteServletRequest,HttpSession,ServletContext类型的办法第三种:
代码如下
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;
	}



	
}
该方法不常用第四种:
也是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