博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
过滤器
阅读量:6239 次
发布时间:2019-06-22

本文共 4702 字,大约阅读时间需要 15 分钟。

过滤器: 定义在服务器端的一段程序, 可以截获客户端发来的请求, 并根据一定规则进行过滤和拦截

过滤器的生命周期:

服务器启动
先通过web.xml加载过滤器进行实例化(这个过程是调用过滤器中init()方法, 同样也是只执行一次)
客户端发送请求:
执行过滤器中的doFilter()方法, 这个方法会执行N次, 每次有请求发送过来, 都会执行这个方法进行过滤
销毁过程
同servlet, 关闭或者停止服务器的时候会执行destory()方法

过滤器链:

不同的请求互不影响
过滤器链主要是针对多个过滤器过滤同一个url请求
过滤器的先后顺序是按照在web.xml的配置顺序来的
运行顺序: 请求--->过滤器1过滤--->过滤器2过滤--->后台处理层--->过滤器2过滤--->过滤器1过滤--->客户端接收

3.0新特性的过滤器:

使用注解的方式:
@WebFilter(filterName="", value={"",""}...等其他配置)

 

login.jsp

用户名:
密码:

register.jsp

 

用户名:
密码:
姓名:

 

LoginServler.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        String username = request.getParameter("username");        String password = request.getParameter("password");        System.out.println(username);        System.out.println(password);                if("admin".equals(username) && "123456".equals(password)){            request.getSession().setAttribute("currentUser","admin");            response.sendRedirect("index.jsp");        }else{            response.sendRedirect("fail.jsp");        }    }

RegisterServler.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        String username = request.getParameter("username");        String password = request.getParameter("password");        System.out.println(username);        System.out.println(password);                if("admin".equals(username) && "123456".equals(password)){            request.getSession().setAttribute("currentUser","admin");            response.sendRedirect("index.jsp");        }else{            response.sendRedirect("fail.jsp");        }    }

SessionFilterTest.java

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 SessionFilterTest implements Filter {    private String pages;    private HttpServletRequest request;        @Override    public void destroy() {            }    @Override    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)            throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest)req;        HttpServletResponse response = (HttpServletResponse)resp;                //获取当前的请求        String uri = request.getRequestURI();        System.out.println("当前发送的请求"+uri);                //获取不需要判断session的请求        String[] _pages = pages.split(";");                //判断当前请求是否在不需要判断的请求里        if(checkString(_pages,uri)){            //放行            chain.doFilter(req,resp);                    }else{            //先判断session在放行            Object obj = request.getSession().getAttribute("currentUser");            if(obj==null){                response.sendRedirect("login.jsp");            }else{                chain.doFilter(req,resp);            }        }    }    public static boolean checkString(String[] pages,String uri){        for(String s:pages){            if(uri.contains(s)){                return true;            }        }        return false;    }    @Override    public void init(FilterConfig config) throws ServletException {        String str = config.getInitParameter("page");        this.setPages(str);        System.out.println(str);            }    public String getPages(){        return pages;    }    public void setPages(String pages){        this.pages = pages;    }}

TestFilter.java

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 TestFilter implements Filter {    @Override    public void destroy() {        // TODO Auto-generated method stub            }    @Override    public void doFilter(ServletRequest request, ServletResponse response, FilterChain arg2)            throws IOException, ServletException {        request.setCharacterEncoding("utf-8");        response.setCharacterEncoding("utf-8");        response.setContentType("text/html; charset=utf-8");                arg2.doFilter(request, response);            }    @Override    public void init(FilterConfig arg0) throws ServletException {        // TODO Auto-generated method stub            }}

 

转载于:https://www.cnblogs.com/jgjk/p/7441687.html

你可能感兴趣的文章
Kubernetes之kubectl常用命令使用指南:2:故障排查
查看>>
Facebook测试新信息系统 陌生人发信收费1美元
查看>>
linux系统批量修改root用户密码
查看>>
使用python的paramiko包的RequirementParseError问题
查看>>
WdOS系统下源代码编译安装PHP(搭配nginx运行)
查看>>
SpringBoot整合Scala构建Web服务
查看>>
Gradle简介和安装
查看>>
使用Jmeter开发app端接口自动化案例实战
查看>>
[转载] 英语科技论文写作——Method and Methodology
查看>>
tomcat6+awstats+win7配置成功
查看>>
对前面的自定义的toast制作拖拽效果,以及双击居中效果
查看>>
php 文件目录操作
查看>>
一个人的心态决定你的人生百分度
查看>>
lsyncd配置文件
查看>>
Java基础学习总结(7)——Object类
查看>>
OPEN SSH升级小结(针对SUSE REDHAT linux系统)
查看>>
Myeclipse优化配置
查看>>
RabbitMQ学习总结(7)——Spring整合RabbitMQ实例
查看>>
Notepad++ 快捷键大全
查看>>
Oracle统计求和
查看>>