2014-07-22 119 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