在Servlet过滤器中请求null

时间:2014-07-22 10:31:09

标签: java xml jsp servlets filter

我有一个问题,几乎会发疯。我在web.xml中声明了一个servlet Filter,以便用它来编码文件名(我想摆脱重音以防止将来上传/下载文件出现任何问题)。事情是在我使用Servlet过滤器之前,我一直在使用Request参数。现在我想要将Servlet过滤器用于之前解释的目的,当我尝试在Filter中使用请求时,奇怪的是,我得到一个空请求。我搜索了几天寻找一些解决方案,但是徒劳无功。

我在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);

    }

提前致谢。

2 个答案:

答案 0 :(得分:0)

您按此<url-pattern>/AppUpload</url-pattern> ?

命中了网址

我的意思是AppUpload页面? ......像localhost:port/AppUpload

如果不是,那么您可以在<url-pattern>/*</url-pattern>中写下web.xml

并从您的网络应用中的任何页面进行检查。

答案 1 :(得分:0)

可能会有从AppUpload到其他Servlet的重定向!!!