導航:首頁 > 凈水問答 > filter過濾器驗證登錄

filter過濾器驗證登錄

發布時間:2023-09-06 04:33:39

⑴ filter驗證登陸,導致死循環

login.jsp是不需要登錄就應該能訪問的,你現在的過濾器所有jsp都需要登陸後才能訪問,包括login.jsp。那麼我還怎麼登錄?
也就是說,當你訪問login.jsp的時候,就要進入過濾器,過濾器拿不到session中的信息,所以,過濾器要跳轉到login.jsp。由於是重定向方式跳轉,所以瀏覽器會再發請求到伺服器,訪問login.jsp,然後還是先通過過濾器進行驗證,以此周而復始,就死循環了。
方法就是在過濾器中,判斷請求地址:
String uri = request.getRequestURI();
if(uri.endsWith("login.jsp"))
{
arg2.doFilter(request,response);
}
else
{
try{

Object o=request.getSession().getAttribute("username");

if(o==null){

response.sendRedirect("login.jsp");

}else if(o.toString().equals("")){

response.sendRedirect("login.jsp");
}else{
response.sendRedirect("success.jsp");
}
}catch(Exception e){

e.printStackTrace();
}
}

⑵ 判斷用戶登錄是用springmvc 攔截器還是filter

在struts2中用過filter過濾器,在springmvc中還有攔截器,它們都能過濾請求,但是到底有什麼區別呢?
一、定義

攔截器 :是在面向切面編程的就是在你的service或者一個方法,前調用一個方法,或者在方法後調用一個方法比如動態代理就是攔截器的簡單實現,在你調用方法前列印出字元串(或者做其它業務邏輯的操作),也可以在你調用方法後列印出字元串,甚至在你拋出異常的時候做業務邏輯的操作。
過濾器:是在javaweb中,你傳入的request、response提前過濾掉一些信息,或者提前設置一些參數,然後再傳入servlet或者struts的action進行業務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者 struts的action前統一設置字元集,或者去除掉一些非法字元.。
二、xml文件配置
1.filter
該過濾器的方法是創建一個類XXXFilter實現此介面,並在該類中的doFilter方法中聲明過濾規則,然後在配置文件web.xml中聲明他所過濾的路徑

<filter>
<filter-name>XXXFilter</filter-name>
<filter-class>
com.web.util.XXXFilter
</filter-class>
</filter>

<filter-mapping>
<filter-name>XXXFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter>
<filter-name>XXXFilter</filter-name>
<filter-class>
com.web.util.XXXFilter
</filter-class>
</filter>

<filter-mapping>
<filter-name>XXXFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
2.Interceptor

它也要實現HandlerInterceptor 介面,這里只介紹方法註解配置

