? ? ? ? ? ? ? ? ? ? ? Web Http Servlet
web
Java Web 是用 Java 技術(shù)來解決相關(guān) web 互聯(lián)網(wǎng)領(lǐng)域的技術(shù)總和
一種是基于瀏覽器/服務(wù)器的 B/S 結(jié)構(gòu)厌丑,另一種是基于客戶端/服務(wù)器的 C/S 結(jié)構(gòu)
Http
HTTP 協(xié)議(Hypertext Transfer Protocol, 超文本傳輸協(xié)議),是一個(gè)客戶端請求和回應(yīng)
的 標(biāo)準(zhǔn)協(xié)議沃饶,這個(gè)協(xié)議詳細(xì)規(guī)定了瀏覽器和萬維網(wǎng)服務(wù)器之間互相通信的規(guī)則阁吝。用戶輸入地址
和端口號(hào)之后就可以從服務(wù)器上取得所需要的網(wǎng)頁信息违柏。
通信規(guī)則規(guī)定了客戶端發(fā)送給服務(wù)器的內(nèi)容格式健盒,也規(guī)定了服務(wù)器發(fā)送給客戶端的內(nèi)容 格
式〔不伲客戶端發(fā)送給服務(wù)器的格式叫“
請求協(xié)議”渊鞋;服務(wù)器發(fā)送給客戶端的格式叫“響應(yīng)協(xié)議
http 請求由三部分組成绰更,分別是:請求行、請求頭篓像、請求正文
格式
請求行
請求頭 1
請求頭 2
… 請
求空行
請求體
HTTP 響應(yīng)也是由三個(gè)部分
組成动知,分別是:狀態(tài)行、消息報(bào)頭员辩、響應(yīng)正文
格式
狀態(tài)行
響應(yīng)頭 1
響應(yīng)頭 2
… 響
應(yīng)空行
響應(yīng)體
Servlet
一盒粮、創(chuàng)建Web項(xiàng)目
1、在左側(cè)空白右鍵奠滑,選擇"New"丹皱,再選擇"Other"
2、在文本框輸入"web"宋税,選擇"Dynamic Web Project"
3摊崭、設(shè)置項(xiàng)目名稱、服務(wù)器版本(target runtime)杰赛、web項(xiàng)目的版本(Dynamic web module version)為2.5版本
4呢簸、選擇"Next",再"Next",設(shè)置context root(站點(diǎn)名根时,即項(xiàng)目對外訪問路徑)
二瘦赫、修改Web項(xiàng)目的站點(diǎn)名
1、選擇項(xiàng)目右鍵蛤迎,選擇"Properties"
2确虱、選擇"Web Project settings",,設(shè)置context root
三替裆、創(chuàng)建Servlet類
方式一:通過繼承HttpServlet類創(chuàng)建Servlet
1校辩、創(chuàng)建普通Java類
2、繼承HttpServlet類
3辆童、重寫service()方法
4宜咒、設(shè)置web.xml
? <!-- servlet? -->
? <servlet>
? <!-- 在當(dāng)前web.xml中,servlet標(biāo)簽中的servlet-name的值必須唯一-->
? <servlet-name>Servlet01</servlet-name>? <!-- 給服務(wù)器看的胸遇,servlet的名稱荧呐;servlet標(biāo)簽中的servlet-name要與servlet-mapping中的servlet-name保持一致? -->
? <servlet-class>com.shsxt.servlet.Servlet01</servlet-class>? <!-- servlet類的全路徑(包名+類名)汉形;按住ctrl鍵纸镊,能夠點(diǎn)進(jìn)去,則表示路徑正確? -->
? </servlet>
? <!-- servlet的映射配置 -->
? <servlet-mapping>
? <servlet-name>Servlet01</servlet-name> <!-- 給服務(wù)器看的概疆,servlet的名稱逗威;servlet-mapping標(biāo)簽中的servlet-name要與servlet中的servlet-name保持一致? -->
? <url-pattern>/ser01</url-pattern> <!-- 給瀏覽器看的,servlet資源的對外訪問路徑(注意路徑前面要加"/") url-pattern的值是唯一的 -->
? </servlet-mapping>
方式二:繼承GenericServlet類
1岔冀、創(chuàng)建普通Java類
2凯旭、繼承GenericServlet類
3、實(shí)現(xiàn)service()方法
4使套、設(shè)置web.xml
方式三:實(shí)現(xiàn)Servlet接口
1罐呼、創(chuàng)建普通Java類
2、實(shí)現(xiàn)Servlet接口
3侦高、實(shí)現(xiàn)方法
4嫉柴、設(shè)置web.xml
四、常見報(bào)錯(cuò)場景
1奉呛、修改了web.xml配置文件计螺,需要重啟服務(wù)器(配置才會(huì)生效)
2、url-pattern標(biāo)簽設(shè)置值時(shí)為未添加"/"
java.lang.IllegalArgumentException: Invalid <url-pattern> ser01 in servlet mapping
3瞧壮、url-pattern的值不唯一
java.lang.IllegalArgumentException: The servlets named [Servlet02] and [Servlet03] are both mapped to the url-pattern [/ser02] which is not permitted
4登馒、如果項(xiàng)目站點(diǎn)名與資源路徑都正確,訪問時(shí)還是顯示404(請重啟eclipse)
5咆槽、如果啟動(dòng)服務(wù)器時(shí)陈轿,出現(xiàn)端口沖突的異常
打開任務(wù)管理器,將與Java相關(guān)的進(jìn)程全部結(jié)束