Spring boot和SSM項目對比

目錄對比

springboot目錄

project├─src│   ├─main│   │   ├─java│   │   │   ├─com.example.demo│   │   │   │   ├─config    // 存放SpringBoot的配置類│   │   │   │   ├─controller    // 存放控制器類│   │   │   │   ├─entity    // 存放實體類│   │   │   │   ├─mapper    // 存放Mapper接口和xml文件│   │   │   │   ├─service    // 存放業務邏輯接口和實現類│   │   │   │   └─Application.java    // SpringBoot啟動類│   │   │   └─resources│   │   │       ├─static    // 存放靜態資源(css/js/img等)│   │   │       ├─templates    // 存放模板頁面(不是jsp)│   │   │       ├─application.yml    // SpringBoot配置文件│   │   │       └─mybatis    // 存放MyBatis配置和sql文件│   │   └─test    // 存放測試類│   └─test└─target    // 執行maven命令后生成的build目錄
src/main/java:Java源代碼目錄
src/main/resources:資源文件目錄
src/test/java:測試代碼目錄
src/test/resources:測試資源目錄
pom.xml:Maven構建文件

SSM目錄

src/main/java:Java源代碼目錄
controller:SpringMVC的控制器目錄
dao:數據訪問層目錄,實現與數據庫的交互
entity:實體類目錄,與數據庫表一一對應
service:業務邏輯層目錄,實現業務邏輯的處理
utils:工具類目錄,例如處理分頁、日期等通用操作的類
src/main/resources:配置文件目錄
mapper:MyBatis的映射文件目錄,實現SQL語句的映射
spring:Spring相關的配置文件目錄,包括Spring的配置文件、SpringMVC的配置文件等
db.properties:數據庫連接配置文件
src/main/webapp:Web應用目錄
WEB-INF:包含JSP文件的目錄和Spring配置文件
static:包含靜態資源的目錄,如CSS、JS、圖片等
index.jsp:首頁文件
src/main/java:Java源代碼目錄
src/main/resources:資源文件目錄
src/test:測試代碼目錄
src/main/webapp:Web應用程序的Web資源目錄
pom.xml:Maven構建文件

SSM是一種傳統的Java Web開發框架,它們三者分別是Spring、SpringMVC和MyBatis。
SpringBoot則是一個基于Spring框架的快速開發框架,它提供了很多基礎功能的自動化配置和約定優于配置的方式來簡化開發,比如自動配置數據源、自動配置Servlet容器、自動配置日志等等。

使得開發人員可以更專注于業務邏輯的實現,而不是耗費大量的時間在配置和調整上。

選擇SpringBoot項目的原因有以下幾點:

簡化配置:SpringBoot通過自動配置,簡化了項目的配置過程。開發者不需要再手動配置眾多的XML文件或注解,只需要使用一些默認配置,就可以快速開發出一個可用的應用程序。

集成度高:SpringBoot提供了豐富的starter依賴,可以快速集成常用的框架和技術,如Spring、Hibernate、MyBatis、Thymeleaf等,同時也支持與其他開源項目的集成。

提高開發效率:SpringBoot通過自動配置和快速集成的特性,讓開發者更加關注業務邏輯的實現,快速開發出高質量的應用程序,提高了開發效率。

易于維護:由于SpringBoot減少了配置文件和注解的復雜性,項目結構簡單,代碼易于維護,提高了項目的可讀性和可維護性。

社區活躍:SpringBoot作為Spring官方針對開發者的需求推出的一個項目,得到了廣泛的認可和支持,因此擁有一個活躍的社區,可以及時獲取到問題的解決方案和新版本的更新。

Servlet

Servlet 是 Server?Applet?的縮寫,譯為“服務器端小程序”,是一種使用 Java 語言來開發動態網站的技術。Servlet 是 Sun 公司推出的一種基于 Java 的動態網站開發技術。編寫 Servlet 代碼需要遵循 Java 語法,一個 Servlet 程序其實就是一個按照 Servlet 規范編寫的 Java 類。Servlet 程序需要先編譯成字節碼文件(.class文件),然后再部署到服務器運行。

