91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaWeb中的Filter過濾器怎么使用

發布時間:2022-02-28 11:01:46 來源:億速云 閱讀:135 作者:iii 欄目:開發技術

本篇內容介紹了“JavaWeb中的Filter過濾器怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、什么是過濾器

1.Filter過濾器的作用:攔截請求

2.攔截請求常見場景:

(1)權限檢查
(2)日記操作
(3)事務管理

1.1 使用步驟

Filter 過濾器的使用步驟:
1、編寫一個類去實現Filter 接口
2、實現過濾方法doFilter()
3、到web.xml 中去配置Filter 的攔截路徑

二、初體驗

web工程下新建一個admin目錄,作為需要權限才能訪問的目錄,其中有兩個文件

2.1 mynav.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>導航</title>
</head>
<body>
<table>
    <tr>
        <td>
            百度<input type="text">
        </td>
    </tr>
    <tr>
        <td>
            Google<input type="text">
        </td>
    </tr>
    <tr>
        <td>
            必應<input type="text">
        </td>
    </tr>
</table>
</body>
</html>

2.2 FilterServlet程序

package com.filter.filter;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;

/**
 * @author ningqian
 * @create -05-16 20:17
 */
 //注意導包是javax
public class FilterServlet implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("來到Filter過濾器");
        HttpServletRequest httpServletRequest = (HttpServletRequest)servletRequest;
        HttpSession session = httpServletRequest.getSession();
        //如果session的屬性user為空,轉發到首頁
        if(session.getAttribute("user")==null){
            servletRequest.getRequestDispatcher("/index.jsp").forward(servletRequest,servletResponse);
        }
        else{//如果session的屬性user不為空,則放行
            filterChain.doFilter(servletRequest,servletResponse);
        }
    }

    @Override
    public void destroy() {

    }
}

2.3 HelloServlet程序

package com.filter.filter;

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

@WebServlet(name = "helloServlet", value = "/hello-servlet")
public class HelloServlet extends HttpServlet {
    private String message;

    public void init() {
        message = "Hello World!";
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html");

        // Hello
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h2>" + message + "</h2>");
        out.println("</body></html>");
        HttpSession session = request.getSession();
        session.setAttribute("user","ningqian");
    }

    public void destroy() {
    }
}

2.4 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <filter>
        <filter-name>FilterServlet</filter-name>
        <filter-class>com.filter.filter.FilterServlet</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>FilterServlet</filter-name>
         <!--表示受限的文件-->
        <url-pattern>/admin/*</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.filter.filter.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

2.5 index.jsp

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <filter>
        <filter-name>FilterServlet</filter-name>
        <filter-class>com.filter.filter.FilterServlet</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>FilterServlet</filter-name>
         <!--表示受限的文件-->
        <url-pattern>/admin/*</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.filter.filter.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

三、測試

1.啟動服務器

2.在瀏覽器地址欄輸入:http:localhost:8080/filter/admin/1.jpg
表示直接訪問admin目錄下的圖片
由于此目錄下的文件在web.xml中配置為受限,所以此時請求被FilterServlet收到,使用doFilter方法進行請求過濾檢查,發現會話session中沒有user屬性,所以將該請求轉發到index.jsp

3.在瀏覽器地址欄輸入:http:localhost:8080/filter/
首頁不在受限的目錄下,所以可以直接訪問,點擊頁面上的鏈接Hello Servlet,此時,將請求發到服務器,HelloServlet程序接收,通過doGet()方法,給會話session的user賦值

4.再次在瀏覽器輸入:http:localhost:8080/filter/admin/1.jpg,此時就可以正常訪問。

四、Filter的生命周期

Filter 的生命周期包含幾個方法

1、構造器方法

2、init 初始化方法

第1,2 步,在web 工程啟動的時候執行(Filter 已經創建)

3、doFilter 過濾方法

第3 步,每次攔截到請求,就會執行

4、destroy 銷毀

第4 步,停止web 工程的時候,就會執行(停止web 工程,也會銷毀Filter 過濾器)

五、FilterConfig類

FilterConfig 類見名知義,它是Filter 過濾器的配置文件類。
Tomcat 每次創建Filter 的時候,也會同時創建一個FilterConfig 類,這里包含了Filter 配置文件的配置信息。
FilterConfig 類的作用是獲取filter 過濾器的配置內容

1、獲取Filter 的名稱filter-name 的內容:filterConfig.getFilterName()

2、獲取在Filter 中配置的init-param 初始化參數(在web.xml中配置):filterConfig.getInitParameter(“username”)

3、獲取ServletContext 對象:filterConfig.getServletContext()

<!--filter 標簽用于配置一個Filter 過濾器-->
<filter>
<!--給filter 起一個別名-->
<filter-name>AdminFilter</filter-name>
<!--配置filter 的全類名-->
<filter-class>com.atguigu.filter.AdminFilter</filter-class>
<init-param>
<param-name>username</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost3306/test</param-value>
</init-param>
</filter>

六、FilterChain過濾器鏈

多個過濾器

七、Filter 的攔截路徑

Filter 過濾器它只關心請求的地址是否匹配,不關心請求的資源是否存在!!!

八、精確匹配

8.1 目錄匹配

<url-pattern>/admin/*</url-pattern>

8.2 后綴名匹配

<url-pattern>*.html</url-pattern>

“JavaWeb中的Filter過濾器怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

方山县| 清涧县| 荔波县| 娱乐| 札达县| 高阳县| 宽城| 卓尼县| 买车| 特克斯县| 洮南市| 临沭县| 呼和浩特市| 家居| 康定县| 丽水市| 会宁县| 上林县| 句容市| 嘉黎县| 铁力市| 卢氏县| 鄂托克前旗| 灵山县| 平凉市| 天津市| 永定县| 来宾市| 灵宝市| 眉山市| 会理县| 南宁市| 宜昌市| 兴业县| 荣成市| 吉首市| 二连浩特市| 榕江县| 元阳县| 江陵县| 安达市|