什么是servlet?---总结一
??????? Servlet(Servlet Applet),全稱Java Servlert .是用Java編寫的服務器端程序。其主要功能在與交互式的瀏覽和修改數據,生成動態Web內容。狹義的servlet是指Java語言實現的一個接口,廣義的Servlet是指任何實現了這個Servlet的類,一般情況下,人們將Servlet理解為后者。比如HttpServlet類繼承自Servlet類,可以利用繼承Http Servlet? 來實現Http請求,當不是Http請求的時候,也可以定義其他形式的Servlet。
??????? Servlet 運行于支持Java的服務器中,從現實上講,servlet 可以響應任何類型的請求,但是絕大多數情況下Servlet只用于來擴展基于THHP協議的Web服務器
??????? 最早支持Servlet標準的是JavaSoft的Java Web Server。此后,一些其它基于Java的Web服務器開始支持標準的Servlet。
?????? Servlet編程需要使用到javax.servlet和javax.servlet.http兩個包下面的類和接口,在所有的類和接口中,javax.servlet.servlet接口最為重要。所有的servlet程序都必須實現該接口和繼承實現了該接口的類。以下是Servlet的主要類和接口:
??????? javax.servlet.ServletConfig;
??????? javax.servlet.ServletException;
??????? javax.servlet.HttpServlet;
??????? javax.servlet.HttpServletRequest;
??????? javax.servlet.HttpServletResponse;
??????? javax.servlet.HttpSession;
??????? javax.servlet.Cookie;
??????? javax.servlet.ServletContext;
??????? javax.servlet.GenericServlet;
(1)javax.servlet.Servlet;?? //Servlet接口
??????? 擁有方法:
?public void init(ServletConfig parma1) throws ServletException
//該函數用于初始化Servlet,該函數只會被調用一次,當用戶第一次訪問該Servlet的時候被調用
public? ServletConfig getServletConfig()???
// 用于得到servlet配置文件 與生命周期無關。
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException
// 用于處理業務邏輯,程序員應該吧業務邏輯代碼寫作這里。用戶在每次訪問servlet的時候都會被調用,ServletRequest對象用于獲得客戶端信息,ServletResponse對象用于向客戶端(瀏覽器)返回信息
public void destroy()? // 銷毀Servlet實例并釋放內存,關閉Tomcat都會調用這個函數。
鏈接:https://www.zhihu.com/question/21416727/answer/65253540
Servlet體系結構
servlet首先是一個接口,GenerivServlet呢實現了這個接口。
他們都是屬于javax.servlet.*;的這個包里面的
此外,在javax.servlet.http*;的這個包里面呢,其實也含有一個重要的servlet類叫httpServlet
首先我們看到ie瀏覽器,我們講servlet也好,講jsp也罷,首先我們要明確的是這是一個bs的體系結構,所以說他必然有瀏覽器的,那么瀏覽器要去訪問Tomcat其中的某一個servlet或者說是jsp的時候呢,必須在ie瀏覽器當中輸入
http://........之類的命令敲了回車鍵之后瀏覽器就會向你指定的Tomcat發送http請求的,這個請求會被Tomcat的Web服務器的這個模塊接收,web服務器處理之后呢會轉發給Tomcat的容器部分進行處理,他會幫助ie瀏覽器找到這個請求想要找到的servlet,這時呢在容器里面的行為要么是在容器內再向數據庫發送操作數據庫的命令,要么呢直接返回結果 ,其實就是靜態的html頁面,當頁面被web服務器模塊接收到之后呢,他會將靜態頁面返回給那個發送請求的那個ie瀏覽器,ie瀏覽器得到這個結果之后呢,就會自己顯示出來,然后用戶就能看到結果,所以可以將我們的結果分成三個部分,第一個部分是ie瀏覽器,第二個呢是Tomcat模塊,第三個呢就是數據庫模塊。
其實開發servlet有三種方法,一種是實現servlet接口,一種是繼承GernericServlet 還有一種是繼承HttpServlet。 為什么會有三種方法呢?因為這個servlet這個技術并不是說一出現之后就是成熟的,他經歷過這三個發展的階段,因此它具有這三種方式,其實在最先前是實現servlet接口方法來開發的,后面的時候技術人員發現這樣寫似乎不太方便,所以又發展出來一個叫做繼承GenericServlet的方法來實現,后來又發現這個也不是很方便,所以呢又發展出來了繼承 HttpServevlet方式來實現
為了使學習更加深刻,我會把三種方式都實現下。
Servlet開發是很簡單的事情特別是用一些高級工具來開發的話,特別是像JBuilder來實現的話只要點一下就行了,但很遺憾的這樣的高級工具他會隱藏太多的細節,這樣的話就不利于我們的學習,特別是部署之類的他就給你全寫了,那么你就不好學到他servlet的底層運行機制和原理,為了讓大家理解的更為深刻,我還是先用JCreater來實現開發Servlet,后面當然會用到eclipse 或者JBuilder這些高級工具來開發。我們先過一點苦日子,然后再過一點好日子,這樣的話知識更加扎實一點了。
下面我們就來真正的來開發Servlet,首先用什么方法呢?用實現接口的方法來實現
在這里呢會引入servlet的生命周期這個特點。這第一個servlet非常簡單,就是寫一個Hello World 在瀏覽器中輸出。教程依照先簡單,再難,再綜合的順序進行。
下面是Servlet的開發流程。
1:首先在Tomcat的主目錄下的webapp下面建立一個WEB-INF文件夾
2:然后再WEB-INF文件夾下建立一個web.xml文件,記錄網站的配置信息
建立classes子文件夾 存放你的servlet
當然這個操作你可以自己完成 也可以在root目錄下拷貝一份
大家可以看到 這個地方傳遞過來了一個信息,什么信息呢?
對于Tomcat來講,你所有的這些網站,頁面對他來講都是web應用,他看來就是web應用,就是在webapp下面建立我們的網站。
比如建立一個文件夾叫做mywebsite,接下來文件夾中放什么東西呢,我們要放的就是WEB-INF文件夾,在里面放置web.xml文件以及classes文件夾和lib文件夾。
WEB-INF這個要注意大小寫,要注意大小寫要一模一樣才行的,名字都要一樣才行的。
在這個文件夾下進行上述兩種操作,你可能會去問,為什么要這樣做呢?這個倒是沒有辦法的事情 因為這就是規范。
classes當然是存servlet用的 ,那個lib文件夾用來做什么呢?
用來存放這個應用匯用到的一些jar包,比如數據庫啦之類的,文件的下載要用的包都放在lib里面去,就是lib庫。
//這是我的第一個Servlet 使用實現Servlet接口的方式來開發package com.tsinghua;import java.io.IOException; import java.io.PrintWriter;import javax.servlet.Servlet; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse;public class Hello implements Servlet {// 該函數用于初始化該servlet, 類似于我們的類的構造函數// 該函數只是會被調用一次, 當用戶第一次訪問該servlet的時候被調用public void init(ServletConfig parm1) throws ServletException{System.out.println("init it !");}// 用于得到servlet配置文件 與生命周期無關public ServletConfig getServletConfig(){return null;}// service 函數用于處理業務邏輯// 程序員應當把業務邏輯代碼寫在這里// 該函數在用戶每次訪問servlet的時候都會被調用// ServletRequest 對象用于獲得客戶端信息,ServletResponse 對象用于向客戶端返回信息(客戶端可以理解為瀏覽器)// servelt jsp b/spublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException{System.out.println("service it");PrintWriter pw = res.getWriter();pw.println("hello world");}public String getServletInfo(){return " ";}// 銷毀servlet實例(釋放內存)// 1 reload 該servlet(webApp)// 2 關閉Tomcat 或者說 關機之后 都會調用這個函數public void destroy(){System.out.println("destory it");}}以上就是實現servlet接口的方式來開發servlet方式來代碼實現
其實以上方法都是回調函數 都是會在特定的時候特定的環境下自動調用的
其中iinit() 和 destroy() 都是只會調用一次的 但是 service 會在每一次都會被調用的
到現在還沒有完成 因為如果你想讓別人訪問到你的wervlet 的話 你就要部署你servlet
下面講授關于部署servlet的步驟(在web.xml 進行配置設置)
如果你要問為什么進行部署,那么還是一句話,規范。
<servlet><!--給你的servlet起名字,任意的--><servlet-name>hello_servlet</servlet-name><!--指明servlet的路徑,包名+類名 注意類名后不能加上java--><servlet-class>com.tsinghua.Hello</servlet-class> </servlet><servlet-mapping><!--mapping 自然就是映射了 于是乎 這個同上,一致--><servlet-name>hello_servlet</servlet-name><!--這是瀏覽器中輸入的訪問該servlet的url 任意的--><url-pattern>/sp</url-pattern> </servlet-mapping> 用下面的控制臺命令編譯Hello.java之后,我們就可以啟動Tomcat來進行訪問了啟動Tomcat的bin目錄下的startup.bat之后,
啟動Tomcat的bin目錄下的startup.bat之后,
輸入 http://127.0.0.1:8080/guowuxin/sp
多次訪問之后就能體會到Servlet的生命周期
訪問結果
總結
以上是生活随笔為你收集整理的什么是servlet?---总结一的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 常用流_Java流类图结构:
- 下一篇: TFS2010 删除工作区(同时删除工作