Struts2的工作原理4
2013-08-02 16:48
232 查看
代码清单9:FilterDispatcher.init()方法
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
dispatcher = createDispatcher(filterConfig);
dispatcher.init();
String param = filterConfig.getInitParameter("packages");
String packages ="org.apache.struts2.static template org.apache.struts2.interceptor.debugging";
if(param !=null) {
packages = param +" "+ packages;
}
this.pathPrefixes= parse(packages);
}
代码清单10:FilterDispatcher.createDispatcher()方法
protected Dispatcher createDispatcher(FilterConfig filterConfig) {
Map<String,String> params =newHashMap<String,String>();
for(Enumeration e = filterConfig.getInitParameterNames(); e.hasMoreElements(); ) {
String name = (String) e.nextElement();
String value = filterConfig.getInitParameter(name);
params.put(name, value);
}
return new Dispatcher(filterConfig.getServletContext(), params);
}
当用户向Struts2发送请求时,FilterDispatcher的doFilter()方法自动调用,这个方法非常关键。首先,Struts2对请求对象进行重新包装,此次包装根据请求内容的类型不同,返回不同的对象,如果为multipart/form-data类型,则返回MultiPartRequestWrapper类型的对象,该对象服务于文件上传,否则返回StrutsRequestWrapper类型的对象,MultiPartRequestWrapper是StrutsRequestWrapper的子类,而这两个类都是HttpServletRequest接口的实现。包装请求对象如代码清单11所示:
代码清单11:FilterDispatcher.prepareDispatcherAndWrapRequest()方法
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
dispatcher = createDispatcher(filterConfig);
dispatcher.init();
String param = filterConfig.getInitParameter("packages");
String packages ="org.apache.struts2.static template org.apache.struts2.interceptor.debugging";
if(param !=null) {
packages = param +" "+ packages;
}
this.pathPrefixes= parse(packages);
}
代码清单10:FilterDispatcher.createDispatcher()方法
protected Dispatcher createDispatcher(FilterConfig filterConfig) {
Map<String,String> params =newHashMap<String,String>();
for(Enumeration e = filterConfig.getInitParameterNames(); e.hasMoreElements(); ) {
String name = (String) e.nextElement();
String value = filterConfig.getInitParameter(name);
params.put(name, value);
}
return new Dispatcher(filterConfig.getServletContext(), params);
}
当用户向Struts2发送请求时,FilterDispatcher的doFilter()方法自动调用,这个方法非常关键。首先,Struts2对请求对象进行重新包装,此次包装根据请求内容的类型不同,返回不同的对象,如果为multipart/form-data类型,则返回MultiPartRequestWrapper类型的对象,该对象服务于文件上传,否则返回StrutsRequestWrapper类型的对象,MultiPartRequestWrapper是StrutsRequestWrapper的子类,而这两个类都是HttpServletRequest接口的实现。包装请求对象如代码清单11所示:
代码清单11:FilterDispatcher.prepareDispatcherAndWrapRequest()方法
相关文章推荐
- Struts2工作原理
- struts2核心工作原理
- struts2的核心和工作原理
- STRUTS2的工作原理-源码解析(转载的,搞到自己的博客上,以后可以经常看)
- Struts2 工作原理
- struts2工作原理
- struts2工作原理
- struts2工作原理
- struts2的核心和工作原理
- Struts2工作原理及流程
- struts2 核心和工作原理
- struts2工作原理
- Struts2工作原理
- struts2 执行流程及工作原理
- struts2工作原理
- struts2的核心和工作原理
- struts2工作原理
- 走进Struts2(一) — Struts2的执行流程及其工作原理
- Struts2工作原理和执行流程图
- Struts2的工作原理