struts核心过滤器FilterDispatcher介绍

上传人:宝路 文档编号:20951294 上传时间:2017-11-22 格式:DOC 页数:12 大小:83.35KB
返回 下载 相关 举报
struts核心过滤器FilterDispatcher介绍_第1页
第1页 / 共12页
struts核心过滤器FilterDispatcher介绍_第2页
第2页 / 共12页
struts核心过滤器FilterDispatcher介绍_第3页
第3页 / 共12页
struts核心过滤器FilterDispatcher介绍_第4页
第4页 / 共12页
struts核心过滤器FilterDispatcher介绍_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《struts核心过滤器FilterDispatcher介绍》由会员分享,可在线阅读,更多相关《struts核心过滤器FilterDispatcher介绍(12页珍藏版)》请在金锄头文库上搜索。

1、struts 核心过滤器 FilterDispatcher 介绍 FilterDispatcher 功能介绍FilterDispatcher 是 struts2的核心控制类负责处理最初的请求分发.四大责任1.执行 action2.清空 ActionContext 上下文3.服务静态的内容( 初始化环境等)4.中断请求生命周期中的 XWORKS 拦截器.FilterDispatcher 必须映射所有的请求,除非你只想在某一部分支持 struts2的功能.配置 filter 的 url-pattern 的时候请使用 /*;1.执行 action过滤器根据请求的 url 判断是否需要调用 actio

2、n(判断的依据是根据 actionMapper)如果需要执行 action 那么处于过滤器链中的其他过滤器将终止 ,并且调用 action.这意味着其他一些一定要执行的过滤器必须放在 FilterDispatcher 前面.以保证他们的执行.2.清空 ActionContext 上下文FilterDispatcher 讲自动的清除上下文,确保没有内存泄露. 但是有时候将导致在集成其他产品时出现某些问题.详情,请看 ActionContextUp 类3.服务静态的内容FilterDispatcher 同时会加载常用的静态内容,例如 javascript 文件,css 文件.FilterDispa

3、tcher 会查找/struts/*这个目录,并且映射/struts/后面的的所有常用的包.以下是默认搜索的包org.apache.struts2.statictemplate例如用户可以通过请求/struts/xhtml/styles.css 得到 struts2的内置的 XHTML UI 主题包 下面的默认样式表用户还可以通过为 filterDispatcher 添加 packages 参数来添加用户自己的包.FilterDispatcher 支持以下初始化参数 参数名 config 参数值 以逗号隔开的配置文件名的列表参数名 actionPackages 参数值 以逗号隔开的 java

4、包名,主要用来扫描检测 action参数名 configProviders 参数值 以逗号隔开的配置提供程序的类名.其他的参数名将被当作是框架的常量.public class FilterDispatcher implements org.apache.struts2.StrutsStatics,javax.servlet.Filterorg.apache.struts2.StrutsStatics 定义了以下常量这些常量用来获取或者设置请求上下文的对象例如通过 ActionContext 对象和 HTTP_REQUEST 我们可以获取或者设置HttpServletRequest 对象Acti

5、onContext.getContext().put(HTTP_REQUEST,request);HttpServletRequest request =(HttpServletRequest)ActionContext.getContext().get(HTTP_REQUEST);public interface StrutsStaticspublic static final String HTTP_REQUEST = com.opensymphony.xwork2.dispatcher.HttpServletRequest;public static final String HTTP_

6、RESPONSE = com.opensymphony.xwork2.dispatcher.HttpServletResponse;public static final String SERVLET_DISPATCHER = com.opensymphony.xwork2.dispatcher.ServletDispatcher;public static final String SERVLET_CONTEXT = com.opensymphony.xwork2.dispatcher.ServletContext;public static final String PAGE_CONTEX

7、T = com.opensymphony.xwork2.dispatcher.PageContext;public static final String STRUTS_PORTLET_CONTEXT = struts.portlet.context;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import .URLDecoder;import java.util.ArrayList;import java.util.Calendar;import java.util.Enu

8、meration;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.StringTokenizer;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.

9、ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import mons.logging.Log;import mons.logging.LogFactory;import org.apache.struts2.RequestUtils;import org.apache.struts2.StrutsConstants;import org.apache.str

10、uts2.StrutsStatics;import org.apache.struts2.dispatcher.mapper.ActionMapper;import org.apache.struts2.dispatcher.mapper.ActionMapping;import com.opensymphony.xwork2.inject.Inject;import com.opensymphony.xwork2.util.ClassLoaderUtil;import com.opensymphony.xwork2.util.profiling.UtilTimerStack;import c

11、om.opensymphony.xwork2.ActionContext;public class FilterDispatcher implements org.apache.struts2.StrutsStatics,javax.servlet.Filter/日志类private static final Log LOG = LogFactory.getLog(FilterDispatcher.class);/路径前缀private String pathPrefixes;/为缓存静态内容时设置响应头信息提供日期格式化.private final Calendar lastModified

12、Cal = Calendar.getInstance();/存储 StrutConstants.STRUTS_SERVE_STATIC_CONTENT 的设置,该设置可以通过配置文件设置private static boolean serveStatic;/存储 StrutConstants.STRUTS_SERVE_STATIC_BROWSER_CACHE 的设置,该设置可以通过配置文件设置.private static boolean serveStaticBrowserCache;/存储字符编码的字符串,该设置可以通过配置文件设置private static String encodin

13、g;/通过注入方式提供,ActionMapper 的实例private static ActionMapper actionMapper;/FilterConfig 过滤器配置类的实例,在 init 方法中初始化private FilterConfig filterConfig;/为子类暴露 Dispatcher 对象protected Dispatcher dispatcher;/*初始化过滤器的方法,该方法中创建了一个默认的 dispatcher,并且在此方法中设置了静态资源的默认包*/public void init(FilterConfig filterConfig)throws Se

14、rvletExceptionthis.filterConfig = filterConfig;dispatcher = createDispatcher(filterConfig);dispatcher.init();String param = fitlerConfig.getInitParamter(pagckages);String packages = org.apache.struts2.static template org.apache.struts2.interceptor.debugging;if(param != null)packages = param + +packa

15、ges;this.pathPrefixes = parse(packages);/*当应用被终止时调用 destroy 方法,该方法用来用来释放本地线程和任何的DispatcherListeners*/public void destroy() if(dispatcher=null)LOG.warn(something is seriously wrong,Dispatcher is not initialized(null);elsedispatcher.cleanup();/*创建默认的 Dispatcher 对象. 可以通过重写此方法提供用户自定义的 Dispatcher*/protec

16、ted Dispatcher createDispatcher(FilterConfig filterConfig)Map params = new HashMap();for(Enumeration e = fitlerConfig.getIntParameterNames();e.hasMoreElements();)String e.nextElement();String value = filterConfig.getInitParameter(name);params.put(name,value);return new Dispatcher(filterConfig.getServletContext(),params);Inject(StrutsConstants.STRUTS_SERVE_STATIC_CONTENT)publi

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号