Servlet及Tomcat介紹
阿新 • • 發佈:2020-10-21
1.Tomact部署
* 部署專案的方式:
1. 直接將專案放到webapps目錄下即可。
* /hello:專案的訪問路徑-->虛擬目錄
* 簡化部署:將專案打成一個war包,再將war包放置到webapps目錄下。
* war包會自動解壓縮
2. 配置conf/server.xml檔案
在<Host>標籤體中配置
<Context docBase="D:\hello" path="/hehe" />
* docBase:專案存放的路徑
* path:虛擬目錄
3. 在conf\Catalina\localhost建立任意名稱的xml檔案。在檔案中編寫
<Context docBase="D:\hello" />
* 虛擬目錄:xml檔案的名稱
2.基本Servlet配置
自己總結的執行流程:
* 簡單生命週期: * 1.請求http://localhost:8080/demo1。 * 2.在配置檔案 web.xml 的url-pattern 中查詢/demo1的url配置。 * 3.沒有返回404,找到根據servlet-name找對應servlet-class。 * 4.反射載入servlet-class中配置的類,執行實現Servlet介面的service方法 * * intt方法只執行一次,可以知道該類為單例模式。只建立了一個類物件
web.xml配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!--Servlet配置 名字 載入類--> <servlet> <servlet-name>demo1</servlet-name> <servlet-class>cn.web.servlet.ServletDemo1</servlet-class> <!--指定Servlet的建立時機 1.第一次被訪問時,建立 * <load-on-startup>的值為負數 2.在伺服器啟動時,建立 * <load-on-startup>的值為0或正整數 --> <load-on-startup>-5</load-on-startup> </servlet> <!--名字 載入url--> <servlet-mapping> <servlet-name>demo1</servlet-name> <url-pattern>/demo1</url-pattern> </servlet-mapping> </web-app>
服務程式碼:
package cn.web.servlet; import javax.servlet.*; import java.io.IOException; /* * 簡單生命週期: * 1.請求http://localhost:8080/demo1。 * 2.在配置檔案 web.xml 的url-pattern 中查詢/demo1的url配置。 * 3.沒有返回404,找到根據servlet-name找對應servlet-class。 * 4.反射載入servlet-class中配置的類,執行實現Servlet介面的service方法 * * intt方法只執行一次,可以知道該類為單例模式。只建立了一個類物件 * */ public class ServletDemo1 implements Servlet { /* * 專案啟動或類載入時候執行一次 * */ @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("執行init方法"); } @Override public ServletConfig getServletConfig() { System.out.println("執行getServletConfig方法"); return null; } /* * 請求介面 * */ @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("執行service方法"); } @Override public String getServletInfo() { System.out.println("執行getServletInfo方法"); return null; } /* * 類銷燬,服務正常關閉的時候執行 * */ @Override public void destroy() { System.out.println("執行destroy方法"); } }
3.在3.0以後註解配置
自己總結:
* 簡化web.xml配置,直接通過註解載入 3.0後引入 * 載入方式: * 1.請求http://localhost:8080/demo2。 * 2.在類中查詢標記WebServlet的註解,並且urlPatterns為demo2的類,註解預設value及為urlPatterns * 3.找到了即載入改類,並建立例項。(這個過程一般都快取起來)
服務程式碼:
package cn.web.servlet; import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException; /* * 簡化web.xml配置,直接通過註解載入 3.0後引入 * 載入方式: * 1.請求http://localhost:8080/demo2。 * 2.在類中查詢標記WebServlet的註解,並且urlPatterns為demo2的類,註解預設value及為urlPatterns * 3.找到了即載入改類,並建立例項。(這個過程一般都快取起來) * * */ @WebServlet("/demo2") public class ServletDemo1 implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { } @Override public ServletConfig getServletConfig() { return null; } @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("執行service方法"); } @Override public String getServletInfo() { return null; } @Override public void destroy() { } }