【问题标题】:Request null in Servlet Filter在 Servlet 过滤器中请求 null
【发布时间】:2014-09-13 03:09:00
【问题描述】:

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

我将我的 servlet 过滤器声明放在 web.xml 文件和 servlet 过滤器 doFilter 代码中。

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

    }

提前致谢。

【问题讨论】:

    标签: java xml jsp servlets filter


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你通过这个&lt;url-pattern&gt;/AppUpload&lt;/url-pattern&gt; ?点击网址

      我的意思是来自AppUpload 页面? ...类似于localhost:port/AppUpload

      如果不是,那么您可以在web.xml 中写&lt;url-pattern&gt;/*&lt;/url-pattern&gt;

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

      【讨论】:

      • AppUpload 是 web.xml 中的 servlet 名称 &lt;servlet&gt; &lt;description&gt;Upload Java&lt;/description&gt; &lt;display-name&gt;Upload Java&lt;/display-name&gt; &lt;servlet-name&gt;AppUpload&lt;/servlet-name&gt; &lt;servlet-class&gt;com.nexans.common.utils.FileUploadServlet&lt;/servlet-class&gt;
      猜你喜欢
      • 2013-04-12
      • 2011-12-18
      • 2015-09-12
      • 2011-02-18
      • 2011-05-31
      • 2016-03-13
      • 2010-11-27
      • 2012-07-28
      • 1970-01-01
      相关资源
      最近更新 更多