我有一個問題幾乎會變得瘋狂。我已經在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);
}
預先感謝。
Thx!它解決了我的問題! – Raydan