国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JavaWeb-Servlet服務連接器(一)

這篇具有很好參考價值的文章主要介紹了JavaWeb-Servlet服務連接器(一)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

JavaWeb-Servlet服務連接器(一),javaweb,servlet

目錄

?1.Servlet生命周期

2.Servlet的配置

3.Servlet的常用方法

4.Servlet體系結構

5.HTTP請求報文

6.HTTP響應報文


?1.Servlet生命周期

Servlet(Server Applet)是Java Servlet的簡稱。其主要的功能是交互式地瀏覽和修改數據,生成一些動態(tài)的Web內容。

?Servlet的生命周期 可以簡述為以下幾個步驟:

  1. Servlet容器接收到第一個HTTP請求,將其委派給對應的Servlet。
  2. Servlet初始化階段,容器會調用Servlet的init()方法,用于執(zhí)行一些初始化操作,比如加載資源、建立數據庫連接等。
  3. 在接收到客戶端請求時,Servlet容器會調用Servlet的service()方法來處理請求,并根據請求方法(如GET、POST等)決定調用具體的doGet()、doPost()等方法。在這些方法中,開發(fā)者可以編寫處理請求和生成響應的業(yè)務邏輯。
  4. 當Servlet容器關閉或重新加載時,會調用Servlet的destroy()方法用于清理資源、釋放連接等操作。
  5. 最后,當沒有活躍的請求或超過一定時間限制時,Servlet容器會通過JVM的垃圾回收機制對Servlet進行回收。

2.Servlet的配置

1.通過xml配置

JavaWeb-Servlet服務連接器(一),javaweb,servlet

<!--    servlet聲明-->
    <servlet>
        <servlet-name> Servlet名字(自己定義的) </servlet-name>
        <servlet-class> 此處寫完整的類名 </servlet-class>
    </servlet>
<!--    servlet訪問方式的聲明-->
    <servlet-mapping>
        <servlet-name>Servlet名字(自己定義的)</servlet-name>
        <url-pattern>訪問路徑</url-pattern>
    </servlet-mapping>

2.通過注解配置

可以看到如果增加一個servlet類就需要多進行配置一次非常麻煩,所以官方引入了注解配置(無需再使用web.xml),但是注意注解配置只能在Web Application3.0以上版本才可用

@WebServlet("/" +" 路徑名(可以自行設置名稱)")

@WebServlet({"/" +" 路徑名(可以自行設置名稱)","/" +" 路徑名(可以自行設置名稱)"...})

案例:

JavaWeb-Servlet服務連接器(一),javaweb,servlet


3.Servlet的常用方法

?????? 在實現了Servlet的接口后會出現以下幾個方法:(核心在于init(),service();destory()三個生命周期方法)

package com.company;

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

public class Main  implements Servlet {
//    創(chuàng)建一個ServletConfig對象可以用來接收init傳遞的servletConfig
    private ServletConfig servletConfig;

//    初始化,在Servlet創(chuàng)建時候自動執(zhí)行,特點是只會執(zhí)行一次
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
//        通過數據范圍上升一級實現能夠獲取ServletConfig信息
        this.servletConfig = servletConfig;
    }
//    獲取Servlet類的相關配置數據
    @Override
    public ServletConfig getServletConfig() {
        return servletConfig;
    }
//    提供服務方法,特點是在每一次用戶訪問時候都能調用方法
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("執(zhí)行服務方法");
    }
//    獲取消息
    @Override
    public String getServletInfo() {
        return null;
    }
//    結束生命周期,在服務器關閉時候執(zhí)行destroy方法
    @Override
    public void destroy() {

    }
}

案例:

創(chuàng)建一個類叫ServletDemo源碼如下:通過實行按Servlet接口并覆寫相關方法。找到service方法,在其下輸出Hello Servlet和Test

package com.company;


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

public class ServletDemo implements Servlet {

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

    }
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }
    //  使用service服務的方法,其他暫時不用管
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Hello Servlet");
        System.out.println("Test");
    }
    @Override
    public String getServletInfo() {
        return null;
    }
    @Override
    public void destroy() {

    }
}

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_4_0.xsd"
         version="4.0">
<!--配置-->
    <display-name>HelloServlet</display-name>
<!--    servlet聲明-->
    <servlet>