Servlet 是基于 Java 語言的,運行 Servlet 必然少不了 JRE 的支持,它負責解析和執行字節碼文件(.class文件)。然而 JRE 只包含了 Java 虛擬機(JVM)、Java 核心類庫和一些輔助性性文件,它并不支持 Servlet 規范。要想運行 Servlet 代碼,還需要一種額外的部件,該部件必須支持 Servlet 規范,實現了 Servlet 接口和一些基礎類,這種部件就是 Servlet容器。

一個動態頁面對應一個 Servlet 類,開發一個動態頁面就是編寫一個 Servlet 類,當用戶請求到達時,Servlet 容器會根據配置文件(web.xml)來決定調用哪個類。

Servlet 容器就是 Servlet 程序的運行環境,它主要包含以下幾個功能:

  • 實現 Servlet 規范定義的各種接口和類,為 Servlet 的運行提供底層支持;
  • 管理用戶編寫的 Servlet 類,以及實例化以后的對象;
  • 提供 HTTP 服務,相當于一個簡化的服務器。

Web容器

部署動態網站一般需要 Web 服務器的支持,例如:

  • 運行 PHP 網站一般選擇 Apache 或者 Nginx;
  • 運行 ASP/ASP.NET 網站一般選擇 IIS;
  • 運行?Python?網站一般選擇內置的?WSGI 服務器模塊——wsgiref。

常用的 Web 容器有 Tomcat、Jboss、Jetty、WebLogic 等,其中 Tomcat 由 Java 官方提供,Web 容器往往也會自帶 Web 服務器模塊,提供基本的 HTTP 服務,因此這里的 Web容器 = Web服務器 + Servlet容器

TOMCAT

子目錄說明
bin??????命令中心(啟動命令,關閉命令……)
conf?????配置中心(端口號,內存大小……)
lib???????Tomcat 的庫文件。Tomcat 運行時需要的 jar 包所在的目錄。
logs??????存放日志文件。
temp?????存儲臨時產生的文件,即緩存。
webapps??存放項目的文件,web 應用放置到此目錄下瀏覽器可以直接訪問。
work?????編譯以后的 class 文件。

在?Servlet?中,一個動態網頁對應一個 Servlet 類,我們可以通過 web.xml 配置文件將 URL 路徑和 Servlet 類對應起來。訪問一個動態網頁的過程,實際上是將對應的 Servlet 類加載、實例化并調用相關方法的過程;網頁上顯示的內容,就是通過 Servlet 類中的某些方法向瀏覽器輸出的 HTML 語句。

serlet三種創建方式

在Serlet中,一個動態網頁對應一個 Servlet 類,我們可以通過 web.xml 配置文件將 URL 路徑和 Servlet 類對應起來。

所以,使用 Servlet 創建動態網頁的第一步,就是創建 Servlet 類

Servlet 規范的最頂層是一個名為?javax.servlet.Servlet 的接口,所有的 Servlet 類都要直接或者間接地實現該接口。直接實現 Servlet 接口不太方便,所以 Servlet 又內置了兩個 Servlet 接口的實現類(抽象類),分別為 GenericServlet 和 HttpServlet,因此,創建 Servlet 類有如下三種方式:

  • 實現 javax.servlet.Servlet 接口,重寫其全部方法。
  • 繼承 javax.servlet.GenericServlet 抽象類,重寫 service() 方法。
  • 繼承 javax.servlet.http.HttpServlet 抽象類,重寫 doGet() 或 doPost() 方法。

Servlet?沒有 main() 方法,不能獨立運行,但它可以作為 JavaWeb 應用的一個組件被部署到 Servlet 容器中,由容器來實例化和調用 Servlet 的方法,

JavaWeb 應用

JavaWeb 應用由一組 Servlet/JSP、HTML 文件、相關 Java 類、以及其他的資源組成,它可以在由各種供應商提供的 Servlet 容器中運行。由 JavaWeb 應用的定義可知, Servlet 是 JavaWeb 應用的一個組件。

以 Tomcat 為例,通常將 JavaWeb 應用存放到 Tomcat 的 webapps 目錄下。

在 Tomcat 中部署 JavaWeb 應用最快捷的方式,就是直接將?JavaWeb 應用的所有文件復制到 Tomcat 的 /webapps 目錄下。在默認情況下,Tomcat 會自動加載 webapps 目錄下的 JavaWeb 應用,并把它發布到名為 localhost 的虛擬主機中。

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

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

