国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

JBuilder2005 Servlet開發(fā)之過濾器

2019-11-17 05:58:24
字體:
供稿:網(wǎng)友

過濾器可以在請(qǐng)求到達(dá)jsp或Servlet之前或響應(yīng)返回客戶端之前添加一些額外的操作。假如有多個(gè)JSP頁面和Servlet都需要進(jìn)行一個(gè)相同或相似的操作,我們可以把這個(gè)操作抽取到一個(gè)Servlet過濾器中,并通過匹配路徑截獲感愛好JSP或Servlet。

   我們舉幾個(gè)典型的過濾器應(yīng)用的例子,讀者可以推而廣之:

   ·編碼轉(zhuǎn)換

  亂碼問題困擾了不少的Web應(yīng)用程序開發(fā)者,這是因?yàn)榛?a href="http://m.survivalescaperooms.com/article.asp?typeid=160">java的Web應(yīng)用程序可能運(yùn)行于不同的Web應(yīng)用程序器、操作系統(tǒng)平臺(tái)或硬件服務(wù)器上,不同的環(huán)境有自己默認(rèn)的編碼類型,在數(shù)據(jù)的轉(zhuǎn)換過程中不同的默認(rèn)編碼是亂碼問題的始作俑者,所以在開發(fā)JSP時(shí)經(jīng)常需要將數(shù)據(jù)進(jìn)行編碼轉(zhuǎn)換。我們可以創(chuàng)建一個(gè)Servlet過濾器在請(qǐng)求進(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)后,一般都會(huì)將用戶信息對(duì)象放入到session中,可以通過Servlet過濾器在請(qǐng)求進(jìn)入JSP或Servlet前判定session中是否有用戶信息對(duì)象,假如有,則說明用戶已經(jīng)登錄,假如沒有,則說明用戶還沒有登錄,將請(qǐng)求重定向到登錄頁面。

   本節(jié)所提供的Servlet過濾器就是為了實(shí)現(xiàn)安全控制,下面我們就來開發(fā)這個(gè)Servlet。

   1.打開創(chuàng)建Servlet過濾器的向?qū)А?BR>
   通過File->New...->W(wǎng)eb->雙擊Filter Servlet圖標(biāo)啟動(dòng)創(chuàng)建Servlet過濾器的向?qū)В缦聢D所示:

JBuilder2005 Servlet開發(fā)之過濾器
圖 7 指定Servlet過濾器的名字


   和創(chuàng)建標(biāo)準(zhǔn)的Servlet相似,在這步里指定過濾器的類名和包名。在Class name中輸入LoginCheckFilter,包名依就為bookstore.servlet。按Next到下一步。

   2.指定過濾器的路徑匹配模式

JBuilder2005 Servlet開發(fā)之過濾器
圖 8 指定過濾器的匹配路徑模式


   ·Name:logincheckfilter,指定過濾器的名字

   ·URL pattern:/*,指定過濾器路徑匹配模式,這里我們使過濾器對(duì)所有的請(qǐng)求都進(jìn)行過濾。

   按Finish創(chuàng)建此過濾器。

   打開向?qū)?chuàng)建的LoginCheckFilter.java文件,并錄入粗體所示的代碼,如下所示:

   代碼清單 4 LoginCheckFilter.java代碼

1. package bookstore.servlet;
2. …
3. public class LoginCheckFilter
4. extends HttpServlet implements Filter
5. {
6.  …
7.  public void doFilter(ServletRequest request, ServletResponse response
8.      , FilterChain filterChain)
9.  {
10.  try
11.  {
12.   //進(jìn)行請(qǐng)求和響應(yīng)的類型轉(zhuǎn)換
13.   HttpServletRequest httPRequest = (HttpServletRequest) request;
14.   HttpServletResponse httpResponse = (HttpServletResponse) response;
15.
16.   boolean isValid = true;
17.   String uriStr = httpRequest.getRequestURI().toUpperCase();
18.   if (uriStr.indexOf("LOGIN.JSP") == -1 &&
19.     uriStr.indexOf("SWITCH.JSP") == -1 &&
20.     httpRequest.getSession().getAttribute("ses_userBean") == null)
21.   {
22.    isValid = false;
23.   }
24.   if (isValid)
25.   {
26.    filterChain.doFilter(request, response);
27.   } else
28.   {
29.    httpResponse.sendRedirect("/webModule/login.jsp");
30.   }

31.
32.  } catch (ServletException sx)
33.  {
34.   filterConfig.getServletContext().log(sx.getMessage());
35.  } catch (IOException iox)


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 天柱县| 辛集市| 巨鹿县| 措美县| 湄潭县| 靖宇县| 二手房| 邳州市| 沁水县| 平远县| 南陵县| 蓬安县| 元朗区| 山东| 博湖县| 山阴县| 拉孜县| 武穴市| 新郑市| 唐海县| 烟台市| 南城县| 出国| 白山市| 浙江省| 新巴尔虎右旗| 长垣县| 哈密市| 德清县| 四会市| 黄大仙区| 牡丹江市| 莎车县| 手游| 元朗区| 常德市| 牡丹江市| 麻江县| 明光市| 民勤县| 桐乡市|