一、具体思路
1.建立filter类
2.在web.xml文件中配置filter类
二、实现过程
下面是已经建立的web项目,在已有项目上配置filter过滤器,这里以A_test项目为例
A_test项目代码详情见此链接:A_test(servlet+数据库+jsp实现注册并显示结果)
1.建立filter类(建立一个类,实现 javax.servlet.Filter接口))这里建立的类名为 SetFilter(根据自己的想法取名)
2.在web.xml文件中配置filter类,根据自己取的名称更改
3.注释掉之前文件中写的解决中文乱码的代码
4.运行,查看网页和控制台效果
三、代码
1.filter类代码(SetFilter.java)
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 SetFilter implements Filter { //SetFilter类实现javax.servlet.Filter接口
@Override //init()方法
public void init(FilterConfig arg0) throws ServletException {
System.out.println("SetFilter 初始化"); //控制台查看是否执行成功
}
@Override //doFilter()方法
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//处理乱码
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
System.out.println("执行前......"); //控制台查看是否执行成功
chain.doFilter(request, response);
System.out.println("执行后......");
}
@Override //destory()方法
public void destroy() {
}
}
2.web.xml文件中增加的代码
<!-- 定义一个filter -->
<filter>
<filter-name>SetFilter</filter-name> <!-- //filter的名字(自己命名,每个filter取名唯一) -->
<filter-class>Filter.SetFilter</filter-class> <!-- //filter程序所在的地址(对应的包、类的名称) -->
</filter>
<!-- filter映射路径 -->
<filter-mapping>
<filter-name>SetFilter</filter-name><!-- filter的名字(与上面的filter名字对应) -->
<url-pattern>/RegServ/*</url-pattern> <!-- 配置过滤器到某个Servlet,需要映射的Servlet的名字,'/*'表示匹配所有路径 -->
</filter-mapping>