在访问页面,页面提交请求,服务器返回请求的过程中,可以加一层过滤器
以下是一个简单的过滤器,作用是修改所有servlet的response和request的编码格式
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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DoEncoding implements Filter{
@Override
public void destroy() {
/**
* 页面销毁的时候调用本函数
*/
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain chain)
throws IOException, ServletException {
/**
* 过滤器
*/
HttpServletResponse response = (HttpServletResponse) arg1;//类型转换
HttpServletRequest request = (HttpServletRequest) arg0;
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
chain.doFilter(request, response);//返还对象至servlet
}
@Override
public void init(FilterConfig arg0) throws ServletException {
/**
* 页面初始化的时候调用本函数
*/
}
}
特别说一下,继承的filte类来自 import javax.servlet.Filter
在tomcat的配置中,使用过滤器也需要在web.xml中配置
方法和配置servlet基本一样
代码如下
<filter>
<filter-name>eccoding</filter-name> //名称
<filter-class>com.t.servlet.DoEncoding</filter-class> //调用的java类
</filter>
<filter-mapping>
<filter-name>eccoding</filter-name>//名称
<url-pattern>/*</url-pattern> //对所有的本目录下的servlet生效,也可以指定目录
</filter-mapping>
过滤器的作用还有很多,很多判断可以交给过滤器执行,比如该户是否登录,这样就不需要在每个页面都验证用户是否登录,只需要在每次递交请求的时候由过滤器检查一下session就可以了.
过滤器的触发在客户端请求发出之后,服务器接受之前,反之亦然!
外行,初学java,请多指教.