2014-07-22 115 views
-1

我有一個問題幾乎會變得瘋狂。我已經在web.xml中聲明瞭一個servlet Filter來使用它來對文件名進行編碼(我想擺脫重音以防止將來上傳/下載文件時出現任何問題)。事情是在我使用Servlet過濾器之前,我一直在使用Request參數。現在我想使用Servlet過濾器來達到之前解釋的目的,當我嘗試在過濾器中使用請求時,奇怪的是,我得到一個空請求。我苦苦尋找了幾天尋找解決方案的辦法。在Servlet過濾器中請求null null

我在web.xml文件和servlet過濾器doFilter代碼中放下了我的servlet過濾器聲明。

的web.xml

<filter> 
    <filter-name>Encoding Filter</filter-name> 
    <filter-class>com.util.encoding.EncodingCharsFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>Encoding Filter</filter-name> 
    <url-pattern>/AppUpload</url-pattern> 
</filter-mapping> 

Servlet過濾器類

public final void doFilter(final ServletRequest req, final ServletResponse resp, final FilterChain chain) throws IOException, ServletException { 

       HttpServletRequest request = (HttpServletRequest) req; 

//   if (req.getCharacterEncoding() == null && this.encoding != null) { 
//      
//      String oldFile = req.getParameter("fileName"); 
//      
//      String newFile= Normalizer.decompose(oldFile,false,0).replaceAll("\\p{InCombiningDiacriticalMarks}+", ""); 
//      
//      req.setAttribute("fileName", newFile); 
//      
//      req.setCharacterEncoding(encoding); 
//   } 

      Map<String, String[]> parameters = request.getParameterMap(); 
      for(String parameter : parameters.keySet()) { 
       System.out.println(parameter); 
      } 

//   Enumeration<String> parameterNames = req.getParameterNames(); 
//    
//   while (parameterNames.hasMoreElements()) { 
//    
//     
//     
//       String paramName = parameterNames.nextElement(); 
//     
//       System.out.println(paramName); 
//     
//       System.out.println("n"); 
//     
//     
//     
//       String[] paramValues = req.getParameterValues(paramName); 
//     
//       for (int i = 0; i < paramValues.length; i++) { 
//     
//        String paramValue = paramValues[i]; 
//     
//        System.out.println("t" + paramValue); 
//     
//        System.out.println("n"); 
//     
//       } 
// 
//   } 
      chain.doFilter(req, resp); 

    } 

預先感謝。

回答

0

可能會有從AppUpload重定向到其他Servlet!

+0

Thx!它解決了我的問題! – Raydan

0

你這個<url-pattern>/AppUpload</url-pattern> ?

我從AppUpload頁的意思是打網址是什麼? ...類似localhost:port/AppUpload

如果不是,那麼你可以在web.xml中寫<url-pattern>/*</url-pattern>

並從您的Web應用程序的任何頁面檢查它。

+0

AppUpload是在web.xml servlet名稱 ' 上傳的Java <顯示名稱>上傳的Java AppUpload com.nexans.common.utils.FileUploadServlet' – Raydan