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

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

难度初级
时长 1小时40分
学习人数
综合评分9.53
339人评价 查看评价
9.8 内容实用
9.5 简洁易懂
9.3 逻辑清晰
  • 过滤器分类
    查看全部
  • 生命周期
    查看全部
  • Web.xml 配置
    查看全部
  • request.getContextPath(); save user info to session 在doFilter中获得ServletRequest convert to HttpServletRequest之后,request.getSession,接着在获得的session中设置 过滤的黑名单和白名单需要在FitlerConfig中配置 对于白名单放行 if true chain.doFilter 黑名单跳转到相应的处理页面 else response.sendRedirect FilterConfig配置 filter url:/*(*号是全匹配) request.getRequestURI();(获得当前request请求的URI地址,用于判断是否合法请求) 使用参数配置->init()->config.getInitParameter(name)(获得FilterConfig)
    查看全部
    1 采集 收起 来源:登录案例

    2018-03-22

  • forward转发 :一次请求一次回应 服务器跳转 sendredirect重定向: 两次请求两次回应 客户端跳转 由于sendredirect是request,会激活REQUEST类型的过滤器,因此要注意,是否会形成重定向循环 request 过滤request请求 forward 过滤重定向请求 include 过滤include请求 过滤器默认是REQUETS类型
    查看全部
  • 过滤器
    查看全部
  • 不放行,循环中直接return退出;

    放行,循环中直接continue跳出。

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

    2020-03-01

  • 过滤器在实际项目中的应用场景

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

    2020-03-01

  • 过滤器不能处理用户请求,但是可以改变请求路径

    查看全部
  • 过滤器的分类(Servlet2.5)

    【1】REQUEST:默认的过滤器(我们配置过滤器默认选择的),用户直接访问页面时,Web容器将会调用过滤器,通过链接访问直接到达过滤器。

    重定向:会使用REQUEST过滤器,response.sendRedirect(request.getContextPath() + "/main.jsp");

    转发:会使用RESPONSE过滤器,request.getRequestDispatcher("main.jsp").forward(request, response);

    【2】FORWARD:目标资源是通过RequestDispatcher的forward访问时,该过滤器被调用。<dispatcher>FORWARD</dispatcher>

    【3】INCLUDE:目标资源时通过RequestDispatcher的include方法调用时,过滤器将被调用。<dispatcher>INCLUDE</dispatcher>

    request.getRequestDispatcher("main.jsp").include(request, response);使用这个跳转其他过滤器将不起作用,只有INCLUDE的过滤器会起作用。

    【4】ERROR


    查看全部
  • 一.过滤器的工作原理
    用户发送请求到过滤器,过滤器将用户请求发送到web资源,web资源将响应发送到过滤器,过滤器将响应发送给用户
    二.过滤器的工作周期
    1.实例化阶段-->一启动服务器就会从Web容器的web.xml文件中自动去加载实例化过滤器.且只会实例化一次.即生成了过滤器. 2.初始化阶段-->生成过滤器之后便是初始化,加载一些初始化信息.调用init()方法.且只执行一次. 3.过滤阶段-->执行过滤器的doFilter()方法进行过滤.执行n次的,凡是过滤器捕获到用户的请求,都会执行这个过滤方法. 4.销毁阶段-->当Web容器关闭即服务器关闭的时候,便执行destroy()方法销毁.

    查看全部
  • Filter的三个方法:

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

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

    过滤器可以改变用户请求的web资源,也就是说可以改变用户请求的路劲

    过滤器不能直接返回数据,不能直接处理用户请求,它不是一个标准的servlet

    /*中(*)代表任意值

    红色区域代表过滤器类的配置

    <filter>...</filter>

    绿色区域配置过滤器URL相关映射配置

    <filter-mapping>...</filter-mapping>

    URL是需要过滤的路径

    @JAVA过滤机制——第一个过滤器案例

    1、创建一个过滤器类 ,继承自servlet下的Filter

    2、重写三个方法init() doFilter() destroy()方法

      (1)init()初始化:这个方法可以读取web.xml文件中的过滤器初始化参数。通过参数FilterConfig arg0可以获取更多参数

      (2)doFIlter()核心:完成实际的过滤操作。当用户请求访问与过滤器【关联的URL】时,Web容器将先调用过滤器的doFilter方法,FilterChain arg2参数可以调用chain.doFilter方法,将请求传给下一个过滤器(或目标资源),或利用转发,重定向将请求转发给其他资源。

       (3)web容器在消耗过滤器前调用该方法,用于释放过滤器占用的资源。(大多数情况用不到)

    3、过滤器的配置如图:

    (1)一般配置一个<filter>,然后用多个<filter-mapping>与之关联


    在过滤器对象的doFilter()方法中,业务逻辑处理完成之后,需要通过FilterChain对象的doFilter()方法将请求传递到下一个过滤器或者目标资源,否则将出现错误。

    查看全部
  • 可以用@webfilter注解进行filter配置
    查看全部
  • 我来说说我对异步过滤器的理解吧。根据过滤器的规则,过滤器得等servlet执行结束才能停止,所以如果servlet执行很久,过滤器得等很久,所以说呢,为了使得过滤器早点执行结束,就让servlet在后台执行,过滤器提前结束,这就是异步过滤器的优点所在
    @WebServlet(asyncSupported = true, displayName = "/AsyncServlet", urlPatterns={"/servlet/AsyncServlet"})

    asyncSupported = true 是必须开启用以支持异步

    @WebFilter(filterName="AsynFilter",asyncSupported=true,value={"/servlet/AsyncServlet"},dispatcherTypes={DispatcherType.REQUEST,DispatcherType.ASYNC})


    asyncSupported = true 是必须开启用以支持异步
    dispatcherTypes={DispatcherType.REQUEST,DispatcherType.ASYNC}
    DispatcherType.REQUEST必须要加上,否则过滤器就不会生效了

    同时注意在过滤的地址和servlet的地址必须相同

    查看全部
  • request    用户直接访问页面时(eg:请求response.sendredirect请求重定向),Web容器将会调用过滤器
        forward   目标资源通过RequestDispatcher的forward访问时,该过滤器被调用  <jsp:forward也能触发
        include    目标资源通过RequestDispatcher的include访问时,该过滤器被调用   <jsp:include也能触发    
        error        目标资源通过声明式处理机制调用时,该过滤器被调用

    <error-page>
        <error-code>404</error-code>//500
        <location>/error.jsp</location>
        </error-page>
    <filter>
            <filter-name>ErrorFilter</filter-name>
            <filter-class>com.imooc.filter.ErrorFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>ErrorFilter</filter-name>
            <url-pattern>/error.jsp</url-pattern>
            <dispatcher>ERROR</dispatcher>
        </filter-mapping>

    @error.jsp
    您输入的路径有误!

    @ErrorFilter.java
    public void doFilter(ServletRequest servletrequest,
    ServletResponse servletresponse, FilterChain filterchain)
    throws IOException, ServletException {
    System.out.println("检测到有错误的信息!");
    filterchain.doFilter(servletrequest, servletresponse);//注意:放行
    }
    Servlet3.0中加入了@引言的这种方式.

    @WebFilter用来将一个类声明为过滤器,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为过滤器.(部署理解为项目发布,就会把Web.xml文件与项目的文件读取在Web容器里,部署的时候容器就会识别注解,将相应的类部署为过滤器.启动服务器才执行过滤器的初始化方法.)

    则添加过滤器不需要再web.xml中配置.直接在过滤器类里加入@WebFilter声明即可.

    filter-mapping元素用来声明Web应用中的过滤器映射。过滤器可被映射到一个servlet或一个URL模式。将过滤器映射到一个servlet中会造成过滤器作用于servlet上。将过滤器映射到一个URL模式中则可以将过滤器应用于任何资源,只要该资源的URL与URL模式匹配。过滤是按照部署描述符的filter-mapping元素出现的顺序执行的。

    过滤器filter-mapping的<servlet-name>标签意思是过滤器关联Servlet,当某些用户请求访问Servlet的时候,会被过滤器截取请求.(即Web容器会调用过滤器的doFilter()方法)

    过滤器filter-mapping的<url-pattern>标签意思是过滤器关联的URL地址.当用户访问关联的URLWeb资源时,会被过滤器截取请求.(即Web容器会调用过滤器的doFilter()方法)

    图中上部分是Servlet3.0配置过滤器的方法.下部分是Servlet2.5的配置过滤器方法.

    查看全部

举报

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

微信扫码,参与3人拼团

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

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