Java-Servlet的講解

大家好,我是IT修真院深圳分院的學員,一枚正直善良的JAVA程序員。

1.背景介紹

Servlet(ServerApplet)是JavaServlet的簡稱,一般稱為小服務(wù)程序或服務(wù)連接器,是一個用Java編寫的服務(wù)器端程序。

主要功能在于處理請求和發(fā)送響應(yīng)、交互式地瀏覽和修改數(shù)據(jù),生成動態(tài)Web內(nèi)容,甚至可以說Servlet是為了解決實現(xiàn)動態(tài)頁面而衍生的程序。

狹義的Servlet是指Java語言實現(xiàn)的一個接口,廣義的Servlet是指任何實現(xiàn)了這個Servlet接口的類,一般情況下,

人們將Servlet理解為后者。Servlet運行于支持Java的應(yīng)用服務(wù)器中。

2.知識剖析

Servlet的四個主要內(nèi)置對象

ServletConfig對象

ServletContext對象

request對象

Request對象的作用是與客戶端交互,收集客戶端的Form、Cookies、超鏈接,或者收集服務(wù)器端的環(huán)境變量。

request對象是從客戶端向服務(wù)器發(fā)出請求,包括用戶提交的信息以及客戶端的一些信息。同時也會向服務(wù)器或者瀏覽器定義自己需要的返回的東西。

response對象

Response對象用于動態(tài)響應(yīng)客戶端請示,控制發(fā)送給用戶的信息,并將動態(tài)生成響應(yīng)。

Response對象只提供了一個數(shù)據(jù)集合cookie,它用于在客戶端寫入cookie值。若指定的cookie不存在,則創(chuàng)建它。若存在,則將自動進行更新。結(jié)果返回給客戶端瀏覽器。

3.常見問題

1.servlet的生命周期是怎么樣的?

2.Servlet與JSP的異同

4.解決方案

1.servlet的生命周期是怎么樣的?

Servlet生命周期分為三個階段:

1,初始化階段調(diào)用init()方法

2,響應(yīng)客戶請求階段  調(diào)用service()方法

3,終止階段  調(diào)用destroy()方法

初始化階段

1,Servlet容器啟動時自動裝載某些Servlet

-loadon-startup-1-loadon-startup-

2,在Servlet容器啟動后,客戶首次向Servlet發(fā)送請求的時候

3,Servlet類文件被更新后,重新裝載Servlet



2.Servlet與JSP的區(qū)別是什么?

Servlet與JSP有許多相似之處,都可以生成動態(tài)網(wǎng)頁。

背景:

Servlet體系是基于B/S架構(gòu)開發(fā)web應(yīng)用程序,使用Servlet類將HTTP請求和響應(yīng)封裝在標準JAVA類中來實現(xiàn)各種web應(yīng)用方案的。

當大量的B/S架構(gòu)程序開發(fā)出來以后出現(xiàn)了很多問題:首先servlet類有大量冗余代碼,其次是開發(fā)Servlet的沒法做到有精美的頁面效果。

所以sun提出將服務(wù)端代碼添加在已經(jīng)設(shè)計好的靜態(tài)頁面上,經(jīng)過JSP容器對JSP文件進行自動解析并轉(zhuǎn)換成Servlet類來交給web服務(wù)器運行。

創(chuàng)建方式:

Servlet都是由JAVA程序代碼構(gòu)成,用于流程控制和事務(wù)處理,通過Servlet來生成動態(tài)網(wǎng)頁很不直觀。

而JSP由HTML代碼和JSP標簽構(gòu)成,可以方便地編寫動態(tài)網(wǎng)頁.

編譯:

JSP修改后可以立即看到結(jié)果,不需要編譯;

而Servelt缺需要編譯。

轉(zhuǎn)換:

JSP是動態(tài)網(wǎng)頁開發(fā)技術(shù),是運行在服務(wù)器端的腳本語言,而Servlet是web服務(wù)器端編程技術(shù)。

所以JSP運行時就是轉(zhuǎn)換為Servlet,也就是java程序來執(zhí)行。

優(yōu)缺點:

JSP的優(yōu)點是擅長于網(wǎng)頁制作,生成動態(tài)頁面比較直觀,缺點是不容易跟蹤與排錯。

Servlet是純Java語言,擅長于處理流程和業(yè)務(wù)邏輯,缺點是生成動態(tài)網(wǎng)頁不直觀。

5.編碼實戰(zhàn)

這是因為Tomcat7以及之前的編碼方式都是iso8859-1,tomcat8以后默認編碼格式開始改為utf-8;

這時候我們需要在頁面進行設(shè)置,添加下列代碼使得頁面的編碼方式變成utf-8.

<%@ pagecontentType="text/html;charset=UTF-8" language="java" %>

<%@ page language="java"import="java.util.*" pageEncoding="UTF-8" %>

就可以將頁面的獲取內(nèi)容改為UTF8,顯示正常的數(shù)據(jù)。

但是在我們向服務(wù)器提交信息的時候,返回的信息依然會是iso8859-1,

這就需要我們在后臺進行處理。這里就不仔細講了,也不是什么很麻煩的事情。

6.擴展思考

1、為什么創(chuàng)建的servlet是繼承自httpServlet,而不是直接實現(xiàn)Servlet接口?

2、servlet的生命周期中,可以看出,執(zhí)行的是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中的內(nèi)置對象在servlet中對應(yīng)的是什么?

servlet有九大內(nèi)置對象,其中對應(yīng)的關(guān)系如下:

1、out 來源于Java.io.Writer類,它用于發(fā)送輸出流到客戶端。

2、request 來源于javax.servlet.http.HttpServletRequest接口。它被關(guān)聯(lián)到每一個HTTP請求。

3、response 來源于javax.servlet.http.HttpServletResponse。response對象用于把取得的數(shù)據(jù)返回到客戶端。

4、pageContext 提供訪問JSP頁面的命名空間。它也提供用來訪問其他的JSP隱含對象。

5、session 來源于javax.servlet.http.HttpSession。它用于存儲客戶端請求的信息,因此它是有狀態(tài)交互式的。

6、application 來源于javax.servlet.ServletContext。

7、config 來源于ServletConfig,它包含了當前JSP/Servlet所在的WEB應(yīng)用的配置信息。

8、page 來源于當前被訪問JSP頁面的實例化。它實際使用的是JSP轉(zhuǎn)換成的Servlet。

9、exception 用于捕獲JSP拋出的異常。它只有在JSP頁面屬性isErrorPage=true時才可用。

2.關(guān)于程序Servlet的亂碼關(guān)系?

spring早就已經(jīng)做好了對應(yīng)的處理,只需要在程序中加入z:

3.Tomcat與Servlet

PPT鏈接:戳這里看PPT

騰訊視頻:騰訊視頻

技能樹.IT修真院

“我們相信人人都可以成為一個工程師,現(xiàn)在開始,找個師兄,帶你入門,掌控自己學習的節(jié)奏,學習的路上不再迷茫”。

這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學習路線,學習透明化,成長可見化,師兄1對1免費指導(dǎo)??靵砼c我一起學習吧

直接點擊此鏈接:http://www.jnshu.com/login/1/10985551

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容