31、JAVA_WEB开发基础之servlet(2)
使用servlet需要依賴jar包:servlet-api.jar,下邊介紹一下關(guān)于servlet的一些api
Servlet接口
package javax.servlet;import java.io.IOException;public interface Servlet {//在servlet被載入后和實(shí)施服務(wù)前由servlet引擎調(diào)用。如果init()//產(chǎn)生溢出UnavailableException,則servle退出服務(wù)。public void init(ServletConfig config) throws ServletException;//返回傳遞到servlet的init()方法的ServletConfig對象 public ServletConfig getServletConfig();// 處理request對象中描述的請求,使用response對象返回請求結(jié)果 public void service(ServletRequest req, ServletResponse res)throws ServletException, IOException;//返回描述servlet的一個(gè)字符串 public String getServletInfo();//當(dāng)servlet將要卸載時(shí)由servlet引擎調(diào)用 public void destroy(); }下邊介紹一下一些與servlet相關(guān)的其他對象:
請求對象:javax.servlet.ServletRequeset,封裝了客戶端的請求信息,與協(xié)議無關(guān),可用于獲取請求中的屬性、參數(shù),獲取
請求的流對象、獲取編碼格式、獲取客戶端地址等功能。可通過getParameter方法獲取請求中封裝的參數(shù)。
響應(yīng)對象:javax.servlet.ServletResponse,用于將處理的結(jié)果返回給發(fā)出請求的客戶端,可用于作為輸出流及其內(nèi)容類型和長
度的包容器。可以以流的方式將返回信息寫出到客戶端。
配置參數(shù)對象:javax.servlet.ServletConfig,通過調(diào)用getServletConfig()方法來獲取ServletConfig對象,通過此對象可以獲取
到servlet的一些初始化配置參數(shù)。
web應(yīng)用對象:javax.servlet.ServletContext,通過ServletConfig對象來獲取ServletContext,它代表了當(dāng)前的web應(yīng)用,通過
它可以獲取到當(dāng)前web應(yīng)用的各方面信息。
下邊介紹針對Http協(xié)議開發(fā)的一些事項(xiàng)
在代碼層面說,Servlet并沒有遵從任何網(wǎng)絡(luò)傳輸協(xié)議,而我們平時(shí)開發(fā)時(shí)請求信息需遵循Http協(xié)議,所以Servlet針對Http協(xié)議擴(kuò)
展了一些專門針對Http協(xié)議開發(fā)的API,它們在java.servlet.http包下,下邊詳細(xì)介紹。
針對Http協(xié)議開發(fā)時(shí),直接繼承HttpServlet類即可,需根據(jù)自己的業(yè)務(wù)來對doPost、doGet方法進(jìn)行重寫,使用的都是http包下類
中的方法,開發(fā)比較容易,這是需要用到的請求對象則是HttpServletRequest,響應(yīng)對象是HttpServletResponse,等等。這里需
要介紹一下遵循Http協(xié)議開發(fā)時(shí)一些特殊的地方:HttpSession、get和post請求、轉(zhuǎn)發(fā)和重定向。
會(huì)話對象:javax.servlet.http.HttpSession,因?yàn)閔ttp協(xié)議是無狀態(tài)的協(xié)議,為了保證數(shù)據(jù)的一致性,HttpSession接口被
Servlet引擎用來實(shí)現(xiàn)HTTP客戶端和HTTP會(huì)話兩者的關(guān)聯(lián),用來在無狀態(tài)的HTTP協(xié)議下越過多個(gè)請求頁面來維護(hù)狀態(tài)和識別用
戶。此會(huì)話對象通過HttpServletRequest對象獲取。
GET和POST請求:
GET方式請求:超鏈接中的請求、直接在地址欄中使用?的方式連接參數(shù)的請求、表單設(shè)置成get方式時(shí)的請求。
POST方式請求:ajax中設(shè)置成post方式的請求、表單中設(shè)置成post方式的請求。
兩者的不同點(diǎn)如下:
1、提交形式不同:GET提交,請求的數(shù)據(jù)會(huì)附在URL之后(就是把數(shù)據(jù)放置在HTTP協(xié)議頭中),POST提交:把提交的數(shù)據(jù)放
置在是HTTP包的包體中。因此,GET提交的數(shù)據(jù)會(huì)在地址欄中顯示出來,而POST提交,地址欄不會(huì)改變。也因此GET方式的
請求不安全。
2、傳輸數(shù)據(jù)的大小不同: HTTP協(xié)議并沒有對傳輸?shù)臄?shù)據(jù)大小進(jìn)行限制,HTTP協(xié)議規(guī)范也沒有對URL長度進(jìn)行限制。對于get
請求特定瀏覽器和服務(wù)器對URL長度有限制;而對POST請求理論上數(shù)據(jù)不受限。但實(shí)際各個(gè)WEB服務(wù)器會(huì)規(guī)定對post提交數(shù)據(jù)
大小進(jìn)行限制get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不受限制。
3、 服務(wù)器端獲取數(shù)據(jù)的方式不同:對于get方式,服務(wù)器端用Request.QueryString獲取變量的值,對于post方式,服務(wù)器端用
Request.Form獲取提交的數(shù)據(jù)。
轉(zhuǎn)發(fā)和重定向:請求的兩種處理方式。
轉(zhuǎn)發(fā)的實(shí)現(xiàn):先通過request的getRequestDispatcher得到RequestDispatcher對象,然后用RequestDispatcher的forward方法進(jìn)
行轉(zhuǎn)發(fā)
重定向的實(shí)現(xiàn):直接調(diào)用 response的 sendRedirect 方法完成重定向
兩種方式的區(qū)別:
1、本質(zhì)區(qū)別:請求的轉(zhuǎn)發(fā)只發(fā)送了一次請求,而重定向發(fā)送了兩次請求
2、地址欄的地址的變化:轉(zhuǎn)發(fā)仍然是第一次發(fā)送請求的地址,而重定向是第二次發(fā)送請求的地址
3、request對象的變化:轉(zhuǎn)發(fā)中,最終servlet中的requeset對象和第一次請求的那個(gè)request是同一個(gè)對象;重定向中,最終的
servlet中的request對象和第一次請求的那個(gè)request對象不是同一個(gè)對象
4、轉(zhuǎn)發(fā)只能轉(zhuǎn)發(fā)給當(dāng)前web資源(另一個(gè)servlet),而重定向可以到任何資源
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的31、JAVA_WEB开发基础之servlet(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 松下新款 G9M2 相机国行价格公布:1
- 下一篇: 32、JAVA_WEB开发基础之jsp