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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;无需预先分配固定大小的内存…