最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Servlet Filter實(shí)現(xiàn)系統(tǒng)登錄權(quán)限

 更新時(shí)間:2019年10月28日 15:44:19   作者:wtopps  
這篇文章主要為大家詳細(xì)介紹了使用Servlet Filter實(shí)現(xiàn)系統(tǒng)登錄權(quán)限,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Servlet Filter介紹

過(guò)濾器是一些web應(yīng)用程序組件,可以綁定到一個(gè)web應(yīng)用程序中。但是與其他web應(yīng)用程序組件不同的是,過(guò)濾器是”鏈”在容器的處理過(guò)程中的。這就意味著它們會(huì)在servlet處理器之前訪問(wèn)一個(gè)進(jìn)入的請(qǐng)求,并且在外發(fā)響應(yīng)信息返回到客戶前訪問(wèn)這些響應(yīng)信息。這種訪問(wèn)使得過(guò)濾器可以檢查并修改請(qǐng)求和響應(yīng)的內(nèi)容。

Filter適用的場(chǎng)景:

1.為一個(gè)web應(yīng)用程序的新功能建立模型(可被添加到web應(yīng)用程序中或者從web應(yīng)用程序中刪除而不需要重寫(xiě)基層應(yīng)用程序代碼)

2.向過(guò)去的代碼添加新功能

3.用戶授權(quán)的Filter: Filter 負(fù)責(zé)檢查用戶請(qǐng)求,根據(jù)請(qǐng)求過(guò)濾用戶非法請(qǐng)求

4.日志Filter: 詳細(xì)記錄某些特殊的用戶請(qǐng)求

5.負(fù)責(zé)解碼的Filter: 包括對(duì)非標(biāo)準(zhǔn)編碼的請(qǐng)求解碼

Filter使用的位置:

過(guò)濾器放在web資源之前,可以在請(qǐng)求抵達(dá)它所應(yīng)用的web資源(可以是一個(gè)Servlet、一個(gè)Jsp頁(yè)面,甚至是一個(gè)HTML頁(yè)面)之前截獲進(jìn)入的請(qǐng)求,并且在它返回到客戶之前截獲輸出請(qǐng)求。Filter:用來(lái)攔截請(qǐng)求,處于客戶端與被請(qǐng)求資源之間,目的是重用代碼。Filter鏈,在web.xml中哪個(gè)先配置,哪個(gè)就先調(diào)用。在filter中也可以配置一些初始化參數(shù)。

Filter的用途:

1.在HttpServletRequest 到達(dá)Servlet 之前,攔截客戶的HttpServletRequest

2.根據(jù)需要檢查HttpServletRequest ,也可以修改HttpServletRequest 頭和數(shù)據(jù)

3.在HttpServletResponse 到達(dá)客戶端之前,攔截HttpServletResponse

4.根據(jù)需要檢查HttpServletResponse ,可以修改HttpServletResponse 頭和數(shù)據(jù)

一個(gè)Filter 可負(fù)責(zé)攔截多個(gè)請(qǐng)求或響應(yīng):一個(gè)請(qǐng)求或響應(yīng)也可被多個(gè)請(qǐng)求攔截。

使用Filter進(jìn)行系統(tǒng)登錄權(quán)限校驗(yàn)

這里我們使用對(duì)session進(jìn)行校驗(yàn)的方式,當(dāng)對(duì)某一模塊進(jìn)行請(qǐng)求時(shí),先校驗(yàn)當(dāng)前用戶的請(qǐng)求是否有session存在,如果有,繼續(xù)訪問(wèn),如果沒(méi)有,即跳轉(zhuǎn)到登錄頁(yè)。

第一步:

編寫(xiě)自己的Filter攔截類,攔截類需要實(shí)現(xiàn)servlet的filter接口

public class WebFilter implements Filter{
  @Override
  public void init(FilterConfig filterConfig) throws ServletException {

  }

  @Override
  public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) servletRequest;
    HttpServletResponse response = (HttpServletResponse) servletResponse;

    HttpSession session = request.getSession();
    String currPath = request.getRequestURI();  //當(dāng)前請(qǐng)求的URL

    if (session.getAttribute("logined") != null) {
      filterChain.doFilter(servletRequest, servletResponse);
    } else {
      response.sendRedirect("/login.jsp");
    }
  }

  @Override
  public void destroy() {

  }  
}

這里使用了攔截器鏈,當(dāng)我們配置了多個(gè)攔截器的時(shí)候,服務(wù)器會(huì)按照web.xml中過(guò)濾器定義的先后循序組裝成一條鏈,然后一次執(zhí)行其中的doFilter()方法。

第二步:

在web.xml中配置自定義的攔截器

web.xml:

<filter>
    <filter-name>webFilter</filter-name>
    <filter-class>com.test.interceptor.WebFilter</filter-class>
    <init-param>
      <param-name>skipPath</param-name>
      <param-value>ok.jsp</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>webFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

這樣,就配置好了我們自定義的攔截器,如果有多個(gè)攔截器的話,請(qǐng)注意攔截器配置的順序,攔截會(huì)按照從上至下的順序進(jìn)行攔截,一般來(lái)說(shuō)處理編碼的攔截器配置在最上面。