<!--        隨便創(chuàng)建想要的Servlet名字-->
        <servlet-name> ServletDemo </servlet-name>
<!--        找到servlet對應的類,輸入 包.具體類名-->
        <servlet-class> com.company.ServletDemo </servlet-class>
    </servlet>
<!--    servlet訪問方式的聲明-->
    <servlet-mapping>
<!--        映射Servlet名-->
        <servlet-name>ServletDemo</servlet-name>
<!--        映射路徑配置一般就用 "/"+映射類名-->
        <url-pattern>/ServletDemo</url-pattern>
    </servlet-mapping>

</web-app>

?通過輸入url并加上對應的路徑

JavaWeb-Servlet服務連接器(一),javaweb,servlet

再回到idea中的控制臺可以看到能夠正常訪問

JavaWeb-Servlet服務連接器(一),javaweb,servlet


4.Servlet體系結構

問題引出:通過案例可以發(fā)現 我們一般使用資源請求,只會調用到service方法。其他init方法,destroy方法等等我們都不太需要,但是由于Servlet是接口所以需要覆寫所有的方法,所以引入了其他類

?Servlet體系結構:

JavaWeb-Servlet服務連接器(一),javaweb,servlet

其中GennericServlet抽象類將除了service的方法默認進行空處理如下所示:

package com.company;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;

public class GenServlet extends GenericServlet {
//    除了service方法其他都不需要覆寫
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("我是service方法");
//        判斷請求方式
        String method = servletRequest.getMethod();
        if (method.equals("GET")){
            
        }else if (method.equals("POST")){
            
        }
    }
}

?問題引出:可以看到雖然繼承了GennericServlet類,但是處理請求數據時候,由于請求方式的不同(請求方式有Get和POST)所以要單獨對其進行操作,并且每多一個繼承GennericServlet的類就需要再寫一邊判斷請求方式代碼,為此又細化分了一個HttpServlet抽象類

HttpServlet自動幫助寫完了判斷方法,并且?guī)砹朔椒╠oGet(),doPOST()

案例代碼:

package com.company;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

//多路徑設置
@WebServlet({"/Hello","/Dome","/kimi"})
public class HttpServlet extends javax.servlet.http.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!!!!!!!!!!!!");
    }
}

在index.jsp中設置一個表單并且可以通過method修改發(fā)送方法

JavaWeb-Servlet服務連接器(一),javaweb,servlet

Get方法獲取到信息

JavaWeb-Servlet服務連接器(一),javaweb,servlet

?Post方法獲取到信息

JavaWeb-Servlet服務連接器(一),javaweb,servlet


5.HTTP請求報文

1.請求報文格式

HTTP 請求報文的格式可分為三個部分:起始行(請求行)、請求頭部(Header)和請求體(Body)。

JavaWeb-Servlet服務連接器(一),javaweb,servlet

示例:

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Accept-Language: en-US,en;q=0.9
  • 請求行(Request Line):

    • 包含三個要素:HTTP 方法、請求目標(URI/URL)和 HTTP 版本。
    • 示例:GET /index.html HTTP/1.1
  • 請求頭部(Headers):

    • 由多個鍵值對組成,每行一個鍵值對,用冒號分隔鍵和值。
    • 可包含多個不同的請求頭,如 Host、User-Agent、Content-Type 等。
  • 請求體(Body):

    • 僅在某些請求中存在,用于承載客戶端向服務器發(fā)送的數據(如 POST、PUT 請求)。
    • 根據不同的應用場景,請求體可以是純文本、JSON、XML、二進制數據等格式。

?2.請求頭部

由關鍵字和值組成,每行一隊,關鍵字和值之間用“:”隔開

請求頭部字段 說明 示例
Host 請求的目標主機的域名或IP地址 Host:www.example.comwww.example.comwww.example.com
User-Agent 發(fā)起請求的用戶代理信息 User-Agent: Mozilla/5.0
Accept 客戶端可接受的響應內容類型 Accept: text/html, application/json
Content-Type 請求中包含的實體的媒體類型 Content-Type: application/json
Authorization 認證信息,用于身份驗證 Authorization: Bearer token123
Cookie 之前由服務器通過Set-Cookie設置的cookie Cookie: sessionId=abc123
Referer 表示客戶端是從哪個URL跳轉過來的 Referer: Example DomainExample DomainExample Domain
Content-Length 請求中的消息體長度 Content-Length: 1024
If-None-Match 用于緩存驗證,與資源的ETag進行比較 If-None-Match: "abc123"
If-Modified-Since 用于緩存驗證,與資源的最后修改時間進行比較 If-Modified-Since: Tue, 01 Aug 2023 12:00:00 GMT

