Dispatcher可以用来初始化一系列的配置文件,并且是按序加载。
request = prepare.wrapRequest(request);
wrapRequest方法的源码如下:
public HttpServletRequest wrapRequest(HttpServletRequest oldRequest) throws ServletException {
HttpServletRequest request = oldRequest;
try {
// Wrap request first, just in case it is multipart/form-data
// 为了防止这个请求是一个multipart/form-data(上传文件)类型的请求
// parameters might not be accessible through before encoding (ww-1278)
// 因为这种类型请求的参数如果不经过处理可能获取不到
request = dispatcher.wrapRequest(request, servletContext);
} catch (IOException e) {
throw new ServletException("Could not wrap servlet request with MultipartRequestWrapper!", e);
}
return request;
}
为了防止这个请求是一个multipart/form-data(上传文件)类型的请求,将它包装一下。因为这种类型请求的参数如果不经过处理可能获取不到。filterconfig继续进入dispatcher.wrapRequest的源码中:
public HttpServletRequest wrapRequest(HttpServletRequest request, ServletContext servletContext) throws IOException {
// don't wrap more than once
// 只包装一次
if (request instanceof StrutsRequestWrapper) {
return request;
}
String content_type = request.getContentType();
// 如果请求类型不为空并且是multipart/form-data类型的请求,那么就包装一下
if (content_type != null && content_type.contains("multipart/form-data")) {
MultiPartRequest mpr = getMultiPartRequest();
LocaleProvider provider = getContainer().getInstance(LocaleProvider.class);
request = new MultiPartRequestWrapper(mpr, request, getSaveDir(servletContext), provider);
} else {
request = new StrutsRequestWrapper(request, disableRequestAttributeValueStackLookup);
}
return request;
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-78438-7.html
我在上海