Struts2获取Servlet API的两种方式
来源:互联网 发布:javaweb高级编程 源码 编辑:程序博客网 时间:2024/06/07 14:25
一、IoC方式
在Struts2中,所有请求都会被StrutsPrepareAndExecuteFilter拦截,然后去struts.xml寻找相印的action,在action执行前,会执行一些interceptor。在 struts-default.xml中,有个拦截器为
<interceptor name="servletConfig" class="org.apache.struts2.interceptor.ServletConfigInterceptor"/>
一部分源码
public String intercept(ActionInvocation invocation) throws Exception { final Object action = invocation.getAction(); final ActionContext context = invocation.getInvocationContext(); if (action instanceof ServletRequestAware) { HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST); ((ServletRequestAware) action).setServletRequest(request); } if (action instanceof ServletResponseAware) { HttpServletResponse response = (HttpServletResponse) context.get(HTTP_RESPONSE); ((ServletResponseAware) action).setServletResponse(response); } if (action instanceof ServletContextAware) { ServletContext servletContext = (ServletContext) context.get(SERVLET_CONTEXT); ((ServletContextAware) action).setServletContext(servletContext); } return invocation.invoke();
于是我们可以通过IoC的方式,将Servlet对象注入Action中。
package action;/** * @author ZZ * ****/import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.interceptor.ServletRequestAware;import org.apache.struts2.interceptor.ServletResponseAware;import org.apache.struts2.util.ServletContextAware;public class Struts2Action implements ServletRequestAware,ServletResponseAware,ServletContextAware{ @Override public void setServletContext(ServletContext context) { } @Override public void setServletResponse(HttpServletResponse response) { } @Override public void setServletRequest(HttpServletRequest request) { }}
通过实现ServletRequestAware 获得HttpServletRequest,
实现 ServletResponseAware 获得HttpServletResponse,
实现 ServletContextAware来获得HttpServletContext。
SessionAware之类的就不写了。
二、非IoC方式
通过ServletActionContext的静态方法获取。
package action;import javax.servlet.ServletContext;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;/** * @author ZZ * ****/public class Struts2Action { public void test(){ HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); ServletContext servletContext = ServletActionContext.getServletContext(); }}
0 0
- Struts2获取Servlet API的两种方式
- struts2第十讲学习笔记,获取Servlet.api的两种方式
- struts2中,action访问servlet api的两种方式
- struts2获取请求的两种方式
- 在Struts2框架中获取Servlet api的三种方式
- Struts2中Action访问Servlet API的两种方法
- Struts2中Action访问Servlet API的两种方法
- Struts2中Action访问Servlet API的两种方法
- 【Struts2七】struts2获取表单元素的两种方式
- struts2中Action访问servlet的两种方式
- struts2的servlet的API的三种方式
- struts2 获取servlet API
- 非IoC方式访问Servlet API的两种方法
- Struts2访问Servlet API的三种方式
- Struts2 访问 Servlet API 的四种方式
- Struts2访问Servlet API的三种方式
- Struts2中访问Servlet API的几种方式
- Struts2访问Servlet API的3种方式
- 全局变量和局部变量
- Android 网页源码查看器(URLConnection以及handler助手)
- 【图论floyd】 poj 2139 Six Degrees of Cowvin Bacon
- 大数据闲谈及前景展望
- C语言字符串相关知识点
- Struts2获取Servlet API的两种方式
- 初识awk
- 107. Binary Tree Level Order Traversal II
- OpenStack-Ironic裸金属简介
- 计算工作日的问题——SQL编程
- 自考总结—2017年4月
- `ImportError: No module named '_tkinter'的一种解决方法
- Python3字典
- 00 OpenCV环境搭建(Win10+Opencv3.1+VS2015企业版)