1、使用ActionContext对象,采用解耦合的方式访问ServletAPI
ActionContext context = ActionContext.getContext();
jsp
<form action="${pageContext.request.contextPath }/demo04/scope1.action" method="post"> <input type="text" name="scopetext" /> <input type="submit" value="提交" /> </form>
action,通过context获取的对象都是Map,这种方式完全与Servlet解构
public class ScopeAction1 extends ActionSupport { @Override public String execute() { ActionContext context = ActionContext.getContext(); //parameters Map<String, Object> parameters = context.getParameters(); //default return object String[] strs = (String[]) parameters.get("scopetext"); System.out.println(strs[0]); //request scope context.put("reqinfo", "request scope"); System.out.println(context.get("reqinfo")); //session scope Map<String, Object> session = context.getSession(); session.put("sessioninfo", "session sceop"); System.out.println(session.get("sessioninfo")); //appliction scope Map<String, Object> application = context.getApplication(); application.put("appinfo", "application scope"); System.out.println(application.get("appinfo")); return NONE; } }
配置
<package name="demo04" namespace="/demo04" extends="struts-default"> <action name="scope1" class="demo04.ScopeAction1"> </action> </package>
2、使用接口注入的方式使用ServletAPI
jsp
<form action="${pageContext.request.contextPath }/demo04/scope2.action" method="post"> <input type="text" name="scopetext" /> <input type="submit" value="提交" /> </form>
Action,通过实现接口,设置setXXX来获取HttpServletXXX对象
public class ScopeAction2 extends ActionSupport implements ServletContextAware, ServletResponseAware, ServletRequestAware { private HttpServletResponse response; private ServletContext context; private HttpServletRequest request; @Override public String execute() { System.out.println(request.getParameter("scopetext")); // request scope request.setAttribute("reqinfo", "request scope"); System.out.println(request.getAttribute("reqinfo")); // session scope HttpSession session = request.getSession(); session.setAttribute("sessioninfo", "session sceop"); System.out.println(session.getAttribute("sessioninfo")); // appliction scope context.setAttribute("appinfo", "application scope"); System.out.println(context.getAttribute("appinfo")); return NONE; } @Override public void setServletResponse(HttpServletResponse response) { this.response = response; } @Override public void setServletContext(ServletContext context) { this.context = context; } @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } }
配置
<action name="scope2" class="demo04.ScopeAction2"> </action>
3、通过ServletActionContext耦合的方式获取ServletAPI
jsp
<form action="${pageContext.request.contextPath }/demo04/scope3.action" method="post"> <input type="text" name="scopetext" /> <input type="submit" value="提交" /> </form>
Action
public class ScopeAction3 extends ActionSupport { @Override public String execute() { System.out.println(ServletActionContext.getRequest().getParameter("scopetext")); // request scope ServletActionContext.getRequest().setAttribute("reqinfo", "request scope"); System.out.println(ServletActionContext.getRequest().getAttribute("reqinfo")); // session scope HttpSession session = ServletActionContext.getRequest().getSession(); session.setAttribute("sessioninfo", "session sceop"); System.out.println(session.getAttribute("sessioninfo")); // appliction scope ServletContext context = ServletActionContext.getServletContext(); context.setAttribute("appinfo", "application scope"); System.out.println(context.getAttribute("appinfo")); return NONE; } }
配置
<action name="scope3" class="demo04.ScopeAction3"> </action>
这三种方式最好的是第一种,Action和Servlet完全解耦合,通过ServletActionContext的方式是最直接的,但也是耦合度最高的
相关推荐
第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和 RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。...
第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和 RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。...
org.apache.struts2.dispatcher Classes for action dispatching in Struts (the Controller part of MVC). org.apache.struts2.dispatcher.mapper org.apache.struts2.dispatcher.multipart Classes to help ...
第4章到第7章深入探讨了Struts框架的核心组件ActionServlet和 RequestProcessor的实现原理,详细介绍了开发Struts应用的模型、视图和控制器的各种技术,细致的描述了Struts配置文件的每个元素的使用方法。...
书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。书中...
2.8.3 在JSP页面中使用Include指令后,JSP不能编译 2.9 精彩回顾 第3章前人栽树后人乘凉 ——、JSP内置对象 3.1 本章学习任务 3.1.1 本章知识体系 3.1.2 实例开发任务 3.2 简化开发JSP内置对象概述 3.2.1 为什么...
ActionServlet is the Command part of the MVC implementation and is the core of the Framework. ActionServlet (Command) creates and uses Action, an ActionForm, and ActionForward. As mentioned earlier, ...