过滤器解决Servlet中文乱码

来源:互联网 发布:知世故而不世故原句 编辑:程序博客网 时间:2024/05/17 06:21

一、问题描述:Servlet接收来自JSP页面的中文参数时,在Servlet文件中编写输出语句,控制台输出中文乱码。

过滤器解决方法:(这个问题我前面的文章已近解决,只不过你每次都要在Servlet文件中添加代码,很是麻烦)

1.过滤器在此方法的作用:每当程序要运行Servlet文件之前,都要去执行过滤器文件;在过滤器文件中编写要在Servlet文件之前运行的代码。

2.实现过程:分为两步(1.编写过滤器类。2.编写配置文件)

1.过滤器类

(1).在src文件下建个包  filter

(2).在此包下新建类     ServletFilter

(3).代码:

package filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class ServletFilter implements Filter {
public void doFilter(ServletRequest request,
            ServletResponse response,
            FilterChain chain) throws ServletException, IOException {
System.out.println("我是第一个过滤器!可以解决Servlet中文乱码");
   request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
     chain.doFilter(request,response); //访问下一个filter类,执行完所有的filter再去执行页面。
}
public void init(FilterConfig config) {   }
public void destroy() {}
}

2.配置web.xml文件(/WebRoot/WEB-INF/web.xml)

<!-- 过滤器,将此代码放在</web-app>之上-->
   <filter>
    <filter-name>ServletFilter </filter-name>
    <filter-class>filter.ServletFilter </filter-class>
  </filter>
  <filter-mapping>
    <filter-name>ServletFilter </filter-name>
    <servlet-name>
*</servlet-name>
  </filter-mapping> 
 <!-- 这个过滤器可以过滤所有的文件-->

0 0
原创粉丝点击