Struts2 4中取得Web对象的方式
1.通过ActionContext取Map
2.通过RequestAware,SessionAware,ApplicationAware接口,来注入 三个Map
3.通过ServletActionContext取HttpServletRequest对象
4.通过ServletRequestAware,(ServletResponseAware )来注入HttpServletRequest、(HttpServletResponse)对象
struts.xml 4种配置均在其中
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 动态调用 --> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <!-- 开发者模式 --> <constant name="struts.devMode" value="true" /> <!-- 默认包 --> <package name="default" namespace="/" extends="struts-default"> <!-- 4种得到Web对象的方式 --> <!-- 1.通过ActionContext取Map--> <action name="user1" class="com.edusk.action.User1Action"> <result>/WebObject.jsp</result> </action> <!-- 2.通过RequestAware,SessionAware,ApplicationAware接口,来注入 三个Map --> <action name="user2" class="com.edusk.action.User2Action"> <result>/WebObject.jsp</result> </action> <!-- 3.通过ServletActionContext取HttpServletRequest对象 --> <action name="user3" class="com.edusk.action.User3Action"> <result>/WebObject.jsp</result> </action> <!-- 4.通过ServletRequestAware,(ServletResponseAware )来注入HttpServletRequest、(HttpServletResponse)对象 --> <action name="user4" class="com.edusk.action.User4Action"> <result>/WebObject.jsp</result> </action> </package> </struts>
WebObject.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>第${num }种方式</h1> <h3>${message }</h3> <h1>Action 自己放置的信息可以直接用类型.key取得!!</h1><br/><br/> 取得action自己放置的信息:<br/><br/> errors.name:<s:property value="errors.name"/><br/> errors.name[1]:<s:property value="errors.name[1]"/><br/> fieldErrors.name[1]:<s:property value="fieldErrors.name[1]"/><br/> actionErrors:<s:property value="actionErrors"/><br/> actionMessages:<s:property value="actionMessages"/><br/> <br/><br/> <h1>StrutsWeb对象中的信息, 需要#Web对象.key</h1><br/><br/> 取得Struts2Web对象值得方式:<br/><br/> EL: ${requestScope.username }<br/> JSP: <%=request.getAttribute("username") %><br/> Struts标签: <s:property value="#request.username"/><br/> #session:<s:property value="#session.user"/><br/> #application:<s:property value="#application.username"/><br/> <s:debug></s:debug> </body> </html>
1.通过ActionContext取Map
User1Action.java
package com.edusk.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; /** * 1.通过ActionContext取Map * @author Maibeli * */ public class User1Action extends ActionSupport { private Map<String, Object> request; private Map<String, Object> session; private Map<String, Object> application; public User1Action() { request = (Map<String, Object>) ActionContext.getContext().get("request"); session = ActionContext.getContext().getSession(); application = ActionContext.getContext().getApplication(); } @Override public String execute() throws Exception { this.addFieldError("name", "wrong"); this.addFieldError("name", "222"); this.addActionError("actionerror"); this.addActionError("actionerror1"); this.addActionMessage("actionmessage"); this.addActionMessage("actionmessage2"); request.put("message", "通过ActionContext取Map"); request.put("num", 1); request.put("username", "admin"); session.put("user", "admin 123"); application.put("username", "this is true love!"); return SUCCESS; } }
2.通过RequestAware,SessionAware,ApplicationAware接口,来注入 三个Map
User2Action.java
package com.edusk.action; 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.ActionSupport; /** * 2.通过RequestAware,SessionAware,ApplicationAware接口,来注入 三个Map * @author Maibeli * */ public class User2Action 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; @Override public String execute() throws Exception { this.addFieldError("name", "wrong2"); this.addFieldError("name", "222"); this.addActionError("actionerror"); this.addActionError("actionerror1"); this.addActionMessage("actionmessage"); this.addActionMessage("actionmessage2"); request.put("num", 2); request.put("message", "通过RequestAware,SessionAware,ApplicationAware接口,来注入 三个Map"); request.put("username", "admin"); session.put("user", "admin 123"); application.put("username", "this is true love!"); return SUCCESS; } @Override public void setApplication(Map<String, Object> application) { this.application=application; } @Override public void setSession(Map<String, Object> session) { this.session=session; } @Override public void setRequest(Map<String, Object> request) { this.request=request; } }
3.通过ServletActionContext取HttpServletRequest对象
User3Action.java
package com.edusk.action; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; /** * 3.通过ServletActionContext取HttpServletRequest对象 * @author Maibeli * */ public class User3Action extends ActionSupport{ private static final long serialVersionUID = 1L; private HttpServletRequest request; private HttpSession session; private ServletContext application; public User3Action() { this.request=ServletActionContext.getRequest(); this.session=request.getSession(); this.application=session.getServletContext(); } @Override public String execute() throws Exception { this.addFieldError("name", "wrong3"); this.addFieldError("name", "222"); this.addActionError("actionerror"); this.addActionError("actionerror1"); this.addActionMessage("actionmessage"); this.addActionMessage("actionmessage2"); request.setAttribute("num", 3); request.setAttribute("message", "通过ServletActionContext取HttpServletRequest对象"); request.setAttribute("username", "admin"); session.setAttribute("user", "admin 123"); application.setAttribute("username", "this is true love!"); return SUCCESS; } }
4.通过ServletRequestAware,(ServletResponseAware )来注入HttpServletRequest、(HttpServletResponse)对象
User4Action.java
package com.edusk.action; 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; /** * 4.通过ServletRequestAware,(ServletResponseAware )来注入HttpServletRequest、(HttpServletResponse)对象 * @author Maibeli * */ public class User4Action extends ActionSupport implements ServletRequestAware{ private static final long serialVersionUID = 1L; private HttpServletRequest request; private HttpSession session; private ServletContext application; @Override public String execute() throws Exception { this.addFieldError("name", "wrong4"); this.addFieldError("name", "222"); this.addActionError("actionerror"); this.addActionError("actionerror1"); this.addActionMessage("actionmessage"); this.addActionMessage("actionmessage2"); request.setAttribute("num", 4); request.setAttribute("message", "通过ServletRequestAware,(ServletResponseAware )来注入HttpServletRequest、(HttpServletResponse)对象"); request.setAttribute("username", "admin"); session.setAttribute("user", "admin 123"); application.setAttribute("username", "this is true love!"); return SUCCESS; } @Override public void setServletRequest(HttpServletRequest request) { this.request=request; this.session=request.getSession(); this.application=session.getServletContext(); } }
常用第三种。