通過(guò)上述步驟的操作,此時(shí)就可以通過(guò)URI進(jìn)行訪問(wèn)。此時(shí)如果能夠取得Session中的logined值時(shí),會(huì)直接進(jìn)入下一步處理,否則直接進(jìn)入登錄頁(yè)面。從而就完成了session的校驗(yàn)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文帶你了解Java排序算法

    一文帶你了解Java排序算法

    這篇文章主要為大家詳細(xì)介紹了Java中常見(jiàn)的三個(gè)排序算法:選擇排序,冒泡排序和插入排序,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-08-08
  • Java實(shí)現(xiàn)學(xué)生管理系統(tǒng)詳解

    Java實(shí)現(xiàn)學(xué)生管理系統(tǒng)詳解

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)學(xué)生管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-10-10
  • SpringBoot+EasyPoi實(shí)現(xiàn)excel導(dǎo)出功能

    SpringBoot+EasyPoi實(shí)現(xiàn)excel導(dǎo)出功能

    最新小編遇到這樣一個(gè)需求,根據(jù)檢索條件查詢列表并將結(jié)果導(dǎo)出到excel,實(shí)現(xiàn)過(guò)程也非常簡(jiǎn)單,感興趣的朋友跟隨小編一起看看吧
    2021-09-09
  • Spring Boot Hello World的實(shí)現(xiàn)代碼

    Spring Boot Hello World的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Spring Boot Hello World的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • java交換排序之雞尾酒排序?qū)崿F(xiàn)方法

    java交換排序之雞尾酒排序?qū)崿F(xiàn)方法

    這篇文章主要介紹了java交換排序之雞尾酒排序?qū)崿F(xiàn)方法,實(shí)例分析了排序的原理與相關(guān)的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-02-02
  • 一文詳解Spring?Boot可以同時(shí)處理多少請(qǐng)求

    一文詳解Spring?Boot可以同時(shí)處理多少請(qǐng)求

    SpringBoot是一個(gè)流行的Java開(kāi)發(fā)框架,它被廣泛用于構(gòu)建Web應(yīng)用程序,但是,開(kāi)發(fā)人員通常會(huì)擔(dān)心它的性能問(wèn)題,特別是在高負(fù)載條件下,Spring?Boot能夠同時(shí)處理多少請(qǐng)求是一個(gè)重要的問(wèn)題,在本文中,我們將討論SpringBoot的請(qǐng)求處理能力,并介紹如何提高性能
    2023-10-10
  • SpringBoot實(shí)現(xiàn)事件監(jiān)聽(tīng)(異步執(zhí)行)的示例代碼

    SpringBoot實(shí)現(xiàn)事件監(jiān)聽(tīng)(異步執(zhí)行)的示例代碼

    事件監(jiān)聽(tīng)是一種機(jī)制,可以定義和觸發(fā)自定義的事件,以及在應(yīng)用程序中注冊(cè)監(jiān)聽(tīng)器來(lái)響應(yīng)這些事件,本文主要介紹了SpringBoot實(shí)現(xiàn)事件監(jiān)聽(tīng)(異步執(zhí)行)的示例代碼,感興趣的可以了解一下
    2024-08-08
  • Java中策略設(shè)計(jì)模式的實(shí)現(xiàn)及應(yīng)用場(chǎng)景

    Java中策略設(shè)計(jì)模式的實(shí)現(xiàn)及應(yīng)用場(chǎng)景

    策略設(shè)計(jì)模式是Java中一種常用的設(shè)計(jì)模式,它通過(guò)定義一系列算法并將其封裝成獨(dú)立的策略類,從而使得算法可以在不影響客戶端的情況下隨時(shí)切換。策略設(shè)計(jì)模式主要應(yīng)用于系統(tǒng)中存在多種相似的算法、需要靈活調(diào)整算法邏輯或者需要擴(kuò)展新的算法等場(chǎng)景
    2023-04-04
  • SpringBoot任務(wù)之定時(shí)任務(wù)相關(guān)知識(shí)總結(jié)

    SpringBoot任務(wù)之定時(shí)任務(wù)相關(guān)知識(shí)總結(jié)

    今天給大家整理的文章是SpringBoot定時(shí)任務(wù)的相關(guān)知識(shí)點(diǎn),文中有非常詳細(xì)的介紹及代碼示例,對(duì)正在學(xué)習(xí)SpringBoot任務(wù)的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • java  中OkHttp的使用方法及實(shí)例

    java 中OkHttp的使用方法及實(shí)例

    這篇文章主要介紹了java 中OkHttp的使用方法及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06

最新評(píng)論

民勤县| 保定市| 北海市| 益阳市| 仁化县| 兰州市| 林西县| 平陆县| 锡林浩特市| 宁陕县| 宜宾县| 衡阳市| 马关县| 伊宁市| 若尔盖县| 北碚区| 永安市| 临湘市| 句容市| 宜兰县| 大渡口区| 丽水市| 阿瓦提县| 通海县| 文水县| 长沙市| 囊谦县| 西昌市| 余姚市| 炉霍县| 鸡西市| 建阳市| 越西县| 灯塔市| 兰溪市| 新化县| 台东市| 屏东市| 常州市| 互助| 德惠市|