• 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页面。

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

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

  • 相关阅读:
    java常见面试题汇总(三)
    Java学习流程图(学习路线、书籍、教程推荐)
    java开发面试题:spring面试题总结
    2014.11.12模拟赛【最大公因数】
    2014.11.12模拟赛【最小公倍数】| vijos1047最小公倍数
    vijos1781 同余方程
    vijos1777 引水入城
    2014.10.31我出的模拟赛【天神下凡】
    voijs1883 月光的魔法
    2014.10.31我出的模拟赛【藏宝图】
  • 原文地址:https://www.cnblogs.com/eco-just/p/7811326.html
Copyright © 2020-2023  润新知