淺談user cache Servlet
Servlet和JSP的一個重大的區(qū)別即是Servlet可以通過web.xml文件的配置讓Servlet在Web容器啟動時就自動啟動Servlet。可以利用Servlet的這個特性不變化的數(shù)據(jù)事先加載到Web應(yīng)用服務(wù)器中以便緩存使用。
假設(shè),我們系統(tǒng)的用戶在系統(tǒng)部署前就已經(jīng)創(chuàng)建好,以后不常發(fā)生變化,那么我們可以在Web應(yīng)用程序啟動時就將其下載緩存到Web應(yīng)用服務(wù)器內(nèi)存中,如果用戶發(fā)生變化可以手工調(diào)用這個Servlet進(jìn)行刷新。下面我們就通過Servlet向?qū)?chuàng)建這個user cache Servlet,它在Web容器啟動時自動下載并緩存系統(tǒng)所有用戶Id和用戶名:
1.啟動創(chuàng)建Servlet向?qū)В顚慡ervlet名字
2.選擇Servlet所要實現(xiàn)的方法
我們在前面已經(jīng)介紹了Servlet通過不同的doXxx()方法的響應(yīng) HTTP請求方式,你可以在向?qū)У牡?步選擇需要定義哪些doXxx()方法。默認(rèn)情況下doGet()方法被勾選,即通過HTTP GET請求方式訪問Servlet。通過帶參的URL訪問Servlet時,Servlet就用doGet()方法響應(yīng)這個請求。由于我們只是假設(shè)用戶數(shù)據(jù)不常變動,并不是說永遠(yuǎn)不變動,所以我們在Web容器初始化時,希望通過user cache Servlet自動加載用戶數(shù)據(jù)到緩存中,當(dāng)數(shù)據(jù)庫表T_USER的用戶數(shù)據(jù)發(fā)生變動時,我們可以手工調(diào)用user cache Servlet,讓其刷新緩存中的用戶數(shù)據(jù)。
Web容器啟動時自動初始化user cache Servlet,此時init()方法被調(diào)用,我們可以通過init()方法加載用戶數(shù)據(jù),當(dāng)用戶通過URL請求刷新用戶數(shù)據(jù)時,user cache Servlet通過doGet()方法響應(yīng)這個HTTP GET請求。也就是說,我們需要實現(xiàn)doGet()方法,所以我們接受向?qū)У哪J(rèn)設(shè)置
3.指定訪問Servlet的路徑
◆Name:user cache Servlet,Servlet在web.xml配置文件中所取的名字
◆URL pattern:/user cache Servlet,訪問這個Servlet的匹配路徑。指定這個訪問路徑后,假設(shè)Web應(yīng)用程序部署在http://localhost:8080/webModule下,則通過http://localhost:8080/webModule/user cache Servlet訪問Servlet。
直接按Finish創(chuàng)建Servlet。
打開web.xml文件,你可以找到關(guān)于user cache Servlet聲明和訪問的部署描述信息:
◆<Servlet>節(jié)點:描述Servlet的名字及類名。
◆<Servlet-mapping>節(jié)點:描述Servlet訪問匹配路徑。
雙擊工程窗格資源樹的webModule節(jié)點,JBuilder在內(nèi)容窗格中打開用于編輯web.xml文件的Web模塊DD編輯器(Web Module DD editor),此時結(jié)構(gòu)窗格顯示出web.xml文件的結(jié)構(gòu)
在init()初始化方法中利用User List.fill User()方法從數(shù)據(jù)庫中下載并緩存用戶記錄信息,在doGet()方法中也引用了User List.fill User(),用戶通過URL訪問user cache Servlet時,doGet()方法被調(diào)用,刷新緩存用戶數(shù)據(jù),并顯示"刷新成功"提示,其代碼如下所示:
- <web-app>
- …
- <servlet>
- <servlet-name>usercacheservlet</servlet-name>
- <servlet-class>bookstore.servlet.UserCacheServlet</servlet-class>
- <load-on-startup>2</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>usercacheservlet</servlet-name>
- <url-pattern>/usercacheservlet</url-pattern>
- </servlet-mapping>
- …
- </web-app>
【編輯推薦】