手记

初步接触过滤器[Filter]

在访问页面,页面提交请求,服务器返回请求的过程中,可以加一层过滤器

以下是一个简单的过滤器,作用是修改所有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,请多指教.

1人推荐
随时随地看视频
慕课网APP