Servlet

Servlet


Servlet是一個(gè)Java程序,是在服務(wù)器上運(yùn)行以處理客戶端請(qǐng)求并做出響應(yīng)的程序。

初識(shí)Servlet

  • 步驟1:導(dǎo)入所需的包、處理請(qǐng)求的方法、將數(shù)據(jù)發(fā)送給客戶端

      import java.io.*;
      import javax.servlet.*;
      import javax.servlet.http.*;
      //繼承HttpServlet類(lèi)
      public class HelloServletTest extends HttpServlet { 
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {          
          response.setContentType("text/html;charset=UTF-8");
          PrintWriter out = response.getWriter();
          out.println("<html>");
          out.println("  <head><title>Servlet</title></head>");
          out.println("  <body>");
          out.println("你好,歡迎來(lái)到Servlet世界");
          out.println("  </body>");
          out.println("</html>");
          out.close();
       }
      }
    
  • 步驟2:在web.xml文件中配置Servlet

      <web-app>
      <servlet>
          <servlet-name> HelloServlet </servlet-name> 
          <servlet-class> com.HelloServlet </servlet-class>
      </servlet>
      
      <servlet-mapping>
          <servlet-name> HelloServlet </servlet-name>
          <url-pattern> /HelloServlet </url-pattern>
      </servlet-mapping>
      </web-app>
    

    注意:

    • <servlet-name標(biāo)簽中的名稱(chēng)必須相同
      • 第一個(gè)是設(shè)定當(dāng)前servlet的內(nèi)部名稱(chēng)(對(duì)象名)
      • 第二個(gè) 通過(guò)servlet內(nèi)部名把訪問(wèn)路徑與Class綁定
    • <servlet-class標(biāo)簽中是完整的包名+類(lèi)名,指定對(duì)應(yīng)servlet內(nèi)部相關(guān)類(lèi)
    • <url-pattern標(biāo)簽中訪問(wèn)Servlet的URL,用戶訪問(wèn)servlet時(shí)的路徑名,一定要加上” / ”

servlet的生命周期

  1. 實(shí)例化:Servlet 容器創(chuàng)建 Servlet 的實(shí)例
  2. 初始化 :該容器調(diào)用 init() 方法
  3. 請(qǐng)求處理:如果請(qǐng)求 Servlet,則容器調(diào)用 service() 方法
  4. 服務(wù)終止:銷(xiāo)毀實(shí)例之前調(diào)用 destroy() 方法

servlet的相關(guān)類(lèi)

Servlet 、 ServletConfig ——接口
|
GenericServlet ——抽象類(lèi)
|
HttpServlet ——抽象類(lèi)

Servlet接口

  • 定義了所有Servlet需要實(shí)現(xiàn)的方法

ServletConfig接口

  • 在Servlet初始化過(guò)程中獲取配置信息
  • 一個(gè)Servlet只有一個(gè)ServletConfig對(duì)象

GenericServlet抽象類(lèi)

  • 提供了Servlet與ServletConfig接口的默認(rèn)實(shí)現(xiàn)方法

HttpServlet概述

  • 繼承于GenericServlet
  • 處理HTTP協(xié)議的請(qǐng)求和響應(yīng)

請(qǐng)求、響應(yīng)相關(guān)接口

請(qǐng)求:

ServletRequest
    |
HttpServletRequest

響應(yīng):

ServletResponse
    |
HttpServletResponse

說(shuō)明我們創(chuàng)建Servlet都是繼承自HttpServlet


ServletRequest概述

  • 獲取客戶端的請(qǐng)求數(shù)據(jù)
  • ServletRequest的常用方法
    • public Object getAttribute(String name):獲取名稱(chēng)為name的屬性值
    • public void setAttribute(String name, Object object):在請(qǐng)求中保存名稱(chēng)為name的屬性
    • public void removeAttribute(String name):清除請(qǐng)求中名字為name的屬性

HttpServletRequest概述

  • 除了繼承ServletRequest接口中的方法,還增加了一些用于讀取請(qǐng)求信息的方法
  • HttpServletRequest的常用方法
    • public String getContextPath():返回請(qǐng)求URI中表示請(qǐng)求上下文的路徑,上下文路徑是請(qǐng)求URI的開(kāi)始部分
    • public Cookie[ ] getCookies():返回客戶端在此次請(qǐng)求中發(fā)送的所有cookie對(duì)象
    • public HttpSession getSession():返回和此次請(qǐng)求相關(guān)聯(lián)的session,如果沒(méi)有給客戶端分配session,則創(chuàng)建一個(gè)新的session
    • public String getMethod():返回此次請(qǐng)求所使用的HTTP方法的名字,如GET、POST

ServletResponse概述

  • 向客戶端發(fā)送響應(yīng)數(shù)據(jù)
  • ServletResponse接口的常用方法
    • public PrintWriter getWriter():返回PrintWrite對(duì)象,用于向客戶端發(fā)送文本
    • public String getCharacterEncoding():返回在響應(yīng)中發(fā)送的正文所使用的字符編碼
    • public void setCharacterEncoding():設(shè)置發(fā)送到客戶端的響應(yīng)的字符編碼
    • public void setContentType(String type):設(shè)置發(fā)送到客戶端的響應(yīng)的內(nèi)容類(lèi)型,此時(shí)響應(yīng)的狀態(tài)屬于尚未提交

HttpServletResponse概述

  • 除了繼承ServletResponse接口中的方法,還增加了新的方法
  • HttpServletResponse的常用方法
    • public void addCookie(Cookie cookie):增加一個(gè)cookie到響應(yīng)中,這個(gè)方法可多次調(diào)用,設(shè)置多個(gè)cookie
    • public void addHeader(String name,String value):將一個(gè)名稱(chēng)為name,值為value的響應(yīng)報(bào)頭添加到響應(yīng)中
    • public void sendRedirect(String location):發(fā)送一個(gè)臨時(shí)的重定向響應(yīng)到客戶端,以便客戶端訪問(wèn)新的URL
    • public void encodeURL(String url):使用session ID對(duì)用于重定向的URL進(jìn)行編碼
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,619評(píng)論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,155評(píng)論 3 425
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 177,635評(píng)論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,539評(píng)論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,255評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,646評(píng)論 1 326
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,655評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,838評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,399評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,146評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,338評(píng)論 1 372
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,893評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,565評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,983評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,257評(píng)論 1 292
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,059評(píng)論 3 397
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,296評(píng)論 2 376

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,814評(píng)論 18 139
  • 一 servlet概述 狹義的Servlet指javax.servlet包中的一個(gè)接口,而廣義的Servlet則是...
    靜慎獨(dú)閱讀 474評(píng)論 0 0
  • 一、ServerLet是什么?什么是CGI程序? 答:ServerLet是運(yùn)用在web服務(wù)器或運(yùn)用服務(wù)器上的程序作...
    歸來(lái)的良人閱讀 1,366評(píng)論 1 10
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,731評(píng)論 18 399
  • http://blog.csdn.net/luman1991/article/details/52678559 基...
    Nic_ofh閱讀 1,851評(píng)論 0 3