什么是Servlet?对Servlet技术的浅尝解析
1.什么是Servlet技術
? ? ?? Servlet全稱Java Servlet,是一個基于java技術的Web組件,運行在服務器端,由Servlet容器所管理,用于生成動態的內容。狹義Servlet是指Java語言實現的一個接口,廣義的Servlet是指任何實現了這個Servlet接口的類。【主要處理客戶端傳過來的HTTP請求,并解析返回一個響應】
2.手動創建Servlet的三種方式
?
- 實現Servelt接口:
????????????????init()、*service()、getServletConfig()、getServletInfo() 、destroy()、
- 繼承GenericServlet:
????????????????service()
- 繼承HttpServlet:
????????????????doGet()、doPost()
3.Servlet的生命周期:
????????????【注意:整個過程都是由Servlet容器同一管理調度,會生成很多對象和方法執行不同的功能且都是自動裝載無需用戶操作,用戶只需要根據Servlet規范創建一個servlet,即生成一個特定的類即可】
? ? ? ? ? 瀏覽器發送http請求->web服務器接收請求轉發至->Servlet容器->實例化一個Servlet對象->調用init()方法初始化Servlet參數信息->調用service()方法獲取請求信息【注意:Servlet容器中自動生成HttpServletRequest對象封裝請求信息】,并且向瀏覽器生成響應【注意:Servlet容器中自動生成HttpServletResponse對象封裝響應信息】->Servlet將響應結果返回至容器->容器再將結果返回至客戶端界面顯示->最后響應結束關閉web服務器時會自動調用destroy()銷毀servlet對象【如果同一時間收到另一個請求信息,servlet對象不另外生成且init()方法也不再執行
4.普通servlet開發和使用eclipse開發的本質區別
- ? ? 普通servlet開發流程:
????????根據tomcat默認web項目路徑在/webapps/下新建一個web項目,且架構要符合tomcat標準!具體查看tomcat自帶的/webapps/manager案例!->根據servlet規范創建一個servlet即生成一個特定類(三種方法)->導入相關jar包->編譯成class文件后放入特定web工程/WEB-INF/classes目錄下->在web工程/WEB-INF/web.xml中部署servlet配置信息,【切記:項目的根路徑為/表示http://127.0.0.1:8080/web工程名】
- eclipse創建servlet流程(第三種開發方式):
????????新建web工程項目(自動生成web項目架構,不需要普通開發中的手動創建)->綁定tomcat服務器(解決了普通開發流程中的手動添加jar包并發布項目至服務器的過程)->創建一個servlet類(eclipse插件自動繼承并生成指定的url映射和實現相關方法,不需要普通開發中手動編程和web.xml配置)
- 結論:
????????使用eclipse開發大大提高了開發效率,但是我們也一定要了解普通開發流程,這樣才能更好的理解servlet開發的底層實現,為框架學習打下基礎!
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 附錄:對上述3的補充即完整的Servlet運行機制
? ? ? ? 瀏覽器發送http請求->web服務器接收請求轉發至->Servlet容器->實例化一個Servlet對象->調用init()方法初始化Servlet的web.xml配置參數信息->調用service()方法獲取請求信息,并且向瀏覽器生成響應
- Servlet容器自動生成HttpServletRequest對象封裝請求信息->當要在服務器端顯示中文時候調用request.setCharacterEncoding("utf-8")方法解決亂碼問題->當要獲取封裝的請求信息調用request.getParameter("xx")方法->當要獲取Servlet容器自動生成的session對象的時候調用HttpSession session = request.getSession()方法->當要讀取保存在客戶端瀏覽器的所有Cookie對象和值的時候調用Cookie[] cookies = request.getCookies()。
- ?Servlet容器中自動生成HttpServletResponse對象封裝響應信息->當要獲取輸出流打印內容到瀏覽器界面時候調用PrintWriter out = response.getWriter()和out.println("<h1>hello world<h1>")方法->當打印的信息出現中文亂碼的時候調用->response.setCharacterEncoding("utf-8")和response.setContentType("text/html")->當要綁定Cookie值到瀏覽器中調用response.addCookie(cookie)->當瀏覽器Cookie被禁用時候調用response.encodeURL()。
- ?Servlet容器中自動生成HttpSession對象并為該對象分配一個唯一的Session ID,將其作為Cookie自動發送給瀏覽器】->Servlet將響應結果返回至容器->容器再將結果返回至客戶端界面顯示->最后響應結束關閉web服務器時會自動調用destroy()銷毀servlet對象【如果同一時間收到另一個請求信息,servlet對象不另外生成且init()方法也不再執行
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的什么是Servlet?对Servlet技术的浅尝解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: stm32f401 边沿捕获_STM32
- 下一篇: U盘隐藏分区释放