利用过滤器来给servlet设置编码
public class CharacterEncodingFilter implements Filter{ @Override public void destroy() { // TODO Auto-generated method stub } @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { // TODO Auto-generated method stub HttpServletRequest request=(HttpServletRequest)arg0; request.setCharacterEncoding("utf-8"); arg2.doFilter(arg0, arg1); } @Override public void init(FilterConfig filterConfig) throws ServletException { // TODO Auto-generated method stub } }
同时要在XML文件到场下面的内容使其有用
<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>com.smn.filter.CharacterEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>ERROR</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
- <dispatcher>指定过滤器所阻挡的资本被 Servlet 容器挪用的体式格局,可所以REQUEST,INCLUDE,FORWARD和ERROR之一,默认REQUEST。用户可以设置多个<dispatcher>子元素用来指定 Filter 对资本的多种挪用体式格局进行阻挡。
- <dispatcher>子元素可以设置的值及其意义
- REQUEST:当用户直接接见页面时,Web容器将会挪用过滤器。假如目的资本是经由过程RequestDispatcher的include()或forward()方式接见时,那么该过滤器就不会被挪用。
- INCLUDE:假如目的资本是经由过程RequestDispatcher的include()方式接见时,那么该过滤器将被挪用。除此之外,该过滤器不会被挪用。
- FORWARD:假如目的资本是经由过程RequestDispatcher的forward()方式接见时,那么该过滤器将被挪用,除此之外,该过滤器不会被挪用。
- ERROR:假如目的资本是经由过程声明式异常处置惩罚机制挪用时,那么该过滤器将被挪用。除此之外,过滤器不会被挪用。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/11708.html