Servlet 實例

Servlet 是服務(wù) HTTP 請求并實現(xiàn)

javax.servlet.Servlet

接口的 Java 類蚕甥。Web 應(yīng)用程序開發(fā)人員通常編寫 Servlet 來擴展 javax.servlet.http.HttpServlet,并實現(xiàn) Servlet 接口的抽象類專門用來處理 HTTP 請求。

Hello World 示例代碼

下面是 Servlet 輸出 Hello World 的示例源代碼:

// 導(dǎo)入必需的 java 庫
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

// 擴展 HttpServlet 類
public class HelloWorld extends HttpServlet {

  private String message;

  public void init() throws ServletException
  {
      // 執(zhí)行必需的初始化
      message = "Hello World";
  }

  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
            throws ServletException, IOException
  {
      // 設(shè)置響應(yīng)內(nèi)容類型
      response.setContentType("text/html");

      // 實際的邏輯是在這里
      PrintWriter out = response.getWriter();
      out.println("<h1>" + message + "</h1>");
  }

  public void destroy()
  {
      // 什么也不做
  }
}

編譯 Servlet

讓我們把上面的代碼寫在 HelloWorld.java 文件中碎税,把這個文件放在 C:\ServletDevel(在 Windows 上)或 /usr/ServletDevel(在 UNIX 上)中,您還需要把這些目錄添加到 CLASSPATH 中勃刨。

假設(shè)您的環(huán)境已經(jīng)正確地設(shè)置沸呐,進入

ServletDevel

目錄,并編譯 HelloWorld.java仿粹,如下所示:

$ javac HelloWorld.java

如果 Servlet 依賴于任何其他庫搁吓,您必須在 CLASSPATH 中包含那些 JAR 文件。在這里吭历,我只包含了 servlet-api.jar JAR 文件堕仔,因為我沒有在 Hello World 程序中使用任何其他庫。

該命令行使用 Sun Microsystems Java 軟件開發(fā)工具包(JDK)內(nèi)置的 javac 編譯器晌区。為使該命令正常工作摩骨,您必須 PATH 環(huán)境變量中使用的 Java SDK 的位置。

如果一切順利朗若,上面編譯會在同一目錄下生成 HelloWorld.class 文件恼五。下一節(jié)將講解已編譯的 Servlet 如何部署在生產(chǎn)中。

Servlet 部署

默認情況下哭懈,Servlet 應(yīng)用程序位于路徑 <Tomcat-installation-directory>/webapps/ROOT 下灾馒,且類文件放在 <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes 中。

如果您有一個完全合格的類名稱

com.myorg.MyServlet遣总,那么這個 Servlet 類必須位于 WEB-INF/classes/com/myorg/MyServlet.class 中睬罗。

現(xiàn)在,讓我們把 HelloWorld.class 復(fù)制到 <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes 中旭斥,并在位于 <Tomcat-installation-directory>/webapps/ROOT/WEB-INF/ 的

web.xml

文件中創(chuàng)建以下條目:

    <servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>HelloWorld</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/HelloWorld</url-pattern>
    </servlet-mapping>

上面的條目要被創(chuàng)建在 web.xml 文件中的 <web-app>...</web-app> 標簽內(nèi)容达。在該文件中可能已經(jīng)有各種可用的條目,但不要在意垂券。

到這里花盐,您基本上已經(jīng)完成了,現(xiàn)在讓我們使用 <Tomcat-installation-directory>\bin\startup.bat(在 Windows 上)或 <Tomcat-installation-directory>/bin/startup.sh(在 Linux/Solaris 等上)啟動 tomcat 服務(wù)器,最后在瀏覽器的地址欄中輸入

http://localhost:8080/HelloWorld算芯。如果一切順利柒昏,您會看到下面的結(jié)果:

Servlet 實例
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市也祠,隨后出現(xiàn)的幾起案子昙楚,更是在濱河造成了極大的恐慌,老刑警劉巖诈嘿,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堪旧,死亡現(xiàn)場離奇詭異,居然都是意外死亡奖亚,警方通過查閱死者的電腦和手機淳梦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門材原,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仔夺,“玉大人,你說我怎么就攤上這事坞琴∽鞴” “怎么了陨囊?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長夹攒。 經(jīng)常有香客問我蜘醋,道長,這世上最難降的妖魔是什么咏尝? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任压语,我火速辦了婚禮,結(jié)果婚禮上编检,老公的妹妹穿的比我還像新娘胎食。我一直安慰自己,他們只是感情好允懂,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布厕怜。 她就那樣靜靜地躺著,像睡著了一般累驮。 火紅的嫁衣襯著肌膚如雪酣倾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天谤专,我揣著相機與錄音,去河邊找鬼午绳。 笑死置侍,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蜡坊,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼杠输,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了秕衙?” 一聲冷哼從身側(cè)響起蠢甲,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎据忘,沒想到半個月后鹦牛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡勇吊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年曼追,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汉规。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡礼殊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出针史,到底是詐尸還是另有隱情晶伦,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布啄枕,位于F島的核電站婚陪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏射亏。R本人自食惡果不足惜近忙,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望智润。 院中可真熱鬧及舍,春花似錦、人聲如沸窟绷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兼蜈。三九已至攘残,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間为狸,已是汗流浹背歼郭。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辐棒,地道東北人病曾。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓牍蜂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親泰涂。 傳聞我的和親對象是個殘疾皇子鲫竞,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

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