2015-10-06 15 views
0

林是我的過濾器:的Java Web tomcat的編碼過濾器不工作

@WebFilter(urlPatterns = { "/*" }, initParams = {@WebInitParam(name = "encoding", value = "UTF-8", description = "Encoding Param") }) 
public class EncodingFilter implements Filter { 

    private String code; 

    public void init(FilterConfig filterConfig) throws ServletException { 
     code = filterConfig.getInitParameter("encoding"); 
    } 

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { 
     String codeRequest = servletRequest.getCharacterEncoding(); 
     if (code != null && !code.equalsIgnoreCase(codeRequest)) { 
      servletRequest.setCharacterEncoding(code); 
      servletResponse.setCharacterEncoding(code); 
     } 
     filterChain.doFilter(servletRequest, servletResponse); 
    } 

    public void destroy() { 
     code = null; 
    } 
} 

我不明白爲什麼,但它不工作,當我把英文單詞everithing是確定,但是當我把俄文字母形成,這裏是它的樣子:

String address = request.getParameter(PARAM_NAME_ADDRESS); 
//**address : ЮзеÑова 12 144** 

我有這個在我的jsp:

<%@ page contentType="text/html; charset=UTF-8" language="java" pageEncoding="UTF-8" %> 

可能是什麼問題?

回答

0

This question幫我

問題是監聽器,我刪除它

@WebListener 
public class RequestListener implements ServletRequestListener { 

    private final static Logger LOG = Logger.getLogger(RequestListener.class); 

    @Override 
    public void requestInitialized(ServletRequestEvent servletRequestEvent) { 
     String command = servletRequestEvent.getServletRequest().getParameter("command"); 
     HttpServletRequest request = (HttpServletRequest)servletRequestEvent.getServletRequest(); 
     LOG.info("Request initialized. Command: " + command + " " + request.getContextPath()); 
    } 

    @Override 
    public void requestDestroyed(ServletRequestEvent servletRequestEvent) { 
     String command = servletRequestEvent.getServletRequest().getParameter("command"); 
     LOG.info("Request destroyed. Command: " + command); 
    } 

} 
0

您需要在頁面上設置編碼:

<head> 
    <meta charset="UTF-8"> 
</head> 

也(的完整性)在表單元素:

<form action="..." accept-charset="UTF-8"> 
+0

thx,但沒有幫助 –