Action里面取得request、session、application

取得request、session、application、HttpServletRequest、HttpServletSession、ServletContext的引用

方式一:
Action里面取得request、session、application
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction1 extends ActionSupport {
 
 private Map request;
 private Map session;
 private Map application;
 
 public LoginAction1() {
  request = (Map)ActionContext.getContext().get("request");
  session = ActionContext.getContext().getSession();
  application = ActionContext.getContext().getApplication();
 }
 
 public String execute() {
  request.put("r1", "r1");
  session.put("s1", "s1");
  application.put("a1", "a1");
  return SUCCESS;
 }
}

jsp页面的取值方式:
<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
    <%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
 User Login Success!
 <br />
 <s:property value="#request.r1"/> | <%=request.getAttribute("r1") %> <br />
 <s:property value="#session.s1"/> | <%=session.getAttribute("s1") %> <br />
 <s:property value="#application.a1"/> | <%=application.getAttribute("a1") %> <br />
 <s:property value="#attr.a1"/><br />
 <s:property value="#attr.s1"/><br />
 <s:property value="#attr.r1"/><br />
 <s:debug></s:debug>
 <br />
</body>
</html>

******************************************************************************************************************************

方式二:----------------------------------------------------------这种最常用

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 LoginAction2 extends ActionSupport implements RequestAware,SessionAware, ApplicationAware {
 
 private Map<String, Object> request;
 private Map<String, Object> session;
 private Map<String, Object> application;
 
 //DI dependency injection
 //IoC inverse of control
 public String execute() {
  request.put("r1", "r1");
  session.put("s1", "s1");
  application.put("a1", "a1");
  return SUCCESS;
 }

 @Override
 public void setRequest(Map<String, Object> request) {
  this.request = request;
 }

 @Override
 public void setSession(Map<String, Object> session) {
  this.session = session;
 }

 @Override
 public void setApplication(Map<String, Object> application) {
  this.application = application;
 }
 
 
}
***********************************************************************************************************************************

方式三:


import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction4 extends ActionSupport implements ServletRequestAware {
 
 private HttpServletRequest request;
 private HttpSession session;
 private ServletContext application;
 
 
 
 public String execute() {
  request.setAttribute("r1", "r1");
  session.setAttribute("s1", "s1");
  application.setAttribute("a1", "a1");
  return SUCCESS;
 }

 

 @Override
 public void setServletRequest(HttpServletRequest request) {
  this.request = request;
  this.session = request.getSession();
  this.application = session.getServletContext();
 }
 
}

************************************************************************************************************************************

方式四:

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction4 extends ActionSupport implements ServletRequestAware {
 
 private HttpServletRequest request;
 private HttpSession session;
 private ServletContext application;
 
 
 
 public String execute() {
  request.setAttribute("r1", "r1");
  session.setAttribute("s1", "s1");
  application.setAttribute("a1", "a1");
  return SUCCESS;
 }

 

 @Override
 public void setServletRequest(HttpServletRequest request) {
  this.request = request;
  this.session = request.getSession();
  this.application = session.getServletContext();
 }
 
}

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Action里面取得request、session、application)