<!-- 攔截器 -->
<mvc:interceptors>
<!-- 多個攔截器,順序執行 -->
<mvc:interceptor>
<mvc:mapping path="/entryOrJsonController/*" /><!-- 如果不配置或/*,將攔截所有的Controller -->
<bean class="com.wy.interceptor.CommonInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
<!-- 攔截器 -->
<mvc:interceptors>
<!-- 多個攔截器,順序執行 -->
<mvc:interceptor>
<mvc:mapping path="/entryOrJsonController/*" /><!-- 如果不配置或/*,將攔截所有的Controller -->
<bean class="com.wy.interceptor.CommonInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>

三、具體區別

filter
Interceptor

多個的執行順序
根據filter mapping配置的先後順序
按照配置的順序,但是可以通過order控制順序

規范
在Servlet規范中定義的,是Servlet容器支持的
Spring容器內的,是Spring框架支持的。

使用范圍
只能用於Web程序中
既可以用於Web程序,也可以用於Application、Swing程序中。

深度
Filter在只在Servlet前後起作用
攔截器能夠深入到方法前後、異常拋出前後等

四、總結
兩者的本質區別:攔截器是基於java的反射機制的,而過濾器是基於函數回調。從靈活性上說攔截器功能更強大些,Filter能做的事情,他都能做,而且可以在請求前,請求後執行,比較靈活。Filter主要是針對URL地址做一個編碼的事情、過濾掉沒用的參數、安全校驗(比較泛的,比如登錄不登錄之類),太細的話,還是建議用interceptor。不過還是根據不同情況選擇合適的。

⑶ 過濾器Filter

過濾器是 Servlet 的高級特性之一,是實現了 Filter 介面的 Java。 過濾器位於瀏覽器與伺服器端之間,充當濾網的作用,過濾或處理一些不恰當的請求

過濾器的用處: 過濾敏感字元串、避免中文亂碼、許可權驗證(規定只帶有Session或Cookie的用戶才能訪問)等等;

所有實現了 Filter 介面的類都稱為過濾器。過濾器必須實現 Filter 下的三個方法:

其中, doFilter() 方法有三個參數 ServletRequest、ServletResponse 和 FilterChain,FilterChain 參數用於調用後續的過濾器,如果不存在過濾器,則訪問目標資源;

web.xml中配置

應用順序是指 根據請求地址執行對應的過濾器的順序 。執行攔截一個請求的過濾器是根據 web.xml中 <filter-mapping> 順序從上往下執行,而且是嵌套執行的。
一個請求中,如果需要經過多個過濾器,其請求和響應的過程如下圖所示

⑷ 校驗用戶是否登錄過濾器Filter

CheckLoginFilter net.cnki.tpi.cms.util.CheckLoginFilter redirectURL /login.jsp notCheckURLList /error.jsp;/login.jsp CheckLoginFilter /* 2、然後新創建一個CheckLoginFilter.java類,代碼如下:
/** * 校驗用戶是否已登錄過濾器 * @author lpz * */ public class CheckLoginFilter implements Filter { private FilterConfig filterConfig = null; private String redirectURL = null; private List notCheckURLList = new ArrayList(); public CheckLoginFilter() { } public void destroy() { notCheckURLList.clear(); } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)servletRequest; HttpServletResponse response = (HttpServletResponse)servletResponse; HttpSession session = request.getSession(); Object userInfo = session.getAttribute("userInfo"); if(!(request) && userInfo==null){ //重定向到指定頁面 response.sendRedirect(request.getContextPath() + redirectURL); }else{ //繼續響應請求 chain.doFilter(servletRequest, servletResponse); } } public void init(FilterConfig fConfig) throws ServletException { this.filterConfig = fConfig; redirectURL = filterConfig.getInitParameter("redirectURL"); String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList"); if(!MyStringUtil.isNullOrEmpty(notCheckURLListStr)){ //將字元串轉化為list notCheckURLList = MyStringUtil.convStrToList(notCheckURLListStr,";"); } } /** * 校驗當前請求是否在不過濾的列表中 * @param request * @return */ private boolean (HttpServletRequest request) { String uri = request.getServletPath() + (request.getPathInfo() == null ?

⑸ filter的使用 java 過濾器的幾種使用方法

過濾器來

過濾器是處於客戶端自與伺服器資源文件之間的一道過濾網,在訪問資源文件之前,通過一系列的過濾器對請求進行修改、判斷等,把不符合規則的請求在中途攔截或修改。也可以對響應進行過濾,攔截或修改響應。

過濾器一般用於登錄許可權驗證、資源訪問許可權控制、敏感詞彙過濾、字元編碼轉換等等操作,便於代碼重用,不必每個servlet中還要進行相應的操作。

⑹ 判斷用戶登錄是用springmvc 攔截器還是filter

struts2用filter濾器springmvc攔截器都能濾請求底區別呢
、定義

攔截器 :面向切面編程service或者前調用或者調用比態代理攔截器簡單實現調用前列印字元串(或者做其業務邏輯操作)調用列印字元串甚至拋異候做業務邏輯操作
濾器:javaweb傳入request、response提前濾掉些信息或者提前設置些參數再傳入servlet或者strutsaction進行業務邏輯比濾掉非url(login.do址請求用戶沒登陸都濾掉)或者傳入servlet或者 strutsaction前統設置字元集或者除掉些非字元.
二、xml文件配置
1.filter
該濾器創建類XXXFilter實現介面並該類doFilter聲明濾規則配置文件web.xml聲明所濾路徑

<filter>
<filter-name>XXXFilter</filter-name>
<filter-class>
com.web.util.XXXFilter
</filter-class>
</filter>

<filter-mapping>
<filter-name>XXXFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter>
<filter-name>XXXFilter</filter-name>
<filter-class>
com.web.util.XXXFilter
</filter-class>
</filter>

<filter-mapping>
<filter-name>XXXFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
2.Interceptor

要實現HandlerInterceptor 介面介紹註解配置

<!-- 攔截器 -->
<mvc:interceptors>
<!-- 攔截器,順序執行 -->
<mvc:interceptor>
<mvc:mapping path="/entryOrJsonController/*" /><!-- 配置或/*,攔截所Controller -->
<bean class="com.wy.interceptor.CommonInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
<!-- 攔截器 -->
<mvc:interceptors>
<!-- 攔截器,順序執行 -->
<mvc:interceptor>
<mvc:mapping path="/entryOrJsonController/*" /><!-- 配置或/*,攔截所Controller -->
<bean class="com.wy.interceptor.CommonInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>

三、具體區別

filter
Interceptor

執行順序
根據filter mapping配置先順序
按照配置順序通order控制順序

規范
Servlet規范定義Servlet容器支持
Spring容器內Spring框架支持

使用范圍
能用於Web程序
既用於Web程序用於Application、Swing程序

深度
FilterServlet前起作用
攔截器能夠深入前、異拋前等

四、總結
兩者本質區別:攔截器基於java反射機制濾器基於函數調靈性說攔截器功能更強些Filter能做事情都能做且請求前請求執行比較靈Filter主要針URL址做編碼事情、濾掉沒用參數、安全校驗(比較泛比登錄登錄類)太細建議用interceptor根據同情況選擇合適

閱讀全文

與filter過濾器驗證登錄相關的資料

熱點內容
衛生所廢水 瀏覽:751
污水井道是什麼意思 瀏覽:629
樹脂滴水瓦起什麼作用 瀏覽:108
武漢污水深隧工程設計院 瀏覽:208
需要自己取水飲水機怎麼用 瀏覽:752
白酒污水處理設備有哪些 瀏覽:876
源之圓凈水器怎麼清洗 瀏覽:872
高架橋污水管 瀏覽:411
本田思域動態濾芯是什麼東西 瀏覽:454
為何不直接蒸餾溴水分離溴 瀏覽:216
EDI電子商務的局限性 瀏覽:699
ro膜出廠日期 瀏覽:528
用電污水泵多少錢 瀏覽:208
家用凈水器ro膜水流方向示範圖 瀏覽:811
空氣濾芯怎麼設計原則 瀏覽:176
廢水倒灌是什麼原因造成的 瀏覽:765
變壓器為什麼用純水 瀏覽:769
燒水的壺裡面有水垢怎麼洗 瀏覽:560
純水機反復啟動不了怎麼回事 瀏覽:882
污水外理有哪些危害 瀏覽:766