6.HTTP響應報文

1.響應報文格式

??? HTTP 響應報文的格式可分為三個部分:起始行(狀態(tài)行)、響應頭部(Header)和響應體(Body)。

示例:

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
Cache-Control: max-age=3600

<!DOCTYPE html>
<html>
<head>
  <title>Welcome</title>
</head>
<body>
  <h1>Hello, World!</h1>
  <p>This is a sample HTML page.</p>
</body>
</html>
  • 狀態(tài)行(Status Line):

    • 包含三個要素:HTTP 版本、狀態(tài)碼和狀態(tài)消息。
    • 示例:HTTP/1.1 200 OK
  • 響應頭部(Headers):

    • 由多個鍵值對組成,每行一個鍵值對,用冒號分隔鍵和值。
    • 可包含多個不同的響應頭,如 Content-Type、Content-Length、Cache-Control 等。
  • 響應體(Body):

    • 用于承載服務器返回給客戶端的實際數據內容。
    • 根據不同的應用場景,響應體可以是純文本、HTML、JSON、XML、二進制數據等格式。

2.常用的狀態(tài)碼

狀態(tài)碼 含義
200 OK - 請求成功完成
301 Moved Permanently - 資源永久重定向到新URL
302 Found - 資源臨時重定向到新URL
304 Not Modified - 資源未修改,可以使用緩存的版本
400 Bad Request - 請求無效或非法
403 Forbidden - 拒絕訪問,權限不足或被禁止
404 Not Found - 請求的資源不存在
500 Internal Server Error - 服務器內部錯誤

?3.常用的響應頭

響應頭部字段 說明 示例
Content-Type 響應中實體的媒體類型 Content-Type: text/html; charset=UTF-8
Content-Length 響應中實體的長度(字節(jié)) Content-Length: 1024
Server 服務器軟件名稱和版本號 Server: Apache/2.4.29 (Unix)
Set-Cookie 服務器設置的cookie信息 Set-Cookie: sessionId=abc123
Last-Modified 資源的最后修改時間 Last-Modified: Tue, 01 Aug 2023 12:00:00 GMT
ETag 資源的實體標識符 ETag: "abc123"
Location 重定向的目標URL Location: Example Domain
Cache-Control 指定響應的緩存機制 Cache-Control: max-age=3600
Content-Encoding 響應實體的壓縮編碼方式 Content-Encoding: gzip
Access-Control-Allow-Origin 指定允許跨域請求的域名或通配符 Access-Control-Allow-Origin: *

下一篇JavaWeb-Servlet服務連接器(二)_Alphamilk的博客-CSDN博客文章來源地址http://www.zghlxwxcb.cn/news/detail-641512.html

