HttpServletRequest 情境 2

凌晨12:54

HttpServletRequest 情境 2 :Struts 2 包裝了 request

request = prepare.wrapRequest(request);

為什麼要包裝 requst 呢?

因為是為了處理文件上傳 multipart/form-data

  1. public HttpServletRequest wrapRequest(HttpServletRequest oldRequest) throws ServletException {  
  2.       HttpServletRequest request = oldRequest;  
  3.       try {  
  4.           // Wrap request first, just in case it is multipart/form-data  
  5.           // parameters might not be accessible through before encoding (ww-1278)  
  6.           request = dispatcher.wrapRequest(request, servletContext);  
  7.       } catch (IOException e) {  
  8.           String message = "Could not wrap servlet request with MultipartRequestWrapper!";  
  9.           throw new ServletException(message, e);  
  10.       }  
  11.       return request;  
  12.   }  

  1. public HttpServletRequest wrapRequest(HttpServletRequest requestServletContext servletContextthrows IOException {  
  2.         // don't wrap more than once  
  3.         if (request instanceof StrutsRequestWrapper) {  
  4.             return request;  
  5.         }  
  6.   
  7.         String content_type = request.getContentType();  
  8.         if (content_type != null && content_type.contains("multipart/form-data")) {  
  9.             MultiPartRequest mpr = null;  
  10.             //check for alternate implementations of MultiPartRequest  
  11.             Set<String> multiNames = getContainer().getInstanceNames(MultiPartRequest.class);  
  12.             if (multiNames != null) {  
  13.                 for (String multiName : multiNames) {  
  14.                     if (multiName.equals(multipartHandlerName)) {  
  15.                         mpr = getContainer().getInstance(MultiPartRequest.class, multiName);  
  16.                     }  
  17.                 }  
  18.             }  
  19.             if (mpr == null ) {  
  20.                 mpr = getContainer().getInstance(MultiPartRequest.class);  
  21.             }  
  22.             request = new MultiPartRequestWrapper(mpr, request, getSaveDir(servletContext));  
  23.         } else {  
  24.             request = new StrutsRequestWrapper(request);  
  25.         }  
  26.   
  27.         return request;  
  28.     }  


  1. <form name="form1"  method=post enctype="multipart/form-data">
























  • Share:

You Might Also Like

0 意見