大家好,我是IT修真院深圳分院的學員,一枚正直善良的JAVA程序員。
1.背景介紹
Servlet(ServerApplet)是JavaServlet的簡稱,一般稱為小服務程序或服務連接器,是一個用Java編寫的服務器端程序。
主要功能在于處理請求和發送響應、交互式地瀏覽和修改數據,生成動態Web內容,甚至可以說Servlet是為了解決實現動態頁面而衍生的程序。
狹義的Servlet是指Java語言實現的一個接口,廣義的Servlet是指任何實現了這個Servlet接口的類,一般情況下,
人們將Servlet理解為后者。Servlet運行于支持Java的應用服務器中。
2.知識剖析
Servlet的四個主要內置對象
ServletConfig對象
ServletContext對象
request對象
Request對象的作用是與客戶端交互,收集客戶端的Form、Cookies、超鏈接,或者收集服務器端的環境變量。
request對象是從客戶端向服務器發出請求,包括用戶提交的信息以及客戶端的一些信息。同時也會向服務器或者瀏覽器定義自己需要的返回的東西。
response對象
Response對象用于動態響應客戶端請示,控制發送給用戶的信息,并將動態生成響應。
Response對象只提供了一個數據集合cookie,它用于在客戶端寫入cookie值。若指定的cookie不存在,則創建它。若存在,則將自動進行更新。結果返回給客戶端瀏覽器。
3.常見問題
1.servlet的生命周期是怎么樣的?
2.Servlet與JSP的異同
4.解決方案
1.servlet的生命周期是怎么樣的?
Servlet生命周期分為三個階段:
1,初始化階段調用init()方法
2,響應客戶請求階段 調用service()方法
3,終止階段 調用destroy()方法
初始化階段
1,Servlet容器啟動時自動裝載某些Servlet
-loadon-startup-1-loadon-startup-
2,在Servlet容器啟動后,客戶首次向Servlet發送請求的時候
3,Servlet類文件被更新后,重新裝載Servlet
2.Servlet與JSP的區別是什么?
Servlet與JSP有許多相似之處,都可以生成動態網頁。
背景:
Servlet體系是基于B/S架構開發web應用程序,使用Servlet類將HTTP請求和響應封裝在標準JAVA類中來實現各種web應用方案的。
當大量的B/S架構程序開發出來以后出現了很多問題:首先servlet類有大量冗余代碼,其次是開發Servlet的沒法做到有精美的頁面效果。
所以sun提出將服務端代碼添加在已經設計好的靜態頁面上,經過JSP容器對JSP文件進行自動解析并轉換成Servlet類來交給web服務器運行。
創建方式:
Servlet都是由JAVA程序代碼構成,用于流程控制和事務處理,通過Servlet來生成動態網頁很不直觀。
而JSP由HTML代碼和JSP標簽構成,可以方便地編寫動態網頁.
編譯:
JSP修改后可以立即看到結果,不需要編譯;
而Servelt缺需要編譯。
轉換:
JSP是動態網頁開發技術,是運行在服務器端的腳本語言,而Servlet是web服務器端編程技術。
所以JSP運行時就是轉換為Servlet,也就是java程序來執行。
優缺點:
JSP的優點是擅長于網頁制作,生成動態頁面比較直觀,缺點是不容易跟蹤與排錯。
Servlet是純Java語言,擅長于處理流程和業務邏輯,缺點是生成動態網頁不直觀。
5.編碼實戰
這是因為Tomcat7以及之前的編碼方式都是iso8859-1,tomcat8以后默認編碼格式開始改為utf-8;
這時候我們需要在頁面進行設置,添加下列代碼使得頁面的編碼方式變成utf-8.
<%@ pagecontentType="text/html;charset=UTF-8" language="java" %>
<%@ page language="java"import="java.util.*" pageEncoding="UTF-8" %>
就可以將頁面的獲取內容改為UTF8,顯示正常的數據。
但是在我們向服務器提交信息的時候,返回的信息依然會是iso8859-1,
這就需要我們在后臺進行處理。這里就不仔細講了,也不是什么很麻煩的事情。
6.擴展思考
1、為什么創建的servlet是繼承自httpServlet,而不是直接實現Servlet接口?
2、servlet的生命周期中,可以看出,執行的是service方法,為什么我們就只需要寫doGet和doPost方法呢?
7.參考文獻
鏈接:http://www.cnblogs.com/whgk/p/6399262.html
作者:一杯涼茶
鏈接:https://baike.baidu.com/item/Response%E5%AF%B9%E8%B1%A1/7465134?fr=aladdin
作者:百度百科
8.更多討論
jsp中的內置對象在servlet中對應的是什么?
servlet有九大內置對象,其中對應的關系如下:
1、out 來源于Java.io.Writer類,它用于發送輸出流到客戶端。
2、request 來源于javax.servlet.http.HttpServletRequest接口。它被關聯到每一個HTTP請求。
3、response 來源于javax.servlet.http.HttpServletResponse。response對象用于把取得的數據返回到客戶端。
4、pageContext 提供訪問JSP頁面的命名空間。它也提供用來訪問其他的JSP隱含對象。
5、session 來源于javax.servlet.http.HttpSession。它用于存儲客戶端請求的信息,因此它是有狀態交互式的。
6、application 來源于javax.servlet.ServletContext。
7、config 來源于ServletConfig,它包含了當前JSP/Servlet所在的WEB應用的配置信息。
8、page 來源于當前被訪問JSP頁面的實例化。它實際使用的是JSP轉換成的Servlet。
9、exception 用于捕獲JSP拋出的異常。它只有在JSP頁面屬性isErrorPage=true時才可用。
2.關于程序Servlet的亂碼關系?
spring早就已經做好了對應的處理,只需要在程序中加入z:
3.Tomcat與Servlet
PPT鏈接:戳這里看PPT
騰訊視頻:騰訊視頻
技能樹.IT修真院
“我們相信人人都可以成為一個工程師,現在開始,找個師兄,帶你入門,掌控自己學習的節奏,學習的路上不再迷茫”。
這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學習路線,學習透明化,成長可見化,師兄1對1免費指導。快來與我一起學習吧