到了這里,關于JavaWeb-Servlet服務連接器(一)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • JavaWeb-Servlet的應用

    JavaWeb-Servlet的應用

    1. HTTP協議 2. HttpServlet 什么是HTTP協議 HTTP 協議一般指 HTTP(超文本傳輸協議)。超文本傳輸協議(英語:HyperText Transfer Protocol,縮寫:HTTP)是一種用于分布式、協作式和超媒體信息系統(tǒng)的應用層協議,是因特網上應用最為廣泛的一種網絡傳輸協議,所有的 WWW 文件都必須遵守

    2024年02月08日
    瀏覽(19)
  • JavaWeb-Servlet【內含思維導圖】

    JavaWeb-Servlet【內含思維導圖】

    目錄 Servlet思維導圖?編輯 1.什么是Servlet 2.Servelt概述 3.Servlet-Quickstart Your Project 3.1創(chuàng)建一個Web項目,導入Servlet依賴 3.1.1 選擇Servlet導入依賴? ? ?? 3.1.2 導入Servlet依賴 3.2 在Web項目,定義類,實現Servlet接口,并重寫其方法 ?3.2.1 Servlet 方法介紹 4. Servlet 執(zhí)行流程 ?5. Servlet 生命

    2024年02月02日
    瀏覽(17)
  • Flink 之 Kafka連接器

    Flink附帶了一個通用的Kafka連接器,它試圖跟蹤Kafka客戶端的最新版本。Kafka的客戶端版本會在Flink不同版本間發(fā)生變化?,F代Kafka客戶端向后兼容broker 0.10.0版本及以后的版本。 用法 Kafka Source 提供了一個構造器類來構建KafkaSource的實例。下面代碼展示如何構建一個KafkaSource來消

    2023年04月08日
    瀏覽(23)
  • 汽車連接器接線端子和多芯線束連接界面

    汽車連接器接線端子和多芯線束連接界面

    冷壓接的開式壓接和閉式壓接以及熱壓接的超聲波焊接對汽車連接器接線端子和多芯線束連接界面 連接器接線端子和多芯線束的連接是電子線束行業(yè),特別是汽車行業(yè)常用的導線連接方式。汽車整車線束又由許多分支線束組成,而分支線束必須通過連接器實現連接,連接核心

    2024年01月19日
    瀏覽(16)
  • 【flink sql】kafka連接器

    Kafka 連接器提供從 Kafka topic 中消費和寫入數據的能力。 前面已經介紹了flink sql創(chuàng)建表的語法及說明:【flink sql】創(chuàng)建表 這篇博客聊聊怎么通過flink sql連接kafka 以下的連接器元數據可以在表定義中通過元數據列的形式獲取。 R/W 列定義了一個元數據是可讀的(R)還是可寫的(

    2024年02月08日
    瀏覽(22)
  • 羅技鼠標m590 連接器無法工作

    羅技鼠標m590 連接器無法工作

    買了M590,手感不錯,一開始可以連接兩臺設備。但是后來我重置了藍牙,調換了兩臺設備的連接方法,,就發(fā)現藍牙可以,連接器不行。 我比較奇怪,按道理一般連接器要比藍牙方便,但這次為什么藍牙可以,連接器不行了。然后我又把兩個連接方式調換了一下,發(fā)現還是

    2024年02月11日
    瀏覽(65)
  • 【騰訊云】騰訊云HiFlow場景連接器

    【騰訊云】騰訊云HiFlow場景連接器

    iFlow場景連接器是騰訊云推出的一個免費的應用連接自動化工具。提供助力辦公流程自動化的場景連接工具,可以零代碼的連接你的多個應用,鼠標輕點即可輕松設置自動化的工作流程數據流程,輕松實現日常辦公任務的自動化操作。 通過場景連接器,你可以輕松快速實現如

    2024年02月16日
    瀏覽(26)
  • Flink系列之:Elasticsearch SQL 連接器

    Sink: Batch Sink: Streaming Append Upsert Mode Elasticsearch 連接器允許將數據寫入到 Elasticsearch 引擎的索引中。本文檔描述運行 SQL 查詢時如何設置 Elasticsearch 連接器。 連接器可以工作在 upsert 模式,使用 DDL 中定義的主鍵與外部系統(tǒng)交換 UPDATE/DELETE 消息。 如果 DDL 中沒有定義主鍵,那么

    2024年02月04日
    瀏覽(22)
  • Flink系列之:JDBC SQL 連接器

    Scan Source: Bounded Lookup Source: Sync Mode Sink: Batch Sink: Streaming Append Upsert Mode JDBC 連接器允許使用 JDBC 驅動向任意類型的關系型數據庫讀取或者寫入數據。本文檔描述了針對關系型數據庫如何通過建立 JDBC 連接器來執(zhí)行 SQL 查詢。 如果在 DDL 中定義了主鍵,JDBC sink 將以 upsert 模式與外

    2024年02月02日
    瀏覽(24)
  • Semantic Kernel 入門系列:?Connector連接器

    Semantic Kernel 入門系列:?Connector連接器

    當我們使用Native Function的時候,除了處理一些基本的邏輯操作之外,更多的還是需要進行外部數據源和服務的對接,要么是獲取相關的數據,要么是保存輸出結果。這一過程在Semantic Kernel中可以被歸類為Connector。 Connector更像是一種設計模式,并不像Function和Memory 一樣有強制和

    2023年04月15日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包