我有一个问题,几乎会发疯。我在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);
}
提前致谢。
答案 0 :(得分:0)
您按此<url-pattern>/AppUpload</url-pattern> ?
我的意思是AppUpload
页面? ......像localhost:port/AppUpload
?
如果不是,那么您可以在<url-pattern>/*</url-pattern>
中写下web.xml
。
并从您的网络应用中的任何页面进行检查。
答案 1 :(得分:0)
可能会有从AppUpload到其他Servlet的重定向!!!