Javaweb - 10.1 Servlet

目錄

Servlet 簡介

動態資源和靜態資源

Servlet 簡介

Servlet 開發流程

目標

開發過程

開發一個 web 類型的 module

開發一個 form 表單

開發一個 UserServlet

在 web..xml 為 userServlet 配置請求路徑

Edit Configurations

啟動項目

完!


Servlet 簡介

動態資源和靜態資源

靜態資源:

? ? ? ? 無需在程序運行時,通過代碼生成的資源,在程序運行之前就寫好的資源。例如:html css js img 音頻 視頻文件

動態資源:

? ? ? ? 需要在程序運行時,通過代碼生成的資源,在程序運行之前,無法確定的數據,運行時動態生成。例如:Servlet Thymeleaf......

? ? ? ? 動態資源指的不是視圖上的動態效果,而是簡單的人機交互效果~

舉個栗子:

? ? ? ? 去蛋糕店買蛋糕:

? ? ? ? ? ? ? ? 我們直接買柜臺上已經做好的:靜態資源

? ? ? ? ? ? ? ? 我們和店員提出要求后現場定制一個:動態資源

Servlet 簡介

Servlet(server applet)是運行在服務端(Tomcat)的 Java 小程序,是 sun 公司提供一套定義動態資源的規范,代碼層面上 Servlet 就是一個接口

? ? ? ? 用來接收 處理客戶端請求 響應給瀏覽器的動態資源。在整個 Web 應用中,Servlet 主要負責接收處理請求,協同調度功能以及響應數據。我們可以把 Servlet 稱作為 Web 應用中的控制器。

? ? ? ? 不是所有的 Java 類都能用于處理客戶端請求,能處理客戶端請求,并做出響應的一套技術標準就是 Servlet

? ? ? ? Servlet 是運行在服務端的,所以 Servlet 必須在 Web 項目中開發并且在 Tomcat 這樣的服務器容器中運行。

????????Servlet 主要起一個承上啟下的作用

Servlet 開發流程

目標

實現功能:校驗注冊時,用戶名是否被占用。通過客戶端向 Servlet 發送請求,攜帶 username,如果用戶名是 “admin”,則向客戶端響應 NO,如果是其它,響應 YES

開發過程

開發一個 web 類型的 module

上篇文章已經有所介紹,此處進行復習

開發一個 form 表單

在 web 目錄下,開發一個 form 表單,向servlet發送一個GET請求并攜帶username參數

這里的 action 先空著,因為我們還沒有寫 servlet 的代碼~

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form method = "get" action = "">用戶名:<input type = "text" name = "username"><br/><input type="submit" value = "校驗">
</form></body>
</html>

開發一個 UserServlet

在 src 目錄下面創建一個 UserServlet 類

如果直接 implements Servlet 的話,需要重寫下面四個方法,比較繁瑣

我們直接可以?extends HttpServlet

package com.zzz.servlet;import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;
import java.io.PrintWriter;/** @author zzr* @date: 2025/07/03  20:49* @description: 驗證用戶名的Servlet*/
public class userServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 1. 獲取請求中的鍵值對參數 key=value (根據參數名獲取參數 無論參數在 usl? 后面,還是在請求體中,都能獲取)String username = request.getParameter("username");// 2.處理業務的代碼String info = "YES";if ("admin".equals(username)) {info = "NO";}// 3. 將要響應的數據放入 responsePrintWriter writer = response.getWriter(); //該方法返回的是一個向響應體中打印字符串的打印流writer.write(info);}
}

注意:

? ? ? ? 1. 自定義一個類,要繼承 HttpServlet 類

? ? ? ? 2. 重寫 service 方法,該方法主要就是處理用戶的請求

? ? ? ? 3. HttpServletRequest 代表請求對象,是由請求報文,經過 Tomcat 轉換而來的,通過該對象,可以獲取請求中的信息

? ? ? ? 4. HttpServletResponse 代表響應對象,該對象會被 Tomcat 轉換為響應的報文,通過該對象,可以設置響應中的信息。

? ? ? ? 5. Servlet 對象的生命周期(創建,初始化,處理服務,銷毀)都是由 Tomcat 自己管理的,不需要我們干預。

? ? ? ? 6. HttpServletRequest 和 HttpServletResponse 兩個對象也是由 Tomcat 自動和?報文來轉換的,在調用 service 方法傳入給我們的~

在 web..xml 為 userServlet 配置請求路徑

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"version="5.0"><!--    1. 配置 servlet 類,并起一個別名servlet-class 告訴 Tomcat 對應的要實例化的 servlet 類servlet-name  用于關聯請求的映射路徑
--><servlet><servlet-name>userServlet</servlet-name><servlet-class>com.zzz.servlet.userServlet</servlet-class></servlet>
<!--    映射路徑  --><servlet-mapping><servlet-name>userServlet</servlet-name><url-pattern>/userServlet</url-pattern></servlet-mapping>
</web-app>

這里配置完映射路徑后,url-pattern 中的路徑是什么,我們的 html 頁面中 form 表單要提交的 action 就是什么~

