<strong><span style="font-size:18px;">Struts2中访问web元素的四种方式(访问requst、session、application) 四种方式: 1. 通过ActionContext来访问request,session,application对象 2. 通过实现RequestAware、SessionAware、ApplicationAware接口来访问request,session,application对象 3. 通过ServletActionContext来访问request,session,application对象 4. 通过实现ServletRequestAware接口来访问request,session,application对象 演示代码: 方式一: view plaincopy to clipboardprint? public class UserAction1 extends ActionSupport{ private static final long serialVersionUID = 1L; private Map <String,Object>request; private Map <String,Object>session; private Map <String,Object>application; @SuppressWarnings("unchecked") @Override public String execute(){ System.out.println("通过ActionContext来访问request,session,application对象"); // 初始化 request = (Map<String,Object>)ActionContext.getContext().get("request"); session = ActionContext.getContext().getSession(); application = ActionContext.getContext().getApplication(); // 赋值 request.put("requestKey", "requestValue"); session.put("sessionKey", "sessionValue"); application.put("applicationKey", "applicationValue"); return "success"; } } public class UserAction1 extends ActionSupport{ private static final long serialVersionUID = 1L; private Map <String,Object>request; private Map <String,Object>session; private Map <String,Object>application; @SuppressWarnings("unchecked") @Override public String execute(){ System.out.println("通过ActionContext来访问request,session,application对象"); // 初始化 request = (Map<String,Object>)ActionContext.getContext().get("request"); session = ActionContext.getContext().getSession(); application = ActionContext.getContext().getApplication(); // 赋值 request.put("requestKey", "requestValue"); session.put("sessionKey", "sessionValue"); application.put("applicationKey", "applicationValue"); return "success"; } } 方式二: view plaincopy to clipboardprint? public class UserAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{ private static final long serialVersionUID = 1L; private Map <String,Object>request; private Map <String,Object>session; private Map <String,Object>application; @SuppressWarnings("unchecked") @Override public String execute(){ System.out.println("通过实现RequestAware、SessionAware、ApplicationAware接口来访问request,session,application对象"); // 赋值 request.put("requestKey", "requestValue"); session.put("sessionKey", "sessionValue"); application.put("applicationKey", "applicationValue"); return "success"; } @Override public void setRequest(Map<String, Object> request) { this.request = request; } @Override public void setApplication(Map<String, Object> application) { this.application = application; } @Override public void setSession(Map<String, Object> session) { this.session = session; } } public class UserAction2 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{ private static final long serialVersionUID = 1L; private Map <String,Object>request; private Map <String,Object>session; private Map <String,Object>application; @SuppressWarnings("unchecked") @Override public String execute(){ System.out.println("通过实现RequestAware、SessionAware、ApplicationAware接口来访问request,session,application对象"); // 赋值 request.put("requestKey", "requestValue"); session.put("sessionKey", "sessionValue"); application.put("applicationKey", "applicationValue"); return "success"; } @Override public void setRequest(Map<String, Object> request) { this.request = request; } @Override public void setApplication(Map<String, Object> application) { this.application = application; } @Override public void setSession(Map<String, Object> session) { this.session = session; } } 方式三: view plaincopy to clipboardprint? public class UserAction3 extends ActionSupport{ private static final long serialVersionUID = 1L; private HttpServletRequest request; private HttpSession session; private ServletContext application; @SuppressWarnings("unchecked") @Override public String execute(){ System.out.println("通过ServletActionContext来访问request,session,application对象"); // 初始化 request = ServletActionContext.getRequest(); session = request.getSession(); application = session.getServletContext(); // 赋值 request.setAttribute("requestKey", "requestValue"); session.setAttribute("sessionKey", "sessionValue"); application.setAttribute("applicationKey", "applicationValue"); return "success"; } } public class UserAction3 extends ActionSupport{ private static final long serialVersionUID = 1L; private HttpServletRequest request; private HttpSession session; private ServletContext application; @SuppressWarnings("unchecked") @Override public String execute(){ System.out.println("通过ServletActionContext来访问request,session,application对象"); // 初始化 request = ServletActionContext.getRequest(); session = request.getSession(); application = session.getServletContext(); // 赋值 request.setAttribute("requestKey", "requestValue"); session.setAttribute("sessionKey", "sessionValue"); application.setAttribute("applicationKey", "applicationValue"); return "success"; } } 方式四: view plaincopy to clipboardprint? public class UserAction4 extends ActionSupport implements ServletRequestAware{ private static final long serialVersionUID = 1L; private HttpServletRequest request; private HttpSession session; private ServletContext application; @SuppressWarnings("unchecked") @Override public String execute(){ System.out.println("通过实现ServletRequestAware接口来访问request,session,application对象"); // 赋值 request.setAttribute("requestKey", "requestValue"); session.setAttribute("sessionKey", "sessionValue"); application.setAttribute("applicationKey", "applicationValue"); return "success"; } @Override public void setServletRequest(HttpServletRequest request) { this.request = request; this.session = request.getSession(); this.application = session.getServletContext(); } } public class UserAction4 extends ActionSupport implements ServletRequestAware{ private static final long serialVersionUID = 1L; private HttpServletRequest request; private HttpSession session; private ServletContext application; @SuppressWarnings("unchecked") @Override public String execute(){ System.out.println("通过实现ServletRequestAware接口来访问request,session,application对象"); // 赋值 request.setAttribute("requestKey", "requestValue"); session.setAttribute("sessionKey", "sessionValue"); application.setAttribute("applicationKey", "applicationValue"); return "success"; } @Override public void setServletRequest(HttpServletRequest request) { this.request = request; this.session = request.getSession(); this.application = session.getServletContext(); } } 上面的action配套的struts.xml及jsp页面 struts.xml view plaincopy to clipboardprint? <struts> <!-- 配置开发模式:修改不用重启服务器 --> <constant name="struts.devMode" value="true"/> <package name="" namespace="/login" extends="struts-default"> <action name="login*" class="com.wj.struts2.action.UserAction{1}"> <result name="success">/success.jsp</result> <result name="failure">/failure.jsp</result> </action> </package> </struts> <struts> <!-- 配置开发模式:修改不用重启服务器 --> <constant name="struts.devMode" value="true"/> <package name="" namespace="/login" extends="struts-default"> <action name="login*" class="com.wj.struts2.action.UserAction{1}"> <result name="success">/success.jsp</result> <result name="failure">/failure.jsp</result> </action> </package> </struts> index.jsp view plaincopy to clipboardprint? <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@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> <base href="<%=basePath%>"> <title>Struts2_AccessWebElements</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" mce_href="styles.css"> --> <mce:script language="javascript"><!-- function sub(str){ document.form1.action = str; document.form1.submit(); } // --></mce:script> </head> <body> <form name="form1"> <div> Struts2中访问web元素的四种方式<br> 方式一:<input type="button" value="submit1" onclick="sub('<%=basePath%>login/login1')"><br> 方式二:<input type="button" value="submit2" onclick="sub('<%=basePath%>login/login2')"><br> 方式三:<input type="button" value="submit3" onclick="sub('<%=basePath%>login/login3')"><br> 方式四:<input type="button" value="submit4" onclick="sub('<%=basePath%>login/login4')"><br> </div> </form> </body> </html> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@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> <base href="<%=basePath%>"> <title>Struts2_AccessWebElements</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" mce_href="styles.css"> --> <mce:script language="javascript"><!-- function sub(str){ document.form1.action = str; document.form1.submit(); } // --></mce:script> </head> <body> <form name="form1"> <div> Struts2中访问web元素的四种方式<br> 方式一:<input type="button" value="submit1" onclick="sub('<%=basePath%>login/login1')"><br> 方式二:<input type="button" value="submit2" onclick="sub('<%=basePath%>login/login2')"><br> 方式三:<input type="button" value="submit3" onclick="sub('<%=basePath%>login/login3')"><br> 方式四:<input type="button" value="submit4" onclick="sub('<%=basePath%>login/login4')"><br> </div> </form> </body> </html> success.jsp view plaincopy to clipboardprint? <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@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> <base href="<%=basePath%>"> <title>Struts2_AccessWebElements</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" mce_href="styles.css"> --> </head> <body> requestKey---<s:property value="#request.requestKey"/>|<%=request.getAttribute("requestKey")%><br> sessionKey---<s:property value="#session.sessionKey"/>|<%=session.getAttribute("sessionKey")%><br> applicationKey---<s:property value="#application.applicationKey"/>|<%=application.getAttribute("applicationKey")%><br> -------------------------------------------- <s:debug></s:debug> </body> </html> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@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> <base href="<%=basePath%>"> <title>Struts2_AccessWebElements</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" mce_href="styles.css"> --> </head> <body> requestKey---<s:property value="#request.requestKey"/>|<%=request.getAttribute("requestKey")%><br> sessionKey---<s:property value="#session.sessionKey"/>|<%=session.getAttribute("sessionKey")%><br> applicationKey---<s:property value="#application.applicationKey"/>|<%=application.getAttribute("applicationKey")%><br> -------------------------------------------- <s:debug></s:debug> </body> </html> 前台jsp页面获取后台值的方式 <s:property value="#request.requestKey"/>|<%=request.getAttribute("requestKey")%> <s:property value="#session.sessionKey"/>|<%=session.getAttribute("sessionKey")%> <s:property value="#application.applicationKey"/>|<%=application.getAttribute("applicationKey")%> </span></strong>