1、什麼是Servlet?
sun公司開發的一種用於擴展web服務器功能的
組件規範。
1)擴展web服務器功能
a,CGI:
common gateway interface(公共網關接口)。
當瀏覽器發送請求給web服務器(比如apache web
server),web服務器判斷請求是否是動態資源的請求,
如果是,則調用相應的CGI程序(使用perl,c等語言
開發的,符合CGI接口定義的程序,該程序需要事
先保存到web服務器端特定的目錄下面)去處理。
問題:
編程相對比較麻煩(CGI程序需要處理
web服務器傳遞過來的參數,即需要分
析原始的請求參數)。另外,CGI寫的程序
可移植性也比較差。
b,組件技術
組件:
符合一定規範,實現部分功能的軟件模塊,該
模塊必須要部署到相應的容器當中才能運行。
容器:
提供組件的運行環境,並且管理組件的
生命周期的一種程序。
2)組件規範
Servlet是一種組件,不依賴於容器來運行,
也就是說,我們開發的Servlet,可以在符合
相同的規範的不同的容器當中運行。
當web服務器(比如apache webserver)收到請求之後,
會依據請求的類型(比如,是動態資源的請求)
會調用容器(比如tomcat),容器會調用Servlet來處理。
容器在調用Servlet之前,會先將請求參數分析出
來,這樣,Servlet不用再去分析請求參數(
相對於CGI技術,開發起來更方便)。
2、如何開發一個Servlet?
step1 寫一個java類,實現Servlet接口或者
繼承HttpServlet。
step2 編譯
step3 打包
建一個文件夾
appname(名稱任意,最好有一定的含義)
WEB-INF
classes(.class文件)
lib(放.jar文件,可選)
web.xml(描述servlet,比如如何訪問)
step4 部署
將step3對應的整個文件夾(或者
對整個文件夾使用jar命令壓縮成
.war文件)拷貝到web服務器(
所有的servlet容器,比如tomcat,
除了是一個容器以外,同時,也
具有web服務器的相應的功能,所以,
以後,不再區分servlet容器與web
服務器,統稱為web服務器)特定的
文件夾下面。
step5 啟動服務器,訪問servlet
http://ip:port/appname/servlet url-pattern
http://localhost:8080/firstweb/hello
3、tomcat的安裝與簡單的使用
1)安裝
a,將tomat.zip解壓到/home/soft01下。比如
解壓之後 /home/soft01/apache-tomcat5.5(
主文件夾)。
b,配置環境變量
cd /home/soft
vi .bash_profile
JAVA_HOME: jdk的安裝路徑
CATALINA_HOME:/home/soft01/apache-tomcat5.5
PATH:/home/soft01/apache-tomcat5.5/bin
c,啟動tomcat
cd /home/soft01/apache-tomcat5.5/bin
sh startup.sh (startup.bat)
sh catalina.sh run(如果上面命令有問題,換這個)
在瀏覽器地址欄輸入http://localhost:8080
d,關閉tomcat
cd /home/soft01/apache-tomcat5.5/bin
sh shutdown.sh
2)tomcat各個文件夾的作用(了解)
a,bin : 可執行文件,比如啟動和關閉服務器的命令。
b,common: 可以將一些jar文件放到這兒,所有
部署在這台服務器上程序都可以訪問這些jar文件。
c,conf:服務器的配置文件(比如server.xml,
web.xml,這些配置文件會影響到服務器的運行,
一般需要重新啟動服務器才能生效)。
d,webapps: tomcat的部署文件夾。
e,work:服務器在運行過程當中生成的一些臨時
文件。
4、Servlet是如何運行的
在瀏覽器地址欄輸入了
http://localhost:8080/firstweb/hello
step1 瀏覽器依據ip,port建立與服務器之間的連接。
step2 瀏覽器會將一些數據(包括請求資源路徑、
請求參數、瀏覽器自身的一些信息)按照http
協議打成一個數據包(請求數據包),然後發送
給服務器。
step3 服務器分析請求數據包(解包),將分析的
結果封裝成一個對象(是一個符合
HttpServletRequest接口的對象,一般稱為請求
對象),然後再創建一個響應對象(是一個
符合HttpServletResponse接口的對象)。然後,
step4 服務器分析請求資源路徑(/firstweb/hello),
稱依據firstweb(應用名)找到webapps下面對應的
文件夾,然後,使用/hello去web.xml文件中查找
對應的Servlet配置。依據Servlet類名創建
相應的實例。接下來調用該實例的service方法,
在service方法裡面,可以通過request(請求對象)
方便地獲取請求參數,也可以將處理結果存放到
response(響應對象)。服務器會將response中的數據
取出來,打包(按照http協議,將處理結果轉換成
一個數據包),然後發送給瀏覽器。
step5 瀏覽器從響應數據包中取出數據,生成相應的
界面。
5、使用myeclipse來開發servlet
1)配置myeclipse
讓myeclipse管理tomcat(啟動、關閉、部署)
2)建一個web工程
3)部署
4)訪問servlet
6、常見錯誤
1) 404錯誤:
404(是一個狀態碼,由w3c定義,不同的數字
代表不同的含義)
產生這個錯誤的原因:
輸入的路徑不正確。
解決方式:
檢查你輸入的路徑。
正確的路徑應該是:
http://ip:port/appname/servlet url-pattern
2) 500錯誤:
產生這個錯誤的原因:
程序編寫錯誤或者系統內部出錯
解決方式:
檢查源文件,包括相應的配置文件。
3) 405錯誤:
產生這個錯誤的原因:
服務器只認識service方法,如果沒有提供這個
方法,則服務器會調用HttpServlet的service方法。
該方法會報錯。
解決方式:
檢查service方法的簽名