補充:

? ? ? ? 1. Servlet 并不是文件系統中實際存在的文件或目錄,為了能夠請求到該資源,需要為其配置映射路徑

? ? ? ? 2. Servlet 的請求映射路徑配置在 web.xml 中

? ? ? ? 3. <servlet-name> 作為 servley 的別名,見名知意即可,隨意定義

? ? ? ? 4. <usl-pattern> 標簽用于定義 servlet 的請求映射路徑

? ? ? ? 5. 一個 servlet 可以對應多個不同的 <url-pattern>

? ? ? ? 6. 多個 sevlet 不能使用相同的 <url-pattern>

Edit Configurations

先將我們之前部署的項目刪除掉~

再部署我們的 web02~

啟動項目

使用 debug 模式運行測試,訪問 index.html,提交表單測試

打個斷點,debug 模式運行

自動會跳到 index.html 頁面(index.html 頁面是會默認跳出的頁面~)

輸入 zzz 點擊校驗,因為我們的斷點,瀏覽器等待響應,轉小圓圈

然后進入 IDEA,查看,收到了我們的 “zzz”,

全部放通后,最終瀏覽器響應 YES

完!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/88303.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/88303.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/88303.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

手機能用酒精擦嗎?

對于電視、電腦屏幕來說&#xff0c;為了避免反光、改善顯示效果&#xff0c;會在屏幕表面覆上一層“抗反射涂層”。不同廠商設計的涂層材料并不相同&#xff0c;酒精作為良好的溶劑&#xff0c;確實會損壞可溶的涂層。手機作為觸控產品&#xff0c;通常會在屏幕表面增加“疏水…

【圖像處理基石】圖像超分辨率有哪些研究進展值得關注?

近年來&#xff0c;圖像超分辨率&#xff08;SR&#xff09;領域在深度學習技術的推動下取得了顯著進展&#xff0c;尤其在模型架構優化、計算效率提升和真實場景適應性等方面涌現出諸多創新。以下是基于最新研究的核心進展梳理&#xff1a; 一、高效大圖像處理&#xff1a;像素…

Windows系統下WSL從C盤遷移方案

原因&#xff1a;一開始裝WSL的時候放在了C盤&#xff0c;這下好了&#xff0c;跑了幾個深度學習模型訓練后&#xff0c;C盤快滿了&#xff0c;這可怎么辦&#xff1f;可愁壞了。沒關系&#xff0c;山人自有妙計。我們將WSL遷移到D盤或者E盤呀。一.遷移操作步驟前期準備&#x…

金融時間序列機器學習訓練前的數據格式驗證系統設計與實現

金融時間序列機器學習訓練前的數據格式驗證系統設計與實現 前言 在機器學習項目中&#xff0c;數據質量是決定模型成功的關鍵因素。特別是在金融時間序列分析領域&#xff0c;原始數據往往需要經過復雜的預處理才能用于模型訓練。本文將詳細介紹一個完整的數據格式驗證系統&…

cocos2dx3.x項目升級到xcode15以上的iconv與duplicate symbols報錯問題

cocos2dx3.x項目升級xcode15以上后會有幾處報錯。1. CCFontAtlas.cpp文件下的iconv與iconv_close的報錯。修改如下&#xff1a;// iconv_close(_iconv);iconv_close((iconv_t)_iconv);iconv((iconv_t)_iconv, (char**)&pin, &inLen, &pout, &outLen); /…

HTTP/3.0的連接遷移使用連接ID來標識連接為什么可以做到連接不會中斷

一定要結合圖文一起理解&#xff01;&#xff01; 文章目錄文字描述傳統方式&#xff1a;HTTP/2 基于 TCP 的連接&#xff08;就像打固定電話&#xff09;HTTP/3 基于 QUIC 的連接遷移&#xff08;就像用帶“通話ID”的手機&#xff09;總結一下圖文詳解HTTP2.0傳統方式&#x…

讓工作效率翻倍的終極神器之被工具定義的編程時代(VS Code + GitHub Copilot + JetBrains全家桶)

目錄一、引言&#xff1a;被工具定義的編程時代二、背景&#xff1a;傳統開發模式的效率瓶頸2.1 認知負荷過載2.2 工具鏈斷層三、效率翻倍工具鏈深度解析3.1 智能代碼編輯器&#xff1a;從打字機到智能助手3.2 版本控制大師&#xff1a;Git的隱藏技能3.3 自動化腳本&#xff1a…

docker部署單機gitlab

環境準備&#xff1a; 證書&#xff1a; acme.sh --issue --dns dns_ali -d gitlab.chandz.com -d *.chandz.comcp /root/.acme.sh/gitlab.chandz.com_ecc/* /data/docker-data-volume/gitlab/ssl/目錄&#xff1a; mkdir -p /data/docker-data-volume/gitlab cd /data/docker-…

【K8S】在 Kubernetes 上配置安裝 Nginx Ingress 控制器指南

