|
# 1.什么是Servlet? sun公司制訂的一種用來擴(kuò)展web服務(wù)器功能的組件規(guī)范。 ## (1)擴(kuò)展web服務(wù)器功能 早期的web服務(wù)器(apache web server,iis) 只能處理靜態(tài)資源的請(qǐng)求(即需要事先將html文件 寫好并添加到服務(wù)器上),不能夠處理動(dòng)態(tài)資源的 請(qǐng)求(即需要計(jì)算,生成html)。所以,需要擴(kuò)展 這些web服務(wù)器的功能。 (了解) 早期使用CGI程序來擴(kuò)展。 CGI(Common Gateway Interface): 通用網(wǎng)關(guān)接口,可以使用c,perl等來開發(fā)符合 CGI接口規(guī)范的程序。CGI程序開發(fā)繁瑣,不好 移值,所以用得比較少了。 ## (2)組件規(guī)范 ### 1)什么是組件? 符合規(guī)范,具有部分功能,并且需要部署到相應(yīng)的 容器里面才能運(yùn)行的軟件模塊。 Servlet就是一個(gè)符合Servlet規(guī)范的組件,需要部署 到Servlet容器里面才能運(yùn)行。 ### 2)什么是容器? 符合規(guī)范,提供組件的運(yùn)行環(huán)境的程序。 Servlet容器(比如Tomcat 雄貓)也是要符合 相應(yīng)的Servlet規(guī)范。 Servlet容器提供Servlet組件的運(yùn)行環(huán)境(提供 網(wǎng)絡(luò)相關(guān)的服務(wù))。  ## (了解) a.tomcat也是一個(gè)簡(jiǎn)單的web服務(wù)器(其實(shí), 大部分的Servlet容器同時(shí)也是一個(gè)簡(jiǎn)單的web 服務(wù)器)。 b.對(duì)于大型的web應(yīng)用,最好要安裝一個(gè)專業(yè)的 web服務(wù)器(比如apache web server),由這些 服務(wù)器來抗壓(并發(fā)請(qǐng)求量很大),另外,將 靜態(tài)資源(html)存放到這些web服務(wù)器上面, Servlet容器只負(fù)責(zé)計(jì)算。 # 2.如何寫一個(gè)Servlet? ## step1.寫一個(gè)java類,實(shí)現(xiàn)Servlet接口或者 繼承HttpServlet抽象類。 ## step2.編譯。 ## step3.打包(即將Servlet變成一個(gè)組件) 要?jiǎng)?chuàng)建一個(gè)具有如下結(jié)構(gòu)的文件夾: appname (應(yīng)用名,可以自定義) WEB-INF (固定寫法) classes(固定寫法,存放 .class文件) lib(可以沒有,存放 .jar文件) web.xml(固定寫法,部署描述文件) ## step4.部署 將step3創(chuàng)建好的整個(gè)文件夾拷貝到容器指定的位置。 注: 可以將step3創(chuàng)建好的整個(gè)文件夾使用jar 命令壓縮成.war文件,然后再拷貝。 ## step5.啟動(dòng)容器,訪問Servlet。 打開瀏覽器,輸入 http://ip:port/appname/url-pattern。 注: ip,port:容器所在的機(jī)器的ip地址,容器所 監(jiān)聽的端口號(hào)(tomcat默認(rèn)的端口是 8080)。 url-pattern:在web.xml中定義。 # 3. Servlet運(yùn)行過程 比如,在瀏覽器地址欄輸入 http://ip:port/day01/hello?username=Giving hello Giving   # 4. 常見問題及解決方式 ## (1)404 ### a. 404是一個(gè)狀態(tài)碼,表示服務(wù)器找不到對(duì)應(yīng)的資源。 b. 產(chǎn)生的原因: b1.請(qǐng)求路徑寫錯(cuò)。 b2.沒有部署成功。 ## (2)500 a. 500也是一個(gè)狀態(tài)碼,表示服務(wù)器運(yùn)行出錯(cuò)。 b. 產(chǎn)生的原因: b1.配置文件寫錯(cuò)。 b2.源代碼出錯(cuò)。 比如沒有繼承HttpServlet。 代碼不嚴(yán)謹(jǐn),比如對(duì)用戶的輸入的數(shù)據(jù) 沒有做檢查就做強(qiáng)制轉(zhuǎn)換。 ## (3)405 a.405也是一個(gè)狀態(tài)碼,表示服務(wù)器找不到處理方法。 b.產(chǎn)生的原因: a.service方法不合法:  |
|
|