Servlet

Servlet


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

初識Servlet

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

      import java.io.*;
      import javax.servlet.*;
      import javax.servlet.http.*;
      //繼承HttpServlet類
      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("你好亏镰,歡迎來到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)簽中的名稱必須相同
      • 第一個是設(shè)定當(dāng)前servlet的內(nèi)部名稱(對象名)
      • 第二個 通過servlet內(nèi)部名把訪問路徑與Class綁定
    • <servlet-class標(biāo)簽中是完整的包名+類名扯旷,指定對應(yīng)servlet內(nèi)部相關(guān)類
    • <url-pattern標(biāo)簽中訪問Servlet的URL,用戶訪問servlet時的路徑名索抓,一定要加上” / ”

servlet的生命周期

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

servlet的相關(guān)類

Servlet 、 ServletConfig ——接口
|
GenericServlet ——抽象類
|
HttpServlet ——抽象類

Servlet接口

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

ServletConfig接口

  • 在Servlet初始化過程中獲取配置信息
  • 一個Servlet只有一個ServletConfig對象

GenericServlet抽象類

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

HttpServlet概述

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

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

請求:

ServletRequest
    |
HttpServletRequest

響應(yīng):

ServletResponse
    |
HttpServletResponse

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


ServletRequest概述

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

HttpServletRequest概述

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

ServletResponse概述

  • 向客戶端發(fā)送響應(yīng)數(shù)據(jù)
  • ServletResponse接口的常用方法
    • public PrintWriter getWriter():返回PrintWrite對象缺菌,用于向客戶端發(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)容類型,此時響應(yīng)的狀態(tài)屬于尚未提交

HttpServletResponse概述

  • 除了繼承ServletResponse接口中的方法搜锰,還增加了新的方法
  • HttpServletResponse的常用方法
    • public void addCookie(Cookie cookie):增加一個cookie到響應(yīng)中伴郁,這個方法可多次調(diào)用,設(shè)置多個cookie
    • public void addHeader(String name,String value):將一個名稱為name纽乱,值為value的響應(yīng)報頭添加到響應(yīng)中
    • public void sendRedirect(String location):發(fā)送一個臨時的重定向響應(yīng)到客戶端蛾绎,以便客戶端訪問新的URL
    • public void encodeURL(String url):使用session ID對用于重定向的URL進行編碼
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鸦列,隨后出現(xiàn)的幾起案子租冠,更是在濱河造成了極大的恐慌,老刑警劉巖薯嗤,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顽爹,死亡現(xiàn)場離奇詭異,居然都是意外死亡骆姐,警方通過查閱死者的電腦和手機镜粤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門捏题,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肉渴,你說我怎么就攤上這事公荧。” “怎么了同规?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵循狰,是天一觀的道長。 經(jīng)常有香客問我券勺,道長绪钥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任关炼,我火速辦了婚禮程腹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘儒拂。我一直安慰自己寸潦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布侣灶。 她就那樣靜靜地躺著甸祭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪褥影。 梳的紋絲不亂的頭發(fā)上池户,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機與錄音凡怎,去河邊找鬼校焦。 笑死,一個胖子當(dāng)著我的面吹牛统倒,可吹牛的內(nèi)容都是我干的寨典。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼房匆,長吁一口氣:“原來是場噩夢啊……” “哼耸成!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起浴鸿,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤井氢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后岳链,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體花竞,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年掸哑,在試婚紗的時候發(fā)現(xiàn)自己被綠了约急。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片零远。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖厌蔽,靈堂內(nèi)的尸體忽然破棺而出牵辣,到底是詐尸還是另有隱情,我是刑警寧澤躺枕,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布服猪,位于F島的核電站,受9級特大地震影響拐云,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜近她,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一叉瘩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧粘捎,春花似錦薇缅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至娩缰,卻和暖如春灸撰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拼坎。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工浮毯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泰鸡。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓债蓝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盛龄。 傳聞我的和親對象是個殘疾皇子饰迹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

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

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