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

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

难度初级
时长 1小时40分
学习人数
综合评分9.53
339人评价 查看评价
9.8 内容实用
9.5 简洁易懂
9.3 逻辑清晰
  • 过滤器链执行顺序:

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

    查看全部
  • 项目启动时 init,

    访问项目时 doFilter,

    项目停止时 destroy

    查看全部
  • init--->doFilter--->destroy


    查看全部
  • @web.xml <filter> <filter-name>FirstFilter</filter-name> <filter-class>com.imooc.filter.FirstFilter</filter-class> </filter> <filter-mapping> <filter-name>FirstFilter</filter-name> <url-pattern>/index.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>FirstFilter</filter-name> <url-pattern>/main.jsp</url-pattern> <dispatcher>FORWARD</dispatcher> </filter-mapping> @FirstFilter.java public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException{ HttpServletRequest hsreq = (HSReq) req; HttpServletResponse hsres = (HSRes) res; // 重定向:Dispatcher走REQUEST // hsres.sendRedirect(hsreq.getContextPath()+"/main.jsp"); hsres.sendRedirect(hsreq.getContextPath() + "/middle.jsp"); // 转发:Dispatcher走FORWARD // hsreq.getRequestDispatcher("main.jsp").forward(hsreq, hsres); // hsreq.getRequestDispatcher("main.jsp").include(hsreq, hsres);//同理

    查看全部
  • Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进行预处理,也可以对HttpServletResponse进行后处理,是个典型的处理链。它与Servlet的区别在于:它不能直接向用户生成响应。完整的流程是:Filter对用户请求进行预处理,接着将请求交给Servlet进行处理并生成响应,最后Filter再对服务器响应进行后处理。

    Filter有如下几个用处。
    在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest。
    根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据。
    在HttpServletResponse到达客户端之前,拦截HttpServletResponse。
    根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。

    Filter可负责拦截多个请求或响应;一个请求或响应也可被多个请求拦截。

    创建一个Filter只需两个步骤:
    创建Filter处理类(实现Filter接口).
    web.xml文件中配置Filter(配置<filter>与<filter-mapping>)

    每个过滤器都有它对应的<url-pattern>地址.即过滤器关联的url地址.<url-pattern>标签是<filter-mapping>下的子标签. 假如多个过滤器相关联的地址都不一样没有交集,则它们都是相互独立的.互不相干. 假如多个过滤器相关联的地址都一样.则它们便构成过滤器链.此时用户请求就会依次通过所有关联这个Web资源地址的过滤器. 过滤器链就是针对一个客户的请求,找到匹配的过滤器有多个.用户请求就会依次通过所有关联这个Web资源的过滤器.服务器会按照web.xml文件中过滤器定义的先后顺序组装成一条链.执行的顺序也是沿着这条链. 当过滤器的doFilter()方法中的chain调用doFilter(request,response)方法.符合规则则会把请求传递给下一个过滤器,下一个过滤器依次调用chain.doFilter(),直到传递到Web资源.当Web资源处理完传递过来的请求并返回响应后.此时便执行doFilter()方法放行后的方法.过滤器把响应传递给用户,从最接近Web资源的过滤器开始传递响应给用户. 假设定义过滤器的顺序为filter1、filter2、filter3.(都关联同一个web资源或Servlet) 初始化顺序(一启动服务器时加载,根据web.xml的定义过滤器的顺序初始化):filter1-->filter2-->filter3 过滤器执行顺序:cilent发送request-->filter1-->filter2-->filter3-->Web资源-->Web资源发送响应返回-->通过filter3-->filter2-->filter1-->到达client. 其中doFilter()结束顺序filter3-->filter2-->filter1.跟递归一样,因为放行是chain.doFilter(),必须当此方法执行完,即当请求去到Web资源并处理完信息返回响应后,doFilter()方法便执行放行后的语句.然后就结束. 摧毁顺序(关闭服务器):filter1-->filter2-->filter3.

    查看全部
  • <filter>        <filter-name>FirstFilter</filter-name>        <filter-class>com.imooc.filter.FirstFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>FirstFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping> 注意: /index.jsp:只有index.jsp /index*:带有index前缀的所有URL /*:所有URL “*”代表任意值。

    Ps1:<filter>...</filter>:只能有一个;但是<filter-mapping>...</filter-mapping>可以有多个。 Ps2:<filter>...<filter-name>Filter的名字</filter-name>...</filter>必须和<filter-mapping>...<filter-name>Filter的名字</filter-name>...</filter-mapping>一致。

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

    查看全部
  • JAVA过滤机制——过滤简介 1、过滤器三部分:过滤源(用户请求)——>过滤规则——>过滤结果 2、过滤器不处理结果,只做辅助性操作 3、定义:过滤器是一个【服务器端】的组件,它可以【截取用户端的请求和响应信息】,并对这些信息过滤

    查看全部
  • 同一个URL请求要经过多个过滤器时,过滤器的执行顺序按照过滤器在Web.xml中的定义顺序来执行。

    查看全部
  • https://img1.sycdn.imooc.com//5add3f0d00017bf512560697.jpg

    查看全部


  • 1.一般filter都是一个链,web.xml 里面配置了几个就有几个。一个一个的连在一起 

    request -> filter1 -> filter2 ->filter3 -> …. -> request resource.

    2.chain.doFilter将请求转发给过滤器链下一个filter , 如果没有filter那就是你请求的资源

    想当于一个放行方法,之前的请求是到 index.jsp 放行后就会到index.jsp页面 就会执行里面的代码


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

    查看全部
  • https://img1.sycdn.imooc.com//5add2fe40001fbb610410647.jpg

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

    查看全部
  • 过滤器web.xml的配置

    查看全部

举报

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

微信扫码,参与3人拼团

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

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