Struts2 part 3:在Action中使用ServletAPI
2015-09-02 16:31
351 查看
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的方式是最直接的,但也是耦合度最高的
相关文章推荐
- struts2:在Action中使用Servlet的API,设置、读取各种内置对象的属性
- struts2的ActionContext与 ServletActionContext区别与使用场景
- Struts2中访问Servlet中的API(ActionContext,ServletActionContext)两种方式
- Struts2的Action与ServletAPI的解耦
- Struts2中使用Servlet-API步骤
- Struts2中Action需要用Servlet API的方法
- Struts2中 Action获得servletAPI的三种方式
- struts2_day02_06-获取表单数据(使用ServletActionContext获取和接口注入)
- struts2 中属性驱动(其实就是struts2 action 中处理 request 的参数【old 方式servlet api 封装数据到javabean中(or beanutils)】),这里属性驱动是新方式
- Struts2_008_Servlet API耦合的访问方式值之ServletActionContext
- Struts2(6):使用ServletActionContext访问Servlet API
- struts2中Action动作类中获取servlet的api
- Struts2的Action与ServletAPI的解耦
- jsp页面取struts2 action的变量供java、servlet使用
- [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)
- struts2学习笔记之六(Action访问servlet的API以及复制项目小技巧)
- struts2中在Action中如何获取servlet的api?
- Struts2的Action与ServletAPI的解耦
- Struts2总结---Action中获取Servlet相关API(3)
- struts中的action和Action类以及struts2中如何在Action类中获得servlet api的域对象