日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Servlet快速入門

作者:玥騁 更新時間: 2022-05-17 編程語言

Servlet

文章目錄

  • Servlet
    • @[toc]
    • Servlet快速入門
    • Servlet執行流程
    • Servlet生命周期
      • Servlet方法介紹
    • Servlet體系結構
      • 思考
      • 總結
    • Servlet urlpattern配置
      • urlPattern配置規則
    • XML配置方式編寫Servlet

Servlet快速入門

在這里插入圖片描述

1.創建Web項目,導入Servlet坐標

 <dependencies>
        <dependency>
            <groupId>javax.servletgroupId>
            <artifactId>javax.servlet-apiartifactId>
            <version>3.1.0version>
            
            <scope>providedscope>
        dependency>
    dependencies>

2.定義一個類,實現Servlet接口,并重寫Servlet接口中的所有方法,并在service方法中輸入一句話

package com.tiyc.web;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;


@WebServlet("/demo1")/*配置訪問路徑*/
public class ServletDemo1 implements Servlet {

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Servlet hello world~");
    }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }


    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

3.配置:在類上使用@WebServlet注解,配置該Servlet的訪問路徑

@WebServlet("/demo1")/*配置訪問路徑*/
public class ServletDemo1 implements Servlet {

4.訪問:啟動Tomcat,瀏覽器輸入URL訪問該Servlet

http://localhost:8080/tomcat-demo02/demo1

Servlet執行流程

1.客戶端發送請求給服務器。
2.服務器開始接受,先判斷該請求的servlet實例是否存在,如果不存在先裝載一個servlet類并創建實例。如果存在則直接調用該servlet的service方法,之后進行判斷是調用doGet方法還是doPost方法。
3.servlet創建實例后,調用init方法進行初始化。之后調用servce方法,判斷是調用doGet方法還是doPost方法。
4.最后判斷服務是否關閉,如果關閉則調用destroy方法。

注:

Servlet由誰創建?Servlet方法由誰調用?

  • Servlet有Web服務器創建,Servlet方法由web服務器調用。

服務器怎么知道Servlet中一定有service方法?

  • 因為我們自定義的Servlet,必須實現Servlet接口并復寫其方法,而Servlet接口中有service方法。

Servlet生命周期

  • 對象的生命周期指:一個對象從被創建到被銷毀的整個過程。

Servlet運行在Servlet容器(web服務器)中,其生命周期由容器來管理,分為四個階段:

  1. 加載與實例化:默認情況下,當Servlet第一次被訪問時,由容器創建Servlet對象

    @WebServlet(urlPatterns = "/demo",loadOnStartup = 1);
    
    // 1.負整數:第一次訪問時創建Servlet對象
    // 2.0或正整數:服務器啟動時創建Servlet對象。數字越小優先級越高
    

    在這里插入圖片描述

  2. 初始化:在Servlet實例化之后,容器將調用Servlet的init()方法初始化這個對象,完成一些如:加載配置文件,創建連接等初始化工作。該方法只調用一次。

  3. 請求處理:每次請求Servlet時,Servlet容器都會調用Servlet 的service()方法對請求進行處理

    /**
         * 提供服務
         * 1.調用時機:每一次Servlet被訪問時
         * 2.調用次數:可多次調用
         * @param servletRequest
         * @param servletResponse
         * @throws ServletException
         * @throws IOException
         */
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("Servlet hello world~");
        }
    
  4. 服務終止:當需要釋放內存或者容器關閉時,容器就會調用Servlet實例destroy()方法完成資源的釋放。當descroy()方法調用之后容器會釋放這個Servlet實例,該實例會隨后被Java的垃圾收集器所回收

    /**
         * 銷毀方法:
         * 1.調用時機:內存釋放或者服務器關閉時,Servlet對象會被銷毀,調用
         * 2.調用次數:1次
         *
         */
        @Override
        public void destroy() {
            System.out.println("我是銷毀方法:destroy()....");
        }
    

    在這里插入圖片描述

