亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Java Web開發技術應用——過濾器

難度初級
時長 1小時40分
學習人數
綜合評分9.53
339人評價 查看評價
9.8 內容實用
9.5 簡潔易懂
9.3 邏輯清晰
  • 1、HttpRequest和ServletRequest區別
    2、FilterInit(FilterConfig)初始化的用法
    3、requset.getRequestURI()???????? //獲取請求頁面的相對路徑
    4、String的方法str.indexOf("XXX")??? //獲取str內容"XXX"在那個位置第一位為0
    5、String的方法str.split(";")??? //才分str為多個string,以";"為才分線

    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)

    查看全部
    0 采集 收起 來源:登錄案例

    2018-04-18

  • 1.概念:過濾器是一個服務器上的組件,它可以截取用戶端的請求和相應信息,并對這些信息過濾<br>
    2.工作原理:<br>
    用戶請求——》xml文件中如果過濾器可以匹配則截取,否則不走過濾器——》過濾器放行方法之前的代碼——》web資源——》web的響應返回到過濾器,然后過濾器執行方興方法之后的代碼——》過濾器把web的響應返回給用戶<br>
    <br>
    <br>
    3.過濾器的生命周期:
    實例化:web容器加載過濾器的配置信息<br>
    初始化:filterServlet中的init()方法獲得配置信息,放到filterConfig對象里面<br>
    private FilterConfig cf;<br>
    public void init(FilterConfig arg0) throws ServletException {<br>
    cf = arg0;<br>
    }<br>
    過濾 :進行過濾操作<br>
    銷毀:執行完畢銷毀<br>
    <br>
    <br>
    4.過濾器的API:
    5.多個過濾器(過濾器鏈)<br>

    <br>
    6.過濾器分類<br>
    <br>

    7.過濾器實例:登錄過濾器和編碼過濾器

    查看全部
    0 采集 收起 來源:總結

    2018-04-18

  • 我來說說我對異步過濾器的理解吧。根據過濾器的規則,過濾器得等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的配置過濾器方法.

    查看全部
  • 過濾器分類(通過<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>
    重定向:瀏覽器的地址欄是會變化的,獲取資源的時候經過了二次通過瀏覽器發送請求的過程。

    以下內容源自其他同學,當然,自己百度搜索一下也是一樣的
    這個也是一個參考:http://jingyan.baidu.com/article/37bce2be71adad1002f3a2c7.html
    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請求

    查看全部
  • 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>).

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
    ? <display-name>JavaWeb_001_fistFilter</display-name>
    ? <welcome-file-list>
    ??? <welcome-file>index.jsp</welcome-file>
    ? </welcome-file-list>
    ?
    ? <filter>
    ? <filter-name>FistFilter</filter-name>
    ? <filter-class>com.filter.FistFilter</filter-class>
    ? </filter>
    ? <filter-mapping>
    ? <filter-name>FistFilter</filter-name>
    ? <url-pattern>/index.jsp</url-pattern>
    ? </filter-mapping>
    ?
    ? <filter>
    ? <filter-name>SecondFilter</filter-name>
    ? <filter-class>com.filter.SecondFilter</filter-class>
    ? </filter>
    ? <filter-mapping>
    <filter-name>SecondFilter</filter-name>
    <url-pattern>/index.jsp</url-pattern>
    ? </filter-mapping>
    ?
    </web-app>

    查看全部
  • 1.什么是過濾器?<br>
    過濾器是web服務器端的一個組件,可以截獲用戶的請求和web資源的響應,對請求和響應進行過濾
    2.過濾器的工作原理?<br>
    原理:用戶發送請求到過濾器,過濾器將用戶請求發送到web資源,web資源將響應發送到過濾器,過濾器將響應發送給用戶
    3.過濾器的工作周期
    a.在web容器啟動的時候實例化,調用初始化方法,每次有請求響應過來調用doFilter()方法,服務器容器關閉的時候調用銷毀方法。

    查看全部
  • 過濾器大多數時間消耗在doFilter()方法中,doFilter()方法被Web容器調用,即被服務器調用,因為Web容器存在Tomcat容器中,Tomcat就是服務器.
    doFilter()方法同時傳入ServletRequest Request、ServletResponse Response和Filter Chain對象的引用.然后過濾器就有機會處理請求,將處理任務傳遞給鏈中的下一個資源,(通過調用Filter Chain對象引用上的doFilter方法),之后在處理控制權返回該過濾器時處理響應.

    關于chain.doFilter(request,response)
    他的作用是將請求轉發給過濾器鏈上的下一個對象.這里的下一下對象指的是下一個filter,如果沒有filter那就是你請求的資源.一般filter都是一個鏈,在一個項目的web.xml中有幾個<filter>.就有幾個過濾器.
    request->filter1->filter2->filter3->....->request resource(請求的Web資源),然后得到Web資源的響應,再沿著鏈返回給request.



    查看全部
  • 過濾器xml配置

    查看全部
  • 分類

    查看全部
  • web.xml配置

    查看全部
  • 三個方法

    查看全部
  • 過濾器的生命周期

    查看全部
  • 12

    查看全部
    0 采集 收起 來源:總結

    2018-04-12

  • 11

    查看全部
    0 采集 收起 來源:總結

    2018-04-12

舉報

0/150
提交
取消
課程須知
童鞋們,過濾器是Java Web開發的內容。學習前需要掌握Java基礎知識、并熟悉JSP和Servlet。如未學習上述知識,可移步網站相關課程。
老師告訴你能學到什么?
通過本課程的學習,你可以了解過濾器的基礎知識,并可以自己動手編寫過濾器。

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!