十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章主要講解了“如何創(chuàng)建Servlet過濾器”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何創(chuàng)建Servlet過濾器”吧!
我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、六盤水ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的六盤水網(wǎng)站制作公司
過濾器可以在請求到達(dá)JSP或Servlet之前或響應(yīng)返回客戶端之前添加一些額外的操作。如果有多個JSP頁面和Servlet都需要進(jìn)行一個相同或相似的操作,我們可以把這個操作抽取到一個Servlet過濾器中,并通過匹配路徑截獲感興趣JSP或Servlet。
我們舉幾個典型的過濾器應(yīng)用的例子,讀者可以推而廣之:
◆編碼轉(zhuǎn)換
亂碼問題困擾了不少的Web應(yīng)用程序開發(fā)者,這是因為基于Java的Web應(yīng)用程序可能運(yùn)行于不同的Web應(yīng)用程序器、操作系統(tǒng)平臺或硬件服務(wù)器上,不同的環(huán)境有自己默認(rèn)的編碼類型,在數(shù)據(jù)的轉(zhuǎn)換過程中不同的默認(rèn)編碼是亂碼問題的始作俑者,所以在開發(fā)JSP時常常需要將數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換。我們可以創(chuàng)建一個Servlet過濾器在請求進(jìn)入服務(wù)程序前都進(jìn)行編碼轉(zhuǎn)換。
◆添加統(tǒng)一的標(biāo)題或腳注
有些網(wǎng)頁需要添加統(tǒng)一的標(biāo)題頭或腳注,可以通過Servlet過濾器在響應(yīng)返回到客戶端前給網(wǎng)頁添加上統(tǒng)一的標(biāo)題和腳注。
◆進(jìn)行安全的控制
登錄系統(tǒng)后,一般都會將用戶信息對象放入到session中,可以通過Servlet過濾器在請求進(jìn)入JSP或Servlet前判斷session中是否有用戶信息對象,如果有,則說明用戶已經(jīng)登錄,如果沒有,則說明用戶還沒有登錄,將請求重定向到登錄頁面。
本節(jié)所提供的Servlet過濾器就是為了實現(xiàn)安全控制,下面我們就來開發(fā)這個Servlet。
1.打開創(chuàng)建Servlet過濾器的向?qū)А?/p>
和創(chuàng)建標(biāo)準(zhǔn)的Servlet相似,在這步里指定過濾器的類名和包名。在Class name中輸入LoginCheckFilter,包名依就為bookstore.Servlet。按Next到下一步。
2.指定過濾器的路徑匹配模式
◆Name:logincheckfilter,指定過濾器的名字
◆URL pattern:/*,指定過濾器路徑匹配模式,這里我們使過濾器對所有的請求都進(jìn)行過濾。
按Finish創(chuàng)建此過濾器。
打開向?qū)?chuàng)建的LoginCheckFilter.java文件,并錄入粗體所示的代碼,如下所示:
package bookstore.servlet;
…
public class LoginCheckFilter
extends HttpServlet implements Filter
{
public void doFilter(ServletRequest request, ServletResponse
response, FilterChain filterChain){
try
{
//進(jìn)行請求和響應(yīng)的類型轉(zhuǎn)換
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
boolean isValid = true;
String uriStr = httpRequest.getRequestURI().toUpperCase();
if (uriStr.indexOf("LOGIN.JSP") == -1 &&
uriStr.indexOf("SWITCH.JSP") == -1 &&
httpRequest.getSession().getAttribute("ses_userBean") == null)
{
isValid = false;
}
if (isValid)
{
filterChain.doFilter(request, response);
} else
{
httpResponse.sendRedirect("/webModule/login.jsp");
}
} catch (ServletException sx)
{
filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox)
{
filterConfig.getServletContext().log(iox.getMessage());
}
}
…
}
感謝各位的閱讀,以上就是“如何創(chuàng)建Servlet過濾器”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何創(chuàng)建Servlet過濾器這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!