Servlet方法介紹

  • 初始化方法,在Servlet被創建時執行,只執行一次

    void init(ServletConfig config)
    
  • 提供服務方法,每次Servlet被訪問,都會調用該方法

    void service(ServletRequest req,ServletResponse res)
    
  • 銷毀方法,當Servlet被銷毀時,調用該方法。在內存釋放或服務器關閉時銷毀Servlet

    void destroy()
    
  • 獲取ServletConfig()對象

    ServletConfig getServletConfig()
    
  • 獲取Servlet信息

    String getServletInfo()
    

Servlet體系結構

在這里插入圖片描述

@WebServlet("/demo4")
public class ServletDemo4 extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("get.....");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("post.....");
    }
}

在這里插入圖片描述

思考

1.HttpServlet中為什么要根據請求方式的不同,調用不同方法?

2.如何調用?

答:

模擬HttpServlet寫個MyHttpServlet

public class MyHttpServlet 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 {
        //根據請求方式的不同,進行分別處理

        HttpServletRequest request = (HttpServletRequest) servletRequest;
        //1.獲取請求方式:借助ServletRequest對象
        String method = request.getMethod();
        //2.判斷
        if ("GET".equals(method)){
            //get方式的處理邏輯
            doGet(servletRequest,servletResponse);
        }else if("POST".equals(method)){
            //post方式的處理邏輯
            doPost(servletRequest,servletResponse);
        }
    }

    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {

    }
    protected void doGet(ServletRequest servletRequest, ServletResponse servletResponse) {
    }
    protected void doPost(ServletRequest servletRequest, ServletResponse servletResponse) {
    }

}

繼承MyHttpServlet的效果:

在這里插入圖片描述

總結

1.HttpServlet的使用步驟

  • 繼承HttpServlet
  • 重寫doGet()和doPost()方法

2.HttpServlet原理

  • 獲取請求方式,并根據不同的請求方式,調用不同的doXxx方法

Servlet urlpattern配置

  • Servlet想要被訪問,必須配置其訪問路徑(urlPattern)

    1. 一個Servlet,可以配置多個urlPattern

      @WebServlet(urlPatterns = {"/demo1","demo2"})
      

urlPattern配置規則

注:范圍越小越精確,優先級越高。

1.精準匹配

  • 配置路徑:

    @WebServlet(urlPatterns = "/demo7")
    
  • 訪問路徑:

    http://localhost:8080/tomcat-demo02/demo7
    

2.目錄匹配

  • 配置路徑:

    @WebServlet(urlPatterns = "/user/*")
    
  • 訪問路徑:

    http://localhost:8080/tomcat-demo02/user/aaa
    http://localhost:8080/tomcat-demo02/user/bbb
    

3.擴展名匹配

  • 配置路徑:

    @WebServlet(urlPatterns = "*.do")
    
  • 訪問路徑:

    http://localhost:8080/tomcat-demo02/aaa.do
    http://localhost:8080/tomcat-demo02/bbb.do
    

4.任意匹配

  • 配置路徑:

    @WebServlet(urlPatterns = "/")
    
    @WebServlet(urlPatterns = "/*")
    
  • 訪問路徑:

    http://localhost:8080/tomcat-demo02/hehe
    http://localhost:8080/tomcat-demo02/haha
    

    注:/* 與/ 的區別

    • 當我們的項目中的Servlet配置了/,會覆蓋掉Tomcat中的DefaultServlet,當其他的url-pattern都匹配不上時就會走這個Servlet
    • 當我們的項目中配置了/* 意味著匹配任意訪問路徑
    • /* 的優先級比 / 高。

XML配置方式編寫Servlet

  • Servlet從3.0版本后開始支持使用注解配置,3.0版本前只支持XML配置文件的配置方式。

  • 步驟:

    1.編寫Servlet類

    2.在web.xml中配置該Servlet

在這里插入圖片描述

3.運行結果

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳在這里插入圖片描述

?

原文鏈接:https://blog.csdn.net/weixin_50659410/article/details/124778711

欄目分類
最近更新