1.通过ActionContext:
//Demo5Action.java
import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class Demo5Action extends ActionSupport{ @Override public String execute() throws Exception { //request域 //不推荐 Map<String, Object> requestScope = (Map<String, Object>) ActionContext.getContext().get("request"); //推荐 ActionContext.getContext().put("name","request"); //session域 Map<String, Object> sessionScope = ActionContext.getContext().getSession(); sessionScope.put("name", "session"); //application域 Map<String, Object> applicationScope = ActionContext.getContext().getApplication(); applicationScope.put("name", "application"); return "SUCCESS"; } }
//struts.xml
<struts> <package name="api" namespace="/" extends="struts-default" > <action name="api" class="com.struts.a_result.Demo5Action" method="execute" > <result name="SUCCESS" type="dispatcher" >/api.jsp</result><!-- type="dispatcher" 默认为转发 redirect:重定向--> </action> </package> </struts>
结果:
2.通过原生servlet:
package com.struts.b_api; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; /* * * 如何在Action中获得原生servletAPI * */ public class Demo5Action extends ActionSupport{ //并不推荐 @Override public String execute() throws Exception { //原生request HttpServletRequest request = ServletActionContext.getRequest(); //原生session HttpSession session = request.getSession(); //原生response HttpServletResponse response = ServletActionContext.getResponse(); //原生servletContext ServletContext servletContext = ServletActionContext.getServletContext(); return "SUCCESS"; } }
3.通过实现ServletRequestAware的接口来实现:
//Demo6Action.java
package com.struts.b_api; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; import com.opensymphony.xwork2.ActionSupport; /** * 方式三 * @author taoyulong * */ public class Demo6Action extends ActionSupport implements ServletRequestAware{ private HttpServletRequest request; @Override public String execute() throws Exception { System.out.println("这是原生的request:"+request); return "SUCCESS"; } @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } }