简单的Filter

来源:互联网 发布:电子病历软件免费 编辑:程序博客网 时间:2024/05/29 03:19

Filter 是加强版的Servelt,就像人一样,一开始都是单独的个体,后来为了自己,做医生,警察等不同的职业

java 也是差不多的吧

开始servlet ,输出不好使,于是有了jsp作为输出

需要提前判断用户是否请求合理,于是有了Filter

Filter 有这几种方法

init() 初始化

doFilter()操作

destroy()毁灭

需要注意得是

doFilter() 中有个

chain.doFilter()

之前是对客户端执行

之后是对服务器操作的


Filter是在servelt 处理前,做处理,别称为拦截器




package ff;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;

/**
 * Servlet Filter implementation class LogFilter
 */
@WebFilter(filterName = "log", urlPatterns = { "/*" })//filterName  名字    urlPatterns 拦截范围
public class LogFilter implements Filter {
    private FilterConfig config;    //自己添加的属性,用于获取其他数据

    /**
     * Default constructor.
     */
    public LogFilter() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @see Filter#destroy()
     */
    public void destroy() {
        // TODO Auto-generated method stub
        this.config=null;
    }

    /**
     * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
     */
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        // TODO Auto-generated method stub
        // place your code here

        // pass the request along the filter chain
        ServletContext context=this.config.getServletContext();   //可用于纪录日子
        HttpServletRequest hrequest=(HttpServletRequest)request;   //转换为HttpServeltRequest 获取路径
        System.out.println(hrequest.getServletPath());
        chain.doFilter(request, response);
        System.out.println("ok");
        System.out.println(hrequest.getRequestURI());//将数据发送的请求的页面    如果要判断是否权限合理,可以用sesion  如果不合理,重定向,后名的chain.filter()就省去了
    }

    /**
     * @see Filter#init(FilterConfig)
     */
    public void init(FilterConfig fConfig) throws ServletException {
        // TODO Auto-generated method stub
        this.config=fConfig;
    }

}



之前使用注释里做的

其下面试试web.xml 怎么配置

为了方便,吧@webFilter 注释掉,直接使用这个类

web.xml 添加

  <filter>
      <filter-name>log</filter-name>
      <filter-class>ff.LogFilter</filter-class>
  </filter>
 
  <filter-mapping>
      <filter-name>log</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

0 0