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