1. 程式人生 > 實用技巧 >Servlet及Tomcat介紹

Servlet及Tomcat介紹

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() {

    }
}