一、问题描述: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> <!-- 这个过滤器可以过滤所有的文件-->