一、什么是servlet
我們?cè)诰W(wǎng)上瀏覽網(wǎng)頁(yè),需要一個(gè)web服務(wù)器,瀏覽網(wǎng)頁(yè)的過(guò)程就是瀏覽器通過(guò)HTTP協(xié)議與WEB服務(wù)器 交互的過(guò)程。在過(guò)去,大多是靜態(tài)網(wǎng)頁(yè),因此只須把資源放在WEB服務(wù)器上即可。如今隨著應(yīng)用的發(fā)展,客戶與服務(wù)器需要?jiǎng)討B(tài)的交互,為了實(shí)現(xiàn)這一目標(biāo),就需 要開(kāi)發(fā)一個(gè)遵循HTTP協(xié)議的服務(wù)器端應(yīng)用軟件,來(lái)處理各種請(qǐng)求。那么servlet是一個(gè)基于java技術(shù)的WEB組件,運(yùn)行在服務(wù)器端,我們利用 sevlet可以很輕松的擴(kuò)展WEB服務(wù)器的功能,使它滿足特定的應(yīng)用需要。servlet由servlet容器管理,servlet容器也叫 servlet引擎,是servlet的運(yùn)行環(huán)境,給發(fā)送的請(qǐng)求和響應(yīng)之上提供網(wǎng)絡(luò)服務(wù)。比如tomcat就是我們常用的一個(gè)servlet容器,其接受 客戶端并做出響應(yīng)的步驟如下:
1、客戶端訪問(wèn)WEB服務(wù)器,發(fā)送HTTP求
2、WEB服務(wù)器接收到請(qǐng)求后,傳遞給servlet容器
3、servlet容器加載servlet,產(chǎn)生servlet實(shí)例,并向其傳遞表示請(qǐng)求和響應(yīng)的對(duì)響
4、servlet得到客戶端的請(qǐng)求信息,并進(jìn)行相應(yīng)的處理
5、servlet實(shí)例把處理結(jié)果發(fā)送回客戶端,容器負(fù)責(zé)確保響應(yīng)正確送出,同時(shí)將控制返回給WEB服務(wù)器
二、servlet接口
我們實(shí)際開(kāi)發(fā)應(yīng)用中,一般不需要去研究Http協(xié)議,只要擴(kuò)展servlet接口,即可實(shí)現(xiàn)web服務(wù)器應(yīng)用程序的開(kāi)發(fā)。servlet接口在包javax.servlet中,接口中定義了五種方法:
public void init (ServletConfig config) throws ServletException
public void service(ServletRequest req,ServletRespone res) throws ServletException,java.io.IOException
public void destroy()
public ServletConfig getServletConfig()
public java.lang.String getServletinfo()
其中service方法,在接受到客戶端請(qǐng)求時(shí),被容器調(diào)用
在javax.servlet 包中給我們提供了一個(gè)抽像類GenericServlet實(shí)現(xiàn)了servlet接口。javax.servlet.http包中提供一個(gè)抽像類 HttpServlet,它繼承了GenericServlet類,HttpServlet中提供了兩種重載service的方法,public void service (ServletRequest req,ServletResponse res) throws ServletException,java.io.IOException;以用public void service(HttpServletRequest req,HttpServletResponse res) throws ServletException,java.io.IOException第一種方法調(diào)用第二種方法,第二種方法根據(jù)用戶請(qǐng)求的類型,相應(yīng)的調(diào)用 doGet,doPost等共七種方法,我在以往的開(kāi)發(fā)中,只用到過(guò)doGet,doPost方法,因此一般來(lái)說(shuō),我們自已寫(xiě)的servlet類只需要繼 承HttpServlet類,重載doGet和doPost方法就行了。
除此之外,需要了解一下ServletConfig, ServletRequest ,ServletResponse,HttpServletRequest,HttpServletResponse接口。這些接口有什么方法,實(shí)現(xiàn)這些 接口的實(shí)例何時(shí)被容器注入servlet實(shí)例中,理解了這些內(nèi)容,對(duì)servlet可以說(shuō)已經(jīng)撐握了。