相關文章

《關于潯川社團退出DevPress社區及內容撤回的聲明》

《關于潯川社團退出DevPress社區及內容撤回的聲明》 尊敬的DevPress社區及讀者: 經潯川社團內部決議,我社決定自**2025年5月26日**起正式退出DevPress社區,并撤回所有由我社成員在該平臺發布的原創文章。相關事項聲明如下: …

Python性能優化利器:__slots__的深度解析與避坑指南

核心場景:當需要創建數百萬個屬性固定的對象時,默認的__dict__字典存儲會造成巨大內存浪費。此時__slots__能通過元組結構取代字典,顯著提升內存效率(實測節省58%內存)! 底層原理:為何能節省內…

Go 語言中的 Struct Tag 的用法詳解

在 Go 語言中,結構體字段標簽(Struct Tag) 是一種用于給字段添加元信息(metadata)的機制,常用于序列化(如 JSON、XML)、ORM 映射、驗證等場景。你在開發 Web 應用或處理數據交互時&a…

微軟正式發布 SQL Server 2025 公開預覽版,深度集成AI功能

微軟在今年的 Build 2025 大會上正式發布了 SQL Server 2025 公開預覽版,標志著這一經典數據庫產品在 AI 集成、安全性、性能及開發者工具方面的全面升級。 AI 深度集成與創新 原生向量搜索:SQL Server 2025 首次將 AI 功能直接嵌入數據庫引擎&#xff…

React從基礎入門到高級實戰:React 基礎入門 - React 的工作原理:虛擬 DOM 與 Diff 算法

React 的工作原理:虛擬 DOM 與 Diff 算法 引言 React 是現代前端開發的明星框架,它的出現徹底改變了我們構建用戶界面的方式。無論是動態的 Web 應用還是復雜的單頁應用(SPA),React 都能以高效的渲染機制和簡潔的組件…

解釋一下NGINX的反向代理和正向代理的區別?

大家好,我是鋒哥。今天分享關于【解釋一下NGINX的反向代理和正向代理的區別?】面試題。希望對大家有幫助; 解釋一下NGINX的反向代理和正向代理的區別? NGINX的反向代理和正向代理的區別主要體現在它們的功能和使用場景上。下面我會詳細解釋它們的定義…

Python學習——執行python時,鍵盤按下ctrl+c,退出程序

在 Python 中,當用戶按下 CtrlC 時,程序默認會觸發 KeyboardInterrupt 異常并終止。 1. 捕獲 KeyboardInterrupt 異常(推薦) 使用 try-except 塊直接捕獲 KeyboardInterrupt 異常,適用于簡單場景。 示例代碼&#xff…

C++ 反向迭代器(Reverse Iterator)實現詳解

目錄 1. 反向迭代器概述 2. 代碼實現分析 3. 關鍵點解析 3.1 模板參數設計 3.2 核心操作實現 4. 使用示例 1. 反向迭代器概述 反向迭代器是STL中一種重要的適配器,它允許我們以相反的順序遍歷容器。本文將詳細講解如何實現一個自定義的反向迭代器模板類。 2.…

動態DNS管理:【etcd+CoreDNS】 vs【BIND9】便捷性對比

對比 BIND9 集群和 etcdCoreDNS 集群在便捷性方面,通常情況下,對于需要動態、頻繁變更 DNS 記錄以及追求云原生和自動化集成的場景,etcdCoreDNS 方案更加便捷。 然而,“便捷性”也取決于具體的應用場景、團隊的技術棧和運維習慣。…

基于大模型的短暫性腦缺血發作預測與干預全流程系統技術方案大綱

目錄 一、系統概述二、系統架構(一)數據采集層(二)大模型核心層(三)應用服務層(四)數據存儲與管理層三、全流程技術方案(一)術前階段(二)術中階段(三)術后階段(四)并發癥風險預測(五)手術方案制定(六)麻醉方案制定(七)術后護理(八)統計分析(九)技術驗…

MSP430通用電機控制代碼(Motor)設計與實現