文章目錄架構概覽先決條件部署方案選擇方案一&#xff1a;手動 YAML 部署核心組件詳解方案二&#xff1a;Helm快速部署&#xff08;生產推薦&#xff09;驗證部署DNS配置策略方案A&#xff1a;單域名映射方案B&#xff1a;通配符映射&#xff08;推薦&#xff09;應用實戰&…

SHA-256算法詳解——Github工程結合示例和動畫演示

近日筆者在學習區塊鏈的相關知識&#xff0c;接觸到SHA-256算法&#xff0c;這里做一個知識梳理和總結。 強烈推薦大家自行去學習下面鏈接github上的工程&#xff0c;作者的動畫演示和解釋做的非常出色&#xff0c;邏輯非常清晰&#xff0c;B站搬運的對應的油管的講解視頻也放…

C語言模塊化編程思維以及直流電機控制(第四天)

&#x1f468;?&#x1f4bb;個人主頁&#xff1a;開發者-削好皮的Pineapple! &#x1f468;?&#x1f4bb; hello 歡迎 點贊&#x1f44d; 收藏? 留言&#x1f4dd; 加關注?! &#x1f468;?&#x1f4bb; 本文由 削好皮的Pineapple! 原創 &#x1f468;?&#x1f4…

【PTA】數據結構與算法0001:1025 反轉鏈表

文章大綱寫在前面測試用例ac代碼學習代碼知識點小結寫在前面 實現思路 結構體封裝數據 根據order重新排序k區間值迭代翻轉 n整除k&#xff0c;則最后地址輸出"-1"非整除&#xff0c;最后剩余區間&#xff0c;原序輸出。最后地址輸出"-1" 題目有難度&…

深入解析 .NET 泛型:從原理到實戰優化

在現代軟件開發中&#xff0c;代碼復用性和性能優化是開發者永恒的追求。.NET 泛型作為一項強大的語言特性&#xff0c;不僅能夠幫助我們消除重復代碼&#xff0c;還能顯著提升代碼的類型安全性和運行效率。本文將帶你全面了解 .NET 泛型&#xff0c;從基本概念到高級用法&…

Excel 處理軟件 內容復制工具:工作表批量復制 + 合并拆分簡潔操作零門檻

各位辦公小能手們&#xff01;今天給你們介紹一款超牛的軟件——Excel內容復制工具。軟件下載地址安裝包 這可是專門為了讓Excel數據處理效率蹭蹭往上漲而設計的輔助軟件呢&#xff01;它的主要功能可多啦&#xff0c;能批量復制工作表&#xff0c;還能把好多表格合并到同一個…

【機器學習實戰筆記 14】集成學習:XGBoost算法(一) 原理簡介與快速應用

《XGBoost算法》 推薦的學習路徑&#xff1a; 【快速實現XGBoost、跑通代碼】- 第一部分 【快速掌握XGBoost應用、達到自由調參水平】- 第一部分~第三部分 【快速掌握XGBoost原理、面試得以通關】- 第一部分1 第二部分1.2、2.2 第四部分 目錄《XGBoost算法》一 XGBoost的基…

.NET AI 模板

引言 隨著人工智能技術的快速發展&#xff0c;AI應用開發已成為開發者必備的技能之一。然而&#xff0c;對于許多.NET開發者來說&#xff0c;如何快速上手AI開發仍然是一個挑戰。微軟推出的.NET AI模板預覽版正是為了解決這一問題而生&#xff0c;為開發者提供了構建智能聊天應…

EFK9.0.3 windows搭建

背景 最近某個功能要使用到ELK&#xff08;ElasticSearch、Logstash、Kibana&#xff09;采集日志&#xff0c;對數據進行分析&#xff0c;網上百度了一下&#xff0c;目前推薦不使用Logstash而使用Filebeat ,即EFK。 下載鏈接 Elasticsearch Kibana Filebeat 安裝前提 …

上海新華醫院奉賢院區:以元宇宙技術重構未來醫療生態

引言&#xff1a;當醫療遇上元宇宙在數字化轉型的浪潮中&#xff0c;上海新華醫院奉賢院區以"智慧醫院"為定位&#xff0c;率先構建了"元宇宙醫院"雛形。通過AI大模型、三維影像分析、AR手術導航等前沿技術的深度融合&#xff0c;醫院正在打造一個覆蓋全周…

知識競賽答題pk小程序用戶操作手冊

知識競賽答題 PK 小程序用戶操作手冊 一、注冊與登錄 用戶首次使用答題pk小程序需上傳頭像&#xff0c;輸入昵稱&#xff0c;并選擇加入團隊。如果是企業內部人員使用可開啟白名單功能。二、進入答題 PK 模式 登錄后&#xff0c;在小程序首頁&#xff0c;您可以看到 “單人挑戰…

等大小譜聚類

聚類是一種將具有相似特征的數據點進行分組的方法。它廣泛應用于探索性數據分析&#xff0c;并已被證明在模式識別、市場和客戶細分、推薦系統、數據壓縮以及生物數據分析等許多應用中都發揮著重要作用。 盡管聚類算法種類繁多&#xff0c;但沒有一種能夠生成點數均衡的聚類。…