Servlet入門

什么是Servlet

  • Server Applet:小服務程序
  • Servlet需要在一個web應用中運行
  • 一個web應用是部署在tomcat中的

最原始的方式創(chuàng)建j2ee項目

  • 因為是開發(fā)Servlet所以需要用到 servlet-api.jar 這個包里的相關類。
  • 鏈接:https://pan.baidu.com/s/1svoVuOgM192urZjC4bZehw
  • 提取碼:58sh
  • 新建一個項目:File->New->Java Project
  • 導入必須的servlet-api.jar包:右鍵點擊項目->properties->Java Build Path->Libraries->Add External JARs
  • 編寫HelloServlet
import java.io.IOException;
import java.util.Date;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse responce) {
        // TODO Auto-generated method stub
        try {
            responce.getWriter().println("<h1>Hello Servlet!</h1>");
            responce.getWriter().println(new Date().toLocaleString());
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
}
  • 配置web.xml:
    • 首先在j2ee下創(chuàng)建目錄web
    • 接著再創(chuàng)建目錄web/WEB-INF
    • 然后創(chuàng)建web.xml文件
    • web.xml提供路徑與servlet的映射關系,把/hello這個路徑,映射
    • 我少寫了一個/, 導致Tomcat啟動失敗,花了好長時間,找到這個Bug
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
 
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>HelloServlet</servlet-class>
    </servlet>
 
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
 
</web-app>
  • 指定項目輸出到classes目錄

    • 首先在WEB-INF下創(chuàng)建classes目錄
    • 步驟:項目右鍵->properties->Java Build Path->Source->右下角的Browse->指定位置j2ee/web/WEB-INF/classes
    • 為什么要有這一步:eclipse默認字節(jié)碼文件輸出到bin,但是tomcat默認是WEB-INF/classes,所以必須調整Eclipse的輸出目錄,這樣才能和tomcat兼容
  • 配置tomcat的server.xml中的context

    • 打開tomcat/conf/server.xml
    • 在 <Host name="localhost" 。。。 下面加一句


      image.png
    • path="/"就表示直接通過http://127.0.0.1/hello就可以訪問
  • 刪除tomcat webapps下的ROOT目錄

    • 在上一步context path配置為/,與webapps下的ROOT目錄沖突了
    • 所以要刪除ROOT目錄,如果沒有就不用刪除了
  • 重啟tomcat,訪問http://127.0.0.1/hello

    • 大功告成,每一次刷新,都能看到時間的改變
image.png

我是怎么找到那個少寫"/"的NUG

  • 首先我的Tomcat原本是可以啟動的,這就證明我的Tomcat是完好無損的
  • 然后我替換了整個j2ee項目,發(fā)現(xiàn)Tomcat可以啟動了,證明問題出在我的j2ee上
  • 逐一檢查我的j2ee文件,替換HelloServlet類,Tomcat依然無法啟動,證明問題必然出在web.xml
  • 仔細查看web.xml,沒找到問題
  • 最后借助于diffmerge,終于發(fā)現(xiàn)少寫了"/"
    image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。