學習筆記——Servlet

来源:https://www.cnblogs.com/isDaHua/archive/2022/10/29/16839121.html
-Advertisement-
Play Games

2022-10-29 Servlet 1、 Servlet的作用: 例如:查詢數據 (1)瀏覽器端點擊某個查詢功能,向伺服器端發出請求;伺服器端解析請求,創建Servlet對象,並調用特定方法;Servlet對象調用“DAO”方法獲取數據;DAO方法查詢資料庫。 (2)之後將後端的處理數據傳遞給“前 ...


2022-10-29

 Servlet

1、 Servlet的作用:

例如:查詢數據

(1)瀏覽器端點擊某個查詢功能,向伺服器端發出請求;伺服器端解析請求,創建Servlet對象,並調用特定方法;Servlet對象調用“DAO”方法獲取數據;DAO方法查詢資料庫。

(2)之後將後端的處理數據傳遞給“前端頁面”,進行刷新。資料庫返回查詢結果;DAO方法返回集合數據;Servlet將數據響應給瀏覽器;瀏覽器接收到響應,顯示頁面。

2、Servlet的含義:

Servlet:Server Applet(就是指伺服器端的小程式。主要用於和客戶端交互,接收和處理請求)。

3、創建Servlet的“HelloServlet”:

步驟:

(1)新建一個普通類。如在創建的“Java Enterprise”項目的“Web Application”模塊中的“src”文件夾下創建一個“HelloServlet”類。

(2)實現介面Servlet。(實現介面使用的是“implements Servlet”)

(3)實現介面的抽象方法(主要實現“service”方法)

package com.haha.servlet;

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

public class HelloServlet implements Servlet {
    /**
     * 主要功能:處理客戶端的請求和響應
     * @param servletRequest 來自客戶端的請求
     * @param servletResponse 來自客戶端的響應
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("訪問到HelloServlet的service方法...");
    }

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

    @Override
    public void destroy() {

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

    }

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

(4)給剛剛創建的類(HelloServlet)設置訪問路徑。設置的訪問路徑在“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">
    <servlet>
        <!--為servlet起名-->
        <servlet-name>HelloServlet</servlet-name>
        <!--servlet的全類名(就是包名.類名)-->
        <servlet-class>com.haha.servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <!--和上面起的名字一樣-->
        <servlet-name>HelloServlet</servlet-name>
        <!--訪問servlet的路徑,註意前面一定要加/,要不然訪問不到-->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

之後,在該模塊下的“src”文件夾下,創建一個“index.html”,設置一個超鏈接進行訪問,如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <a href="hello">訪問HelloServlet</a>
</body>
</html>

運行結果:

在彈出的瀏覽器中點擊“超鏈接”,頁面出現的空白的,在idea中的控制臺上出現了運行結果。

 

 

 4、servlet的生命周期

在servlet中的介面中,有“init/service/destory”。預設情況下,在進行請求時,執行init與service方法,如果要執行“destory”方法,那麼需要停止“tomcat”伺服器。

5、另一種實現servlet的方式

(1)創建一個普通類(MysecondServlet)

(2)繼承“HttpServlet”

(3)重寫“doget”和“dopost”方法。如下:

package com.haha.servlet;

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

public class MySecondServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("訪問到了MySecondServlet的doGet方法...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("訪問到了MySecondServlet的doPost方法...");
    }
}

(4)在web.xml中設置MysecondServlet的配置文件

<?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">
  

    <servlet>
        <servlet-name>mySencondServlet</servlet-name>
        <servlet-class>com.haha.servlet.MySecondServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>mySencondServlet</servlet-name>
        <url-pattern>/second</url-pattern>
    </servlet-mapping>

</web-app>

測試:

在剛剛創建的“index.html”中創建一個超鏈接,進行訪問

<a href="second">訪問MySencondServlet</a>

6、創建servlet的簡易方式:

在“src”文件夾下的“包名”下,點擊右鍵,如下:

 

可命名為“LoginServlet”,之後,在配置文件中會自動創建"<servlet>",但需要手動創建“<servlet-mapping>”

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 沁恆最近推出的低價CH32V003系列, 基於青稞RISC-V2A內核, 48MHz主頻, 2KB SRAM, 16KB Flash, 工作電壓相容3.3V和5V. Win10下的開發環境是比較簡單的, 軟體就是MounRiver, 版本v1.82, 軟體集成了代碼編輯, 編譯環境和燒錄工具. 直接... ...
  • 好家伙,又到了修bug的環節,(深嘆一口氣) 好了,來看報錯 2022-10-29 23:27:52.155 WARN 15068 [nio-8011-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1364, SQLState ...
  • 閱識風雲是華為雲信息大咖,擅長將複雜信息多元化呈現,其出品的一張圖(雲圖說)、深入淺出的博文(雲小課)或短視頻(雲視廳)總有一款能讓您快速上手華為雲。更多精彩內容請單擊此處。 摘要:CarbonData是一種新型的Apache Hadoop本地文件格式,使用先進的列式存儲、索引、壓縮和編碼技術,以提 ...
  • ①表級鎖:全局鎖,元數據鎖,意向鎖,AUTO-INC鎖 ②行級鎖:兩階段鎖協議,間隙鎖,臨鍵鎖 ③事務隔離級別,ACID特性 ④死鎖:解決方案 ...
  • 大家好,我是陶朱公Boy. 今天跟大家分享一款基於“生產者消費者模式”下實現的組件。 該組件是作者偶然在翻閱公司一中間件源碼的時候碰到的,覺得設計的非常精美、巧妙,花了點時間整理成文分享給大家。 ...
  • 2022-10-29 一、web中的兩個介面: (1)ServletConfig: 說明:每當有一個servlet對象時,就會有唯一 一個servletConfig配置文件對象 功能:能獲得Servlet名稱(該名稱是web.xml中配置的servlet-name的值),使用方法:如下,可寫在 創建 ...
  • python版本:python 3.9 libpcap版本:1.11.0b7 python libpcap庫是底層綁定c語言libpcap庫的開發包,旨在提供python應用可訪問的unix c libpcap庫API(以及為win32系統提供的Npcap、WinPcap),直接使用底層c代碼,性能 ...
  • 同源策略介紹 同源策略(Same origin policy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會受到影響。可以說Web是構建在同源策略基礎之上的,瀏覽器只是針對同源策略的一種實現 請求的url地址,必須與瀏覽器上的url地址處於同域上,也就 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...