【发布时间】: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