在一般的web項(xiàng)目中,上傳文件和下載文件很常見。但是當(dāng)上傳的文件名中包含中文時(shí),有時(shí)會(huì)出現(xiàn)亂碼問題。要解決這個(gè)問題,只需要統(tǒng)一的設(shè)置編碼集就可以,這個(gè)可以通過Filter來實(shí)現(xiàn)。
在線java視頻教程推薦:java在線視頻
下面是寫的Filter類,如下:
package com.newview.bysj.filter; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; public class EncodingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest; //設(shè)置請(qǐng)求的字符集 httpServletRequest.setCharacterEncoding("UTF-8"); //將請(qǐng)求放行到目的地址 filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() { } }
要使該Filter類起作用,還需要在web.xml中進(jìn)行配置,具體的配置如下:
<!--定義Filter--> <filter> <display-name>EncodingFilter</display-name> <!--Filter的名字--> <filter-name>EncodingFilter</filter-name> <!--Filter的實(shí)現(xiàn)類--> <filter-class>com.newview.bysj.filter.EncodingFilter</filter-class> </filter> <!--定義Filter攔截的url--> <filter-mapping> <filter-name>EncodingFilter</filter-name> <!--Filter攔截的url--> <url-pattern>*.html</url-pattern> </filter-mapping>