2 回答
TA貢獻1836條經驗 獲得超3個贊
我來給你簡單的說一下吧:)
首先要明確。Filter是JSP2.0里面的東西 ,顧名思義,也就是過濾器的意思
和你說說如何用吧。要用Filter就得在web.xml中配置
例:
//配置方法和配置普通的Servlet一樣的哦
<filter>
<filter-name>PrivFilter</filter-name>
<filter-class>com.myPriv.filter.PrivFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PrivFilter</filter-name>
<url-pattern>/resource/*</url-pattern>
</filter-mapping>
//com.myPriv.filter.PrivFilter是這個過濾器所在的位置。當然這個過濾器必須實現接口javax.servlet.Filter。
然后就可以在過濾器這個接口方法中增加過濾條件了
public void doFilter(ServletRequset request, ServletResponse response,FilterChain chain)
thows ServletException, IOException{
}
然后你可以把過濾條件寫出來,寫在doFilter方法里面
我這里寫一個簡單的例子:
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session=request.getSession();
ServletContext application=session.getServletContext();
if(session.getAttribute("userSession")==null)
{
response.sendRedirect("error/priv_error.jsp");
return;
}
else
{
chain.doFilter(request, response);
}
}
在上面的這個過濾方法中,如果session.getAttribute("userSession")==null)那就跳轉到錯誤頁面。如果不為空,則繼續
所以
chain.doFilter(request, response);的意思就是跳轉到下個頁面,
明白了吧?
如果還有不明白。,可以留下你的問題
------------------------
還有忘了回答你的問題 了。java會在處理每一個Servlet時都走一次Filter的。所以你不必擔心你的過濾不起作用了
而且chain.doFilter(request.response);
是必須的。沒有他,程序就不會繼續了:)他是讓你的request和response繼續運行哦
--------------------------------
這個你就可接寫/*
好了。它是說對哪些范圍起作里這個過濾器
TA貢獻1806條經驗 獲得超5個贊
Filter不是jsp2.0中特有的,2.0和3.0里面都有,只不過在2.0中用過濾器需要用xml配置文件,而在3.0中不需要配置文件,一般eclipse會為你默認生成:@WebFilter("/Filter").
添加回答
舉報
