zoukankan      html  css  js  c++  java
  • java之web开发过滤器

    我们通常上网的时候都会遇到一个问题,看到一个视频之类的,想要点开观看,点击之后,网页

    提醒你:您尚未登录,是否要登录?然后巴拉巴拉跑去输账号密码。

    那么这就是一个过滤器的功能,当你要访问一个资源的时候(通常理解为链接),服务器会进行

    分析,当前的访问者是否符合一定条件(通常就是检测一下是不是会员,是否已经登录),符合

    条件的话,服务器会跳转到指定链接,不满足的话也会友情提醒:您不是会员,您尚未登录等等。

    如何实现呢,还是以用户登录为例子吧,看下面~~~

    1.三个页面

    登录页面,登录成功页面,登录失败页面

    login.jsp---loginsuccess.jsp---loginwrong.jsp

    2.实现Filter接口的类

    这个java文件实现了Filter接口,并且设定了规则,并且还有配置文件

     1 public void doFilter(ServletRequest arg0, ServletResponse arg1,
     2             FilterChain arg2) throws IOException, ServletException {
     3         HttpServletRequest request = (HttpServletRequest) arg0;
     4         HttpServletResponse response = (HttpServletResponse) arg1;
     5         request.setCharacterEncoding("utf-8");// 设置请求编码
     6         response.setCharacterEncoding("utf-8");// 设置响应编码
     7         HttpSession session = request.getSession();//session对象,用于存储表单数据
     8         String username = request.getParameter("username");
     9         String password = request.getParameter("password");
    10         session.setAttribute("username", username);
    11         session.setAttribute("password", password);
    12         System.out.println("密码:" + password);
    13         System.out.println("账号:" + session.getAttribute("username"));
    14         if (username != null && password != null) {
    15             if (username.equals("admin") && password.equals("admin")) {
    16                 arg2.doFilter(arg0, arg1);// 满足条件放行,跳转到表单想要到达的页面loginsuccess.jsp
    17             } else {
    18                 request.getRequestDispatcher("loginwrong.jsp").forward(request,
    19                         arg1);// 不满足条件,转到loginwrong页面
    20             }
    21         }
    22     }

    配置文件规定了此规则适用于客户端对哪个页面访问时,调用规则

    1     <filter>
    2         <filter-name>logfilter</filter-name>
    3         <filter-class>Filter.Servletfilter</filter-class>
    4     </filter>
    5     <filter-mapping>
    6         <filter-name>logfilter</filter-name>
    7         <url-pattern>/loginsuccess.jsp</url-pattern>
    8     </filter-mapping>

    filter-name自定义,不过规则与适用的页面要一一对应,过滤规则类文件要包名+文件名形式书写,

    这个文件的意思就是说,当用用户要访问loginsuccess.jsp页面时,过滤器Servletfilter进行拦截,然后

    结合规则来看,如果用户的用户名和密码都是admin的话,服务器直接跳转到loginsuccess.jsp页面,

    账号和密码不对的话,服务器跳转到loginwrong.jsp页面。

    注意:用户提交表单,发送请求之后,请求被过滤器拦截,此时要设置请求和响应的字符编码,防止

    后面用到数据的时候造成输出乱码。设置方法在过滤器源码已经用红字标出。

  • 相关阅读:
    简单查询plan
    EXP AND IMP
    (4.16)sql server迁移DB文件(同一DB内)
    sql server日志传送实践(基于server 2008 R2)
    (1.3)学习笔记之mysql体系结构(C/S整体架构、内存结构、物理存储结构、逻辑结构、SQL查询流程)
    (1.2)学习笔记之mysql体系结构(数据库文件)
    (1.1)学习笔记之mysql体系结构(内存、进程、线程)
    SSAS(SQL Server 分析服务)、***S(SQL Server报表服务)、SSIS(SQL Server集成服务)
    教你使用SQL查询(1-12)
    Sql Server内置函数实现MD5加密
  • 原文地址:https://www.cnblogs.com/eco-just/p/7811326.html
Copyright © 2011-2022 走看看