为了账号安全,请及时绑定邮箱和手机立即绑定

Java Web开发技术应用——过滤器

难度初级
时长 1小时40分
学习人数
综合评分9.53
339人评价 查看评价
9.8 内容实用
9.5 简洁易懂
9.3 逻辑清晰
  • @JAVA过滤机制——过滤简介 1、过滤器三部分:过滤源(用户请求)——>过滤规则——>过滤结果 2、过滤器不处理结果,只做辅助性操作 3、定义:过滤器是一个【服务器端】的组件,它可以【截取用户端的请求和响应信息】,并对这些信息过滤 4.案列:登录案例、编码转换案例

    查看全部
  • 四种不同过滤器,通过四种不同标签,在xml中做标记就可以实现不同的监听


    查看全部
  • 用Filter处理编码问题:

        在过滤器中添加:

            request.setCharacterEncoding("utf-8");

        或者:在web.xml中配置初始化参数

            https://img1.sycdn.imooc.com//5c8a018900013ba106990045.jpg

    查看全部
    0 采集 收起 来源:编码转换案例

    2019-03-14

  • 登录案例中的放行:

    https://img1.sycdn.imooc.com//5c89fef8000111a007870236.jpg

    查看全部
    0 采集 收起 来源:登录案例

    2019-03-14

  • Servlet3.0支持注解形式的Filter

    https://img1.sycdn.imooc.com//5c89f24e0001516e10710151.jpg

    https://img1.sycdn.imooc.com//5c89f2800001eae810330616.jpg

    查看全部
  • 过滤器的实现:

        ① 实现Filter接口

        ② 在web.xml中配置过滤器

    https://img1.sycdn.imooc.com//5c88d0df0001562509940543.jpg

    查看全部
  • 过滤器常见的使用场景

    查看全部
    0 采集 收起 来源:登录案例

    2019-03-11

  • web.xml配置

    查看全部
  • 过滤器可以改变用户请求的web资源,可以改变用户请求的路径(跳转);

    过滤器不能直接返回数据,不能直接处理用户请求;

    查看全部
  • 过滤器工作原理:

    https://img1.sycdn.imooc.com//5c52683b0001b0c316380974.jpg

    过滤器生命周期:

    https://img1.sycdn.imooc.com//5c5268f90001f37f14060974.jpg

    过滤器链:

    https://img1.sycdn.imooc.com//5c5269290001c35414060974.jpg

    过滤器的分类:

    https://img1.sycdn.imooc.com//5c52695e00014b0314060974.jpg

    查看全部
    0 采集 收起 来源:总结

    2019-01-31

  • 在web.xml中配置
    <filter>
        <filter-name>LoginFilter</filter-name>
        <filter-class>com.filter.LoginFilter</filter-class>
        <!-- 指定部分页面,在代码中实现对这些页面放行 -->
        <init-param>
          <param-name>noLoginPaths</param-name>
          <param-value>index.jsp;login.jsp;LoginServlet;fail.jsp</param-value>
        </init-param>
        <init-param>
          <param-name>charset</param-name>
          <param-value>UTF-8</param-value>
        </init-param>
    </filter>

    在Filter中
    private FilterConfig config = null;

    public void init(FilterConfig arg0) throws ServletException {
     config = arg0; // 将实例化时的init-param存入config
    }

    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
       throws IOException, ServletException {
     String charset = config.getInitParameter("charset"); // 从config中获得字符集
        if(charset==null){
          charset = "UTF-8";
        }
        request.setCharacterEncoding(charset); // 设定字符集为UTF-8
    }

    编码转换     字符集转换防止乱码

    使用: request.setCharacterEncoding("config.getInitParameter("XX")")

     XX参数内容“UTF-8”

    查看全部
    0 采集 收起 来源:编码转换案例

    2019-01-31

  • @WebFilter注解的常用属性:

    https://img1.sycdn.imooc.com//5c50156d0001a12414060974.jpg


    查看全部
  • Servelt2.5:过滤器的分类:

    https://img1.sycdn.imooc.com//5c5014da0001e22114060974.jpg

    https://img1.sycdn.imooc.com//5c5015050001e37514060974.jpg

    https://img1.sycdn.imooc.com//5c5015210001dafb14060974.jpg


    查看全部
  • 过滤器分类(通过<dispatcher>标签)
    通过<dispatcher>标签的值不同把过滤器分类.此标签中有四个值可以选择,可以同时选择多个.
    包括request、forword、include、error

    假设同一个过滤器关联了index.jsp与main.jsp.此过滤器的<dispatcher>标签值为request.
    在过滤器中的doFilter()方法中
    public void doFilter(ServletRequest req,ServletResponse rep,FilterChain chain){
    HttpServletRequest request=(HttpServletRequest)req;
    HttpServletResponse response=(HttpServletResponse)rep;
    response.sendRedirect(request.getContextPath()+"/main.jsp");
    }
    当用户访问index.jsp页面时,便会被过滤器截取.并执行doFilter()方法中的重定向去main.jsp页面.但main.jsp也关联了此过滤器,过滤器会截取到重定向新Web资源的请求.因此又会调用doFilter()方法中的重定向去main.jsp.所以是死循环的状态.

    因为重定向是属于request的行为.因此会被<dispatcher>标签值为request的过滤器截取到.即<dispatcher>标签值为request的过滤器可以截取重定向新Web资源的请求.

    当过滤器的doFilter()方法中用 request.getRequestDispatcher("/main.jsp").forward(arg0, arg1)请求转发到main.jsp.此时当用户请求访问index.jsp时,便会被过滤器截取,并且执行doFilter()方法,然后请求转发到main.jsp页面.此时用户可以访问到main.jsp页面,并没有被过滤器截取.因为请求转发属于forward行为.因此<dispatcher>标签值为request的过滤器是截取不了通过请求转发去新Web资源的请求.尽管<url-pattern>设置了main.jsp关联过滤器,但仍然截取不了.

    请求转发:浏览器的地址栏不会变化,性能相对更好一些,因为获取的资源是没有二次讲过浏览器的<br><br>
    重定向:浏览器的地址栏是会变化的,获取资源的时候经过了二次通过浏览器发送请求的过程。

    1.请求转发
    请求转发是指将请求再转发到另一资源(一般为JSP或Servlet)。此过程依然在同一个请求范围内,转发后浏览器地址栏内容不变
    请求转发使用RequestDispatcher接口中的forward()方法来实现,该方法可以把请求转发到另外一个资源,并让该资源对浏览器的请求进行响应
    RequestDispatcher rd = request.getRequestDispatcher(path); rd.forward(request,response);
    或request.getRequestDispatcher(path) .forward(request,response);

    2.重定向
    重定向是指页面重新定位到某个新地址,之前的请求失效,进入一个新的请求,且跳转后浏览器地址栏内容将变为新的指定地址
    重定向是通过HttpServletResponse对象的sendRedirect()来实现,该方法相当于浏览器重新发送一个请求
    response.sendRedirect(path);

    forward转发 :一次请求一次回应 服务器跳转
    sendredirect重定向: 两次请求两次回应 客户端跳转

    由于sendredirect是request,会激活REQUEST类型的过滤器,因此要注意,是否会形成重定向循环

    request 过滤request请求
    forward 过滤重定向请求
    include 过滤include请求

    查看全部
  • 过滤器链的执行过程:

    用户请求-->过滤器1-->过滤器2-->servlet service-->过滤器2-->过滤器1-->用户

    https://img1.sycdn.imooc.com//5c4ee47c0001b11616380974.jpg


    查看全部

举报

0/150
提交
取消
课程须知
童鞋们,过滤器是Java Web开发的内容。学习前需要掌握Java基础知识、并熟悉JSP和Servlet。如未学习上述知识,可移步网站相关课程。
老师告诉你能学到什么?
通过本课程的学习,你可以了解过滤器的基础知识,并可以自己动手编写过滤器。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!