Java filter拦截器的使用
生活随笔
收集整理的這篇文章主要介紹了
Java filter拦截器的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、web.xml配置
<!-- 驗證是否登錄 攔截功能 --><filter><filter-name>isLogin</filter-name><filter-class>com.ifengSearch.filter.LoginFilter</filter-class></filter><filter-mapping><filter-name>isLogin</filter-name><!-- 攔截 路徑 --><url-pattern>/user/index</url-pattern><url-pattern>/client</url-pattern><url-pattern>*.do</url-pattern></filter-mapping>2、編寫 攔截器,實現?filter 即可
package com.ifengSearch.filter;import java.io.IOException;import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger;import com.ifengSearch.user.entity.UserBean; /*** 是否登錄攔截器* @author flm* @date 2017年8月5日*/ public class LoginFilter implements Filter{private Logger log = Logger.getLogger(LoginFilter.class);@Overridepublic void destroy() {}@Overridepublic void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest)arg0;HttpServletResponse response =(HttpServletResponse) arg1;UserBean userBean = (UserBean) request.getSession().getAttribute("user");String url = request.getRequestURI(); //獲取請求路徑if("/ifengSearch/login.do".equals(url)){ // 如果是登陸的路徑 不攔截 arg2.doFilter(request, response);}else if(userBean==null||userBean.equals(null)){ //還沒登錄的 攔截 log.debug("還沒登錄 -----》 重定向 登錄頁面");response.sendRedirect("/ifengSearch/login");}else{arg2.doFilter(request, response); //放行}}@Overridepublic void init(FilterConfig arg0) throws ServletException {} }3、還有其他的配置
web.xml配置各節點介紹:<filter-name>用于為過濾器指定一個名字,該元素的內容不能為空。 <filter-class>元素用于指定過濾器的完整的限定類名。 <init-param>元素用于為過濾器指定初始化參數,它的子元素<param-name>指定參數的名字,<param-value>指定參數的值。 在過濾器中,可以使用FilterConfig接口對象來訪問初始化參數。<filter-mapping>元素用于設置一個 Filter 所負責攔截的資源。一個Filter攔截的資源可通過兩種方式來指定:Servlet 名稱和資源訪問的請求路徑 <filter-name>子元素用于設置filter的注冊名稱。該值必須是在<filter>元素中聲明過的過濾器的名字 <url-pattern>設置 filter 所攔截的請求路徑(過濾器關聯的URL樣式) <servlet-name>指定過濾器所攔截的Servlet名稱。 <dispatcher>指定過濾器所攔截的資源被 Servlet 容器調用的方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默認REQUEST。用戶可以設置多個<dispatcher> 子元素用來指定 Filter 對資源的多種調用方式進行攔截。 <dispatcher> 子元素可以設置的值及其意義: REQUEST:當用戶直接訪問頁面時,Web容器將會調用過濾器。如果目標資源是通過RequestDispatcher的include()或forward()方法訪問時,那么該過濾器就不會被調用。 INCLUDE:如果目標資源是通過RequestDispatcher的include()方法訪問時,那么該過濾器將被調用。除此之外,該過濾器不會被調用。 FORWARD:如果目標資源是通過RequestDispatcher的forward()方法訪問時,那么該過濾器將被調用,除此之外,該過濾器不會被調用。 ERROR:如果目標資源是通過聲明式異常處理機制調用時,那么該過濾器將被調用。除此之外,過濾器不會被調用。?
轉載于:https://www.cnblogs.com/lemon-flm/p/7290381.html
總結
以上是生活随笔為你收集整理的Java filter拦截器的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么确定Oracle客户端安装成功
- 下一篇: 我的Java知识复习回顾笔记