更新時間:2022-04-08 10:12:54 來源:動力節(jié)點(diǎn) 瀏覽1327次
Filter是什么?動力節(jié)點(diǎn)小編來給大家進(jìn)行詳細(xì)介紹。
filter過濾器的作用:攔截請求
網(wǎng)頁上的某些操作或數(shù)據(jù)只有用戶登錄之后才能訪問,用filter來過濾掉未登錄的用戶,只讓已經(jīng)登錄的用戶繼續(xù)訪問
利于數(shù)據(jù)的管理
public class ManagerFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
Object user = httpServletRequest.getSession().getAttribute("user");
if (user == null) {
httpServletRequest.getRequestDispatcher("/pages/user/login.jsp").forward(servletRequest,servletResponse);
} else {
filterChain.doFilter(servletRequest,servletResponse);
}
}
@Override
public void destroy() {
}
}
再多個filter中,按照web.xml中filter的配置順序執(zhí)行filter類

<!--filter 標(biāo)簽用于配置一個 Filter 過濾器-->
<filter>
<!--給 filter 起一個別名-->
<filter-name>AdminFilter</filter-name>
<!--配置 filter 的全類名-->
<filter-class>com.atguigu.filter.AdminFilter</filter-class>
</filter><!--filter-mapping 配置 Filter 過濾器的攔截路徑-->
<filter-mapping>
<!--filter-name 表示當(dāng)前的攔截路徑給哪個 filter 使用-->
<filter-name>AdminFilter</filter-name>
<url-pattern>/admin/ *</url-pattern>//給admin下所有頁面都加上一個過濾器
</filter-mapping>
Filter 的生命周期包含幾個方法
(1)構(gòu)造器方法
(2)init 初始化方法
第 1, 2 步, 在 web 工程啟動的時候執(zhí)行(Filter 已經(jīng)創(chuàng)建)
(3)doFilter 過濾方法
第 3 步, 每次攔截到請求, 就會執(zhí)行
(4)destroy 銷毀
第 4 步, 停止 web 工程的時候, 就會執(zhí)行(停止 web 工程, 也會銷毀 Filter 過濾器)
多個鏈在同一線程中,都可獲取request中的參數(shù)
–精確匹配
/target.jsp
以上配置的路徑, 表示請求地址必須為: http://ip:port/工程路徑/target.jsp
–目錄匹配
/admin/
以上配置的路徑, 表示請求地址必須為: http://ip:port/工程路徑/admin/
–后綴名匹配
.html
以上配置的路徑, 表示請求地址必須以.html 結(jié)尾才會攔截到
.do
以上配置的路徑, 表示請求地址必須以.do 結(jié)尾才會攔截到
*.action
以上配置的路徑, 表示請求地址必須以.action 結(jié)尾才會攔截到

初級 202925

初級 203221

初級 202629

初級 203743