一、代碼結構概覽 // Motor.h // Motor.h #ifndef __MOTOR_H_ #define __MOTOR_H_#include "A_include.h"void Motor_Init(void); // 初始化函數 void PWM_SET(int duty0, int duty1); // PWM設置函數#endif// Motor.c // Motor.c #include "Motor.h"…

25年軟考架構師真題(回憶更新中)

論文題: 系統負載均衡設計方法事件驅動架構多模型數據庫應用軟件測試架構案例分析: 必選題:1.1填寫質量屬性的質量屬性名 1.2解釋器風格架構的組成圖填空,以及解釋為什么該模型適用解釋器風格 選做題1redis2.1全量復制的流程圖 <

優化用戶體驗:攔截瀏覽器前進后退、刷新、關閉、路由跳轉等用戶行為并彈窗提示

&#x1f9d1;?&#x1f4bb; 寫在開頭 點贊 收藏 學會&#x1f923;&#x1f923;&#x1f923; 需求 首先列舉一下需要攔截的行為&#xff0c;接下來我們逐個實現。 瀏覽器前進后退標簽頁刷新和關閉路由跳轉 1、攔截瀏覽器前進后退 這里的實現是核心&#xff0c;涉及到大…

Docker:容器化技術

引言 傳統部署環境逐漸不適應現在的企業開發&#xff0c;為了追求更加輕量&#xff0c;更加容易管理項目&#xff0c;引入了docker容器化技術去實現更加高效的部署環境。 一.docker風光下的內核功能和常用命令 1.docker容器和虛擬機的區別 我們在底層和應用層之間引入了一層do…

ping命令常用參數以及traceout命令

在網絡故障排查和性能分析中&#xff0c;ping和 traceroute&#xff08;Windows中通常稱為 tracert&#xff09;是兩個極為重要的工具。它們幫助診斷網絡連接問題&#xff0c;了解數據在網絡中的傳輸路徑。下面將詳細介紹這兩個命令的常用參數及其應用。 ping命令 ping命令用…

SpringBoot開發——Spring Boot異常處理全攻略:五大方案實戰對比

文章目錄 一、血淚教訓:異常處理的代價二、五大異常處理方案詳解2.1 全局異常處理(推薦方案)2.2 控制器級處理2.3 HTTP狀態碼注解2.4 ResponseEntity精細控制2.5 自定義異常體系(企業級方案)三、五大方案對比決策表四、四大避坑指南4.1 異常吞噬陷阱4.2 循環依賴問題4.3 異…

CodeBuddy 實現圖片轉素描手繪工具

本文所使用的 CodeBuddy 免費下載鏈接&#xff1a;騰訊云代碼助手 CodeBuddy - AI 時代的智能編程伙伴 前言 最近在社交媒體上&#xff0c;各種素描風格的圖片火得一塌糊涂&#xff0c;身邊不少朋友都在分享自己的 “素描照”&#xff0c;看著那些黑白線條勾勒出的獨特韻味&a…

2025.05.21華為暑期實習機考真題解析第二題

?? 點擊直達筆試專欄 ??《大廠筆試突圍》 ?? 春秋招筆試突圍在線OJ ?? 筆試突圍OJ 02. 災區物資調度路徑規劃 問題描述 在一次嚴重的自然災害后,LYA負責協調救援物資的配送工作。救援區域包含多個受災鄉鎮和一個物資集結點,各個地點之間的道路狀況各異,有些甚至…

Gartner《Optimize GenAI Strategy for 4 Key ConsumerMindsets》學習心得

一、引言 在當今數字化營銷浪潮中,生成式人工智能(GenAI)正以前所未有的速度重塑著市場格局。GenAI 既是一場充滿機遇的變革,也是一場潛在風險的挑戰。一方面,絕大多數 B2C 營銷領導者對 GenAI 賦能營銷抱有極高期待,他們看到了 GenAI 在提升時間與成本效率方面的巨大潛…

探索鏈表的奇妙世界:從基礎到高級應用

鏈表是計算機科學中一種基礎且重要的數據結構&#xff0c;它如同一條由珠子串成的項鏈&#xff0c;每個珠子&#xff08;節點&#xff09;都包含著數據和指向下一個珠子的線索。 與數組相比&#xff0c;鏈表在插入和刪除操作上更加靈活&#xff0c;無需預先分配固定大小的內存…