官术网_书友最值得收藏!

6.4 JSP技術(shù)應(yīng)用

上面簡要介紹了JSP的用法及其內(nèi)置對(duì)象,下面通過兩個(gè)常用技術(shù)來詳細(xì)地講解JSP的使用方法。

6.4.1 使用JSP操作Cookie

在C盤Documents and Settings文件夾下每個(gè)用戶的Cookies目錄下,都會(huì)有許多Cookie,其用途是在每個(gè)獨(dú)立的頁面之間記錄和標(biāo)識(shí)不同的用戶。它的實(shí)現(xiàn)原理是:當(dāng)用戶訪問網(wǎng)頁時(shí),在訪問者的機(jī)器上創(chuàng)建一個(gè)文件叫做Cookie,寫一段內(nèi)容進(jìn)去來標(biāo)識(shí)不同的用戶,如果下次用戶再訪問這個(gè)網(wǎng)頁時(shí),從上次寫入的Cookie中讀出上次寫入的內(nèi)容,這樣網(wǎng)頁就知道上次這個(gè)用戶已經(jīng)訪問過該網(wǎng)頁了。

其實(shí)寫入Cookie的操作非常簡單,示例代碼如下:

      <%
      String cookieName="gf";
      Cookie cookie=new Cookie(cookieName, "gf的網(wǎng)頁");
      cookie.setMaxAge(365*24*60*60);
      response.addCookie(cookie);
      %>

代碼說明:

● Cookie cookie=new Cookie(cookieName, "Test_Content");這一行建立了一個(gè)Cookie對(duì)象,有兩個(gè)初始化參數(shù),第一個(gè)參數(shù)cookieName定義了Cookie的名字,第二個(gè)參數(shù)是一個(gè)字符串,定義了要在Cookie中寫入的內(nèi)容。

● cookie.setMaxAge(365*24*60*60)調(diào)用了Cookie中的setMaxAge方法,設(shè)定Cookie在用戶機(jī)器硬盤上的存活期為365*24*60*60秒,即讓Cookie文件在一年內(nèi)有效。一個(gè)Cookie在用戶的硬盤中存在的時(shí)間并不是無限期的,在建立Cookie對(duì)象時(shí),必須指定Cookie的存活期,超過了這個(gè)存活期,Cookie文件就不再起作用,會(huì)被用戶的瀏覽器自行刪除。

將Cookie寫入到用戶的本地硬盤后,如何在用戶下次訪問時(shí)讀出Cookie的內(nèi)容呢?示例代碼如下:

      <%
      Cookie cookies[]=request.getCookies();
      Cookie gfCookie=null;
      String value=null;
      String name=null;
      for(int i=0;i < cookies .length;i++) {
      gfCookie=cookies[i];
      value=gfCookie.getValue();
      name=gfCookie.getName();
      %>

代碼說明:

● Cookie cookies[]=request.getCookies(),其中,request.getCookies()讀出用戶硬盤上的Cookie,并將所有的Cookie放到一個(gè)cookie對(duì)象數(shù)組中。

● 通過getName()和getValue()兩個(gè)方法即可取得這個(gè)Cookie的名字和內(nèi)容。

6.4.2 利用緩存技術(shù)提高JSP性能

筆者以前負(fù)責(zé)過一個(gè)企業(yè)的內(nèi)網(wǎng),各地子公司的訪問量加起來一天有幾萬次,并發(fā)訪問量有700多次,如果用戶在查看內(nèi)網(wǎng)的新聞或公告時(shí),每一條新聞都需要從數(shù)據(jù)庫中查詢出來再生成JSP頁面,服務(wù)器或數(shù)據(jù)庫的壓力將是非常巨大的。

OSCache標(biāo)記庫由OpenSymphony設(shè)計(jì),它是一個(gè)開源的框架,提供了在現(xiàn)有的JSP頁面內(nèi)實(shí)現(xiàn)快速內(nèi)存緩存的功能。它不僅能夠?yàn)樗杏脩艟彺娆F(xiàn)有的JSP代碼塊,而且能夠以用戶為單位進(jìn)行緩存。OSCache還具有一些能提高可伸縮性的高級(jí)特性,比如緩存到磁盤、可編程的緩存刷新、異常控制等。

OSCache的具體使用方法如下:

01 把標(biāo)記庫聲明加入到頁面:

      <%@ taglib uri="cachetags" prefix="cache" %>

02 用cache標(biāo)記來包圍整個(gè)頁面:

      <cache:cache> ... 要緩存的內(nèi)容 ... </cache:cache>

在設(shè)定緩存內(nèi)容時(shí),可以設(shè)定需要緩存的時(shí)間,cache標(biāo)記的默認(rèn)緩存時(shí)間是1小時(shí)。如果需要設(shè)定為其他的數(shù)值,則需要如下設(shè)定:

      <cache:cache time="7200">

這代表緩存時(shí)間是2小時(shí)。

注意:緩存時(shí)間的設(shè)定是以秒為單位的。

在設(shè)定緩存時(shí),開發(fā)人員還可以指定這個(gè)緩存區(qū)的使用對(duì)象,示例代碼如下:

      <cache:cache key="gf" scope="session" time="7200">

這代表這個(gè)緩存區(qū)是針對(duì)當(dāng)前用戶的,而不是針對(duì)所有的用戶。設(shè)定緩存區(qū)的key屬性,表示這個(gè)緩存區(qū)還可以被其他的JSP頁面所引用。

雖然緩存能夠幫助極大地提升服務(wù)器的性能,但如果緩存的數(shù)據(jù)不能及時(shí)更新,則可能會(huì)影響具體的業(yè)務(wù)規(guī)則。OSCache提供的flush標(biāo)記能夠刷新緩存內(nèi)容,示例代碼如下:

      <cache:flush key="gf" scope="session" />

當(dāng)用戶處理某個(gè)動(dòng)作執(zhí)行上述代碼時(shí),緩存的內(nèi)容將被刷新。

主站蜘蛛池模板: 凤庆县| 永泰县| 拜城县| 新密市| 武陟县| 南昌市| 鹰潭市| 荣昌县| 孟州市| 唐山市| 库伦旗| 迁西县| 崇文区| 和静县| 玉山县| 托克逊县| 安宁市| 武夷山市| 抚远县| 屏山县| 江源县| 遵义县| 东台市| 清镇市| 南丰县| 奎屯市| 遂平县| 海宁市| 定安县| 昌图县| 惠来县| 平南县| 昌都县| 永清县| 高安市| 化州市| 遵义市| 隆安县| 竹山县| 新巴尔虎右旗| 原平市|