HttpServletRequest 情境 2
凌晨12:54
HttpServletRequest 情境 2 :Struts 2 包裝了 request
為什麼要包裝 requst 呢?
因為是為了處理文件上傳 multipart/form-data
request = prepare.wrapRequest(request);
為什麼要包裝 requst 呢?
因為是為了處理文件上傳 multipart/form-data
- public HttpServletRequest wrapRequest(HttpServletRequest oldRequest) throws ServletException {
- HttpServletRequest request = oldRequest;
- try {
- // Wrap request first, just in case it is multipart/form-data
- // parameters might not be accessible through before encoding (ww-1278)
- request = dispatcher.wrapRequest(request, servletContext);
- } catch (IOException e) {
- String message = "Could not wrap servlet request with MultipartRequestWrapper!";
- throw new ServletException(message, e);
- }
- return request;
- }
- 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();
- if (content_type != null && content_type.contains("multipart/form-data")) {
- MultiPartRequest mpr = null;
- //check for alternate implementations of MultiPartRequest
- Set<String> multiNames = getContainer().getInstanceNames(MultiPartRequest.class);
- if (multiNames != null) {
- for (String multiName : multiNames) {
- if (multiName.equals(multipartHandlerName)) {
- mpr = getContainer().getInstance(MultiPartRequest.class, multiName);
- }
- }
- }
- if (mpr == null ) {
- mpr = getContainer().getInstance(MultiPartRequest.class);
- }
- request = new MultiPartRequestWrapper(mpr, request, getSaveDir(servletContext));
- } else {
- request = new StrutsRequestWrapper(request);
- }
- return request;
- }
- <form name="form1" method=post enctype="multipart/form-data">



0 意見