一天一個java知識點----Tomcat與Servlet

認識BS架構

  • 靜態資源:服務器上存儲的不會改變的數據,通常不會根據用戶的請求而變化。比如:HTML、CSS、JS、圖片、視頻等(負責頁面展示)
  • 動態資源:服務器端根據用戶請求和其他數據動態生成的,內容可能會在每次請求時都發生變化。比如:Servlet、JSPSpring框架等(負責邏輯處理)
  • B/S 架構:Browser/Server,瀏覽器/服務器架構模式。客戶端只需瀏覽器,應用程序的邏輯和數據都存在服務器端。(維護方便?體驗一般)
  • C/S 架構: Client/Server,客戶端/服務器架構模式。需要單獨開發維護客戶端。(體驗不錯?開發維護麻煩

TomCat

介紹:

  • 概念: Tomcat是一個開源免費的輕量級Web服務器,是Apache軟件基金會的核心項目,支持Servlet/JSP少量JavaEE(JakartaEE)規范。
  • JavaEE:Java Enterprise Edition,Java企業版。指Java企業級開發的技術規范總和。包含13項技術規范:JDBC、JNDI、EJB、RMI、JSP、ServletXML、JMS、Java IDL、JTS、JTA、JavaMail、JAF。
  • Tomcat 也被稱為 Web容器、Servlet容器Servlet程序需要依賴于Tomcat才能運行?。
  • 官網:https://tomcat.apache.org/

安裝配置

  • 下載:官網下載,地址 https://tomcat.apache.org/download-90.cgi
  • 安裝:綠色版,直接解壓即可
  • 卸載:直接刪除目錄即可
  • 啟動:雙擊 bin/startup.bat ???????
  • 關閉:
  • 直接×掉運行窗口:強制關閉
  • bin/shutdown.bat:正常關閉
  • Ctrl+C:正常關閉

注意:如果Tomcat啟動窗口一閃而過,需要檢查 JAVA_HOME 環境變量是否正確配置。

還有就是環境變量里面需要配置一下:

配置

讓命令窗口沒有亂碼:

如何更改tomcat端口:(解決端口沖突的)

Servlet

  • Servlet 是運行在Web服務器中的小型java程序,是Java提供的一門動態web資源開發技術。通常通過HTTP協議接收和響應來自于客戶端的請求。
  • Servlet 是JavaEE規范之一,其實就是一個接口(定義Servlet需實現Servlet接口 或 繼承HttpServlet) ,并由web服務器運行Servlet。

第一個Servlet程序

準備:創建maven項目(設置打包方式為war),導入Servlet坐標(provided)。

開發:

  • 定義一個類,實現Servlet接口(繼承HttpServlet),并實現所有方法。
  • 在Servlet類上使用@WebServlet注解,配置該Servlet的訪問路徑。
  • 部署:將開發好的Servlet部署在外部的Tomcat服務器中運行。

XML
<!-- 打包方式修改為war包 ?-->
<packaging>war</packaging>

<dependencies>
????<dependency>
????????<groupId>javax.servlet</groupId>
????????<artifactId>javax.servlet-api</artifactId>
????????<version>4.0.1</version>
????????<!-- 依賴范圍設置為provide,打包后沒有啦,會放到Tomcat中運行,Tomcat中已經繼承了servlet-api.jar包?-->
????????<scope>provided</scope>
????</dependency>
</dependencies>

Java
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
????// doGet: 用于處理GET請求
????@Override
????protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
????????// 1.獲取請求參數
????????String name = req.getParameter("name");
????????// 2.給瀏覽器響應數據
????????resp.getWriter().println("Hello Servlet 入門:"+name);
????}
}

打包成功war包

復制war文件到webapps目錄下

啟動tomcat

打開網頁輸入:localhost:8080/servlet-demo/hello?name=Tom,瀏覽器顯示這個即可。

將本地Tomcat集成到IDEA

  1. 第一步讓IDEA管理Tomcat

  1. 第二步:部署web項目

注意事項:

  • 項目的打包方式需要設置為 war
  • servlet-api依賴的作用范圍 scope 必須設置為provided

Servlet的執行流程

  • Servlet對象是由誰創建的,Servlet的doGet方法是由誰調用的 ?
  • Servlet對象由Web服務器創建,Servlet方法由Web服務器調用。
  • HttpServletRequest:用于封裝所有的請求數據
  • HttpServletResponse:用于封裝所有的響應數據

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

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

相關文章

YOLOV8 OBB 海思3516訓練流程

YOLOV8 OBB 海思3516訓練流程 目錄 1、 下載帶GPU版本的torch(可選) 1 2、 安裝 ultralytics 2 3、 下載pycharm 社區版 2 4、安裝pycharm 3 5、新建pycharm 工程 3 6、 添加conda 環境 4 7、 訓練代碼 5 9、配置Ymal 文件 6 10、修改網絡結構 9 11、運行train.py 開始訓練模…

【深度學習】花書第18章——配分函數

直面配分函數 許多概率模型&#xff08;通常是無向圖模型&#xff09;由一個未歸一化的概率分布 p ~ ( x , θ ) \tilde p(\mathbf x,\theta) p~?(x,θ)定義。我們必須通過除以配分函數 Z ( θ ) Z(\pmb{ \theta}) Z(θ)來歸一化 p ~ \tilde p p~?。以獲得一個有效的概率分…

工作記錄1

日常總結、靈感記錄、學習要點。持續記錄 學海無涯,再好的記性也比不過爛筆頭,記錄一下學習日常、靈感、要點。 前言:最近看見一個博文,很有感觸,是某個大佬自己運營的網站,分享了他的各種經驗文章和自身的一些筆記。本人還沒有他這么屌,所以還是先在CSDN上小試牛刀吧…

Spring Boot(二十一):RedisTemplate的String和Hash類型操作

RedisTemplate和StringRedisTemplate的系列文章詳見&#xff1a; Spring Boot&#xff08;十七&#xff09;&#xff1a;集成和使用Redis Spring Boot&#xff08;十八&#xff09;&#xff1a;RedisTemplate和StringRedisTemplate Spring Boot&#xff08;十九&#xff09;…

智能指針之設計模式1

本文探討一下智能指針和GOF設計模式的關系&#xff0c;如果按照設計模式的背后思想來分析&#xff0c;可以發現圍繞智能指針的設計和實現有設計模式的一些思想體現。當然&#xff0c;它們也不是嚴格意義上面向對象的設計模式&#xff0c;畢竟它們沒有那么分明的類層次體系&…

中間件--ClickHouse-1--基礎介紹(列式存儲,MPP架構,分布式計算,SQL支持,向量化執行,億萬級數據秒級查詢)

1、概述 ClickHouse是一個用于聯機分析(OLAP)的列式數據庫管理系統(DBMS)。它由俄羅斯的互聯網巨頭Yandex為解決其內部數據分析需求而開發&#xff0c;并于2016年開源。專為大規模數據分析&#xff0c;實時數據分析和復雜查詢設計&#xff0c;具有高性能、實時數據和可擴展性等…

Go之Slice和數組:深入理解底層設計與最佳實踐

在Go語言中&#xff0c;數組&#xff08;Array&#xff09;和切片&#xff08;Slice&#xff09;是兩種看似相似卻本質不同的數據結構。本文將深入剖析它們的底層實現機制&#xff0c;并結合實際代碼示例&#xff0c;幫助開發者掌握核心差異和使用場景。 一、基礎概念&#xff…

力扣熱題100——普通數組(不普通)

普通數組但一點不普通&#xff01; 最大子數組和合并區間輪轉數組除自身以外數組的乘積缺失的第一個正數 最大子數組和 這道題是非常經典的適用動態規劃解決題目&#xff0c;但同時這里給出兩種解法 動態規劃、分治法 那么動態規劃方法大家可以在我的另外一篇博客總結中看到&am…

矩陣基礎+矩陣轉置+矩陣乘法+行列式與逆矩陣

GPU渲染過程 矩陣 什么是矩陣&#xff08;Matrix&#xff09; 向量 &#xff08;3&#xff0c;9&#xff0c;88&#xff09; 點乘&#xff1a;計算向量夾角 叉乘&#xff1a;計算兩個向量構成平面的法向量。 矩陣 矩陣有3行&#xff0c;2列&#xff0c;所以表示為M32 獲取固…

MySQL之text字段詳細分類說明

在 MySQL 中&#xff0c;TEXT 是用來存儲大量文本數據的數據類型。TEXT 類型可以存儲非常長的字符串&#xff0c;比 VARCHAR 類型更適合存儲大塊的文本數據。TEXT 數據類型分為以下幾個子類型&#xff0c;每個子類型用于存儲不同大小范圍的文本數據&#xff1a; TINYTEXT: 可以…

超詳細!Android 面試題大匯總與深度解析

一、Java 與 Kotlin 基礎 1. Java 的多態是如何實現的&#xff1f; 多態是指在 Java 中&#xff0c;同一個行為具有多個不同表現形式或形態的能力。它主要通過方法重載&#xff08;Overloading&#xff09;和方法重寫&#xff08;Overriding&#xff09;來實現。 方法重載&a…

如何提高webrtc操作跟手時間,降低延遲

第一次做webrtc項目&#xff0c;操作延遲&#xff0c;一直是個問題&#xff0c;多次調試都不能達到理想效果。偶爾發現提高jitterBuffer時間可以解決此問題。關鍵代碼 const _setJitter (values: number) > { const receives peerConnection.getReceivers();receives.f…

語音合成(TTS)從零搭建一個完整的TTS系統-第一節-效果演示

一、概述 語音合成又叫文字轉語音&#xff08;TTS-text to speech &#xff09;&#xff0c;本專題我們記錄從零搭建一個完整的語音合成系統&#xff0c;包括文本前端、聲學模型和聲碼器&#xff0c;從模型訓練到系統的工程化實現&#xff0c;模型可以部署在手機等嵌入式設備上…

實驗三 I/O地址譯碼

一、實驗目的 掌握I/O地址譯碼電路的工作原理。 二、實驗電路 實驗電路如圖1所示&#xff0c;其中74LS74為D觸發器&#xff0c;可直接使用實驗臺上數字電路實驗區的D觸發器&#xff0c;74LS138為地址譯碼器&#xff0c; Y0&#xff1a;280H&#xff5e;287H&…

Linux 使用Nginx搭建簡易網站模塊

網站需求&#xff1a; 一、基于域名[www.openlab.com](http://www.openlab.com)可以訪問網站內容為 welcome to openlab ? 二、給該公司創建三個子界面分別顯示學生信息&#xff0c;教學資料和繳費網站&#xff0c;基于[www.openlab.com/student](http://www.openlab.com/stud…

MyBatis 如何使用

1. 環境準備 添加依賴&#xff08;Maven&#xff09; 在 pom.xml 中添加 MyBatis 和數據庫驅動依賴&#xff1a; <dependencies><!-- MyBatis 核心庫 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId&g…

ArkTS組件的三個通用(通用事件、通用屬性、通用手勢)

文章目錄 通用事件點擊事件 onClick觸摸事件 onTouch掛載、卸載事件拖拽事件按鍵事件 onKeyEvent焦點事件鼠標事件懸浮事件組件區域變化事件 onAreaChange組件尺寸變化事件組件可見區域變化事件組件快捷鍵事件自定義事件分發自定義事件攔截 通用屬性尺寸設置位置設置布局約束邊…

智慧城市像一張無形大網,如何緊密連接你我他?

智慧城市作為復雜巨系統&#xff0c;其核心在于通過技術創新構建無縫連接的網絡&#xff0c;使物理空間與數字空間深度融合。這張"無形大網"由物聯網感知層、城市數據中臺、人工智能中樞、數字服務入口和安全信任機制五大支柱編織而成&#xff0c;正在重塑城市運行規…

【python】django sqlite版本過低怎么辦

方法一&#xff1a;下載最新版本 復制上面的內容的鏈接 在服務器上進行操作 wget https://sqlite.org/2025/sqlite-autoconf-3490100.tar.gz tar -zxvf sqlite-autoconf-3490100.tar.gz cd sqlite-autoconf-3490100 ./configure --prefix/usr/local make && make in…

PyTorch - Tensor 學習筆記

上層鏈接&#xff1a;PyTorch 學習筆記-CSDN博客 Tensor 初始化Tensor import torch import numpy as np# 1、直接從數據創建張量。數據類型是自動推斷的 data [[1, 2],[3, 4]] x_data torch.tensor(data)torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])輸出&am…