Java Web Servlet
Java Web Servlet
Servlet是在服務(wù)器上運(yùn)行的小程序。一個(gè)Servlet就是一個(gè)Java類,并且可以通過“請(qǐng)求-響應(yīng)”編程模型來訪問的這個(gè)駐留在服務(wù)器內(nèi)存里的Servlet程序。
Servlet可完成以下功能:
- 讀取客戶端(瀏覽器)發(fā)送的顯式的數(shù)據(jù)。這包括網(wǎng)頁上的 HTML 表單,或者也可以是來自 applet 或自定義的 HTTP 客戶端程序的表單。
- 讀取客戶端(瀏覽器)發(fā)送的隱式的 HTTP 請(qǐng)求數(shù)據(jù)。這包括 cookies、媒體類型和瀏覽器能理解的壓縮格式等等。
- 處理數(shù)據(jù)并生成結(jié)果。這個(gè)過程可能需要訪問數(shù)據(jù)庫,執(zhí)行 RMI 或 CORBA 調(diào)用,調(diào)用 Web 服務(wù),或者直接計(jì)算得出對(duì)應(yīng)的響應(yīng)。
- 發(fā)送顯式的數(shù)據(jù)(即文檔)到客戶端(瀏覽器)。該文檔的格式可以是多種多樣的,包括文本文件(HTML 或 XML)、二進(jìn)制文件(GIF 圖像)、Excel 等。
- 發(fā)送隱式的 HTTP 響應(yīng)到客戶端(瀏覽器)。這包括告訴瀏覽器或其他客戶端被返回的文檔類型(例如 HTML),設(shè)置 cookies 和緩存參數(shù),以及其他類似的任務(wù)。
【手工編寫Servlet】
繼承HttpServlet
重寫doGet()或者doPost()方法
在web.xml中注冊(cè)Servlet
Servlet的裝載三種情況:
1、自動(dòng)裝載:某些Servlet如果需要在Servlet容器啟動(dòng)時(shí)就加載,需要在web.xml下它的標(biāo)簽里中,添加優(yōu)先級(jí)代碼:
<Servlet><load-on-startup>1</load-on-startup></Servlet>數(shù)字越小表示該servlet的優(yōu)先級(jí)越高,會(huì)先于其他自動(dòng)裝載的優(yōu)先級(jí)較低的先裝載
Servlet容器啟動(dòng)后,客戶首次向某個(gè)Servlet發(fā)送請(qǐng)求時(shí),Tomcat容器會(huì)加載它
當(dāng)Servlet類文件被更新后,也會(huì)重新自動(dòng)加載,Servlet是長(zhǎng)期駐留在內(nèi)存里的。某個(gè)Servlet一旦被加載,就會(huì)長(zhǎng)期存在于服務(wù)器的內(nèi)存里,直到服務(wù)器關(guān)閉,Servlet被裝載后,Servlet容器創(chuàng)建一個(gè)Servlet實(shí)例并且調(diào)用Servlet的init()方法進(jìn)行初始化。在Servlet的整個(gè)生命周期內(nèi),init()方法只被調(diào)用一次。
Servlet配置:
<servlet><!-- 聲明Servlet對(duì)象 --><servlet-name>MyServlet</servlet-name><!-- 上面一句指定Servlet對(duì)象的名稱 --><servlet-class>com.servlet.MyServlet</servlet-class><!-- 上面一句指定Servlet對(duì)象的完整位置,包含包名和類名 --></servlet><servlet-mapping><!-- 映射Servlet --><servlet-name>MyServlett</servlet-name><!--<servlet-name>與上面<Servlet>標(biāo)簽的<servlet-name>元素相對(duì)應(yīng),不可以隨便起名 --><url-pattern>/MyServlet</url-pattern><!-- 上面一句話用于映射訪問URL --></servlet-mappingServlet生命周期:
Servlet 生命周期可被定義為從創(chuàng)建直到毀滅的整個(gè)過程。以下是 Servlet 遵循的過程:
- Servlet 通過調(diào)用 init () 方法進(jìn)行初始化。
- Servlet 調(diào)用 service() 方法來處理客戶端的請(qǐng)求。
- Servlet 通過調(diào)用 destroy() 方法終止(結(jié)束)。
- 最后,Servlet 是由 JVM 的垃圾回收器進(jìn)行垃圾回收的。
ServletConfig
ServletConfig是針對(duì)特定的Servlet的參數(shù)或?qū)傩浴ervletConfig是表示單獨(dú)的Servlet的配置和參數(shù),只是適用于特定的Servlet。從一個(gè)servlet被實(shí)例化后,對(duì)任何客戶端在任何時(shí)候訪問有效,但僅對(duì)本servlet有效,一個(gè)servlet的ServletConfig對(duì)象不能被另一個(gè)servlet訪問。
初始化參數(shù)為局部的
<servlet><servlet-name>ServletConfigDemo</servlet-name><servlet-class>com.yyz.servletconfig.ServletConfigDemo</servlet-class><init-param><param-name>xxx</param-name><param-value>yyy</param-value></init-param></servlet><servlet-mapping><servlet-name>ServletConfigDemo</servlet-name><url-pattern>/servlet/ServletConfigDemo</url-pattern></servlet-mapping>調(diào)用形式:
//獲取指定的初始化參數(shù) String value = config.getInitParameter("xxx"); response.getOutputStream().write(value.getBytes()); //獲取所有的初始化參數(shù) Enumeration<String> e = cofig.getInitParameterNames(); while(e.hasMoreElements()){String name = e.nextElement();value = config.getInitParameter(name);response.getOutputStream().write((name+"="+value+"<br/>").getBytes()); }ServletContext
一個(gè)ServletContext對(duì)象表示了一個(gè)Web應(yīng)用程序的上下文。
Servlet上下文:Servlet上下文提供對(duì)應(yīng)用程序中所有Servlet所共有的各種資源和功能的訪問。Servlet上下文API用于設(shè)置應(yīng)用程序中所有Servlet共有的信息。Servlet可能需要共享他們之間的共有信息。運(yùn)行于同一服務(wù)器的Servlet有時(shí)會(huì)共享資源,如JSP頁面、文件和其他Servlet。
初始化參數(shù)為全局的
功能:
獲取web應(yīng)用程序的初始化參數(shù)
記錄日志
application域范圍的屬性
訪問資源文件
獲取虛擬路徑所映射的本地路徑
web應(yīng)用程序之間的訪問
ServletContext的其他方法
?
總結(jié)
以上是生活随笔為你收集整理的Java Web Servlet的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 内核参数:meminfo
- 下一篇: Java Web Jsp