当前位置: 首页 > news >正文

【SpringMVC篇】详解SpringMVC入门案例

🎊专栏【SpringMVC】
🍔喜欢的诗句:天行健,君子以自强不息。
🎆音乐分享【如愿】
🎄欢迎并且感谢大家指出小吉的问题🥰

文章目录

  • 🎍SpringMVC简介
    • ⭐优点
  • 🌺SpringMVC入门案例
    • ⭐案例用到的注解
    • 🎆延申
  • 🌺入门案例流程分析
  • 🍔简化入门案例

在这里插入图片描述
Spring MVC是Spring框架中的一员,是目前最主流的Java EE Web框架之一。在企业级开发中,Spring MVC有非常广泛的应用。

Spring MVC基于MVC设计模式,将web层进行职责解耦,基于请求映射将请求分派到指定的控制器进行处理。它主要特点有:

使用DispatcherServlet作为前端控制器,将请求调度到控制器
支持灵活的请求映射方式,方便接口对接
提供强大的数据绑定和验证机制
支持多种视图技术,可以方便与不同UI框架集成
拥有强大的扩展点,可以自定义很多组件
同时,Spring MVC作为Spring框架的一部分,可以非常容易地集成Spring的其他模块,如Spring IoC、Spring JDBC等。这为企业级应用提供了一种非常灵活而强大的web框架。

以上补充了Spring MVC的定位、主要特点等内容,使开头部分更丰富充实,希望这些补充内容确实能够帮助读者更好地了解Spring MVC

通过跟随本文,你可以学习创建SpringMVC项目,编写Controller处理请求,配置SpringMVC加载bean,并运行调试一个简单的案例。这将让你对SpringMVC有最直观的感受,打下坚实的基础。跟我一起开始SpringMVC之旅吧!

🎍SpringMVC简介

Spring MVC是一种基于Java开发的Web应用程序框架,它是Spring Framework的一部分。它提供了一种模型-视图-控制器(Model-View-Controller,MVC)的架构模式,用于构建灵活、可维护和可扩展的Web应用程序。

⭐优点

  • 使用简单,开发便捷(相对于Servlet)
  • 灵活性强

🌺SpringMVC入门案例

创建项目

在这里插入图片描述

在pom.xml文件中导入包和springmvc坐标,servlet坐标

<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.10.RELEASE</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency>

在这里插入图片描述

添加tomcat插件

<plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><configuration><port>80</port><path>/</path></configuration></plugin></plugins>

在这里插入图片描述

创建UserController类
在这里插入图片描述
在这里插入图片描述

package com.example.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;//使用@Controller,定义bean
@Controller
public class UserController {//设置当前操作的访问路径@RequestMapping("/save")//设置当前操作的返回值类型@ResponseBody  //@ResponseBody把你返回的东西整体作为响应的内容给到外面public String save(){System.out.println("user save ...");//返回一个json数据return "{'module':'springmvc'}";}
}

在这里插入图片描述

创建新的包,来配置SpringMVC
在这里插入图片描述
创建SpringMVC的配置文件,加载controller对应的bean

package com.example.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;//配置类
@Configuration
//扫描
@ComponentScan("com.example.controller")
public class SpringMvcConfig {}

定义一个servlet容器启动的配置类,在里面加载spring的配置
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

package com.example.config;//定义一个servlet容器启动的配置类,在里面加载spring的配置import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;public class ServletConfig extends AbstractDispatcherServletInitializer {//加载springmvc容器配置@Overrideprotected WebApplicationContext createServletApplicationContext() {AnnotationConfigWebApplicationContext ctx=new AnnotationConfigWebApplicationContext();ctx.register(SpringMvcConfig.class);return ctx;}//设置哪些请求归属springmvc处理@Overrideprotected String[] getServletMappings() {return new String[]{"/"};}//加载spring容器配置@Overrideprotected WebApplicationContext createRootApplicationContext() {return null;}
}

在这里插入图片描述

启动程序

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

运行localhost/save,运行成功
在这里插入图片描述
请添加图片描述

⭐案例用到的注解

请添加图片描述
请添加图片描述
请添加图片描述

🎆延申

我们在UserController类中加上这一段代码
保持原来的代码不变

 @RequestMapping("delete")@ResponseBodypublic String delete(){System.out.println("user delete ...");return "{'module':'springmvc delete'}";}

在这里插入图片描述

这次我们不运行localhost/save了,我们运行localhost/delete
运行成功

在这里插入图片描述
所以以后我们配置好一个springmvc案例后,再开发功能时,不用重新新建,直接在原项目里面写入即可

🌺入门案例流程分析

请添加图片描述

🍔简化入门案例

我们修改ServletConfig里面的代码

public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {protected Class<?>[] getRootConfigClasses() {return new Class[]{SpringMvcConfig.class};}protected Class<?>[] getServletConfigClasses() {return new Class[]{SpringMvcConfig.class};}protected String[] getServletMappings() {return new String[]{"/"};}
}

在这里插入图片描述

运行,成功
在这里插入图片描述

通过这个简单的入门案例,我们已经体验了Spring MVC的基本用法,构建了一个最小可运行的Spring MVC应用。但要真正使用Spring MVC进行企业级Web开发,我们还需要学习许多更高级的功能。

例如Spring MVC强大的视图技术,可以轻松集成各种模版引擎,而不仅仅是返回字符串。数据验证功能可以保证数据合法性。文件上传和下载更方便处理文件内容。拦截器功能可以实现日志、权限等通用处理。还有国际化、主题切换、RESTful服务等等。

Spring MVC构建的应用可以轻松应对复杂的企业级需求。它的扩展点设计更让我们可以自定义各种组件。一定要继续深入学习Spring MVC,以应对工作中的各种挑战。

本文只是入门第一步。如果大家在学习和使用Spring MVC过程中,遇到任何问题,请积极到评论区讨论。
在这里插入图片描述

相关文章:

【SpringMVC篇】详解SpringMVC入门案例

&#x1f38a;专栏【SpringMVC】 &#x1f354;喜欢的诗句&#xff1a;天行健&#xff0c;君子以自强不息。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f38d;SpringMVC简介⭐优点 &#x1f33a;SpringMVC入门…...

Programming abstractions in C阅读笔记:p166-p175

《Programming Abstractions In C》学习第58天&#xff0c;p166-p175总结。 一、技术总结 1.斐波那契数列(Fibonacci Sequenc) (1)斐波那契数列来源 斐波那契数列来自于《Liber Abaci》一书里兔子繁殖问题&#xff0c;相关资料很多&#xff0c;这里不赘述。 (2)关于《Libe…...

【List-Watch】

List-Watch 一、定义二、工作机制三、调度过程 一、定义 Kubernetes 是通过 List-Watch 的机制进行每个组件的协作&#xff0c;保持数据同步的&#xff0c;每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件&#xff0c;向 APIServer 发送命令&#xff0c;在 …...

Pytorch因nn.Parameter导致实验不可复现的一种情况

文章首发见博客&#xff1a;https://mwhls.top/4871.html。 无图/格式错误/后续更新请见首发页。 更多更新请到mwhls.top查看 欢迎留言提问或批评建议&#xff0c;私信不回。 没解决&#xff0c;只是记录这种情况。 也可以多次实验取均值以避免结果复现。 场景 自己的模块中&a…...

MySQL表名区分不区分大小写,规则是怎样

MySQL表名区分不区分大小写&#xff0c;规则是怎样 mysql在linux中表名区分大小写&#xff0c;mysql在Windows中表名不区分大小写&#xff1b;可以在MySQL的配置文件“my.ini [mysqld]”中增加一行“lower_case_table_names 参数”来设置是否区分大小写。 mysql的表名区分大小写…...

Design patterns--观察者模式

设计模式之观察者模式 代码示例 #ifndef OBSERVER_H #define OBSERVER_H#include <map>class Observer { public:Observer();virtual void update(std::map<int, double>) 0; }; #endif // OBSERVER_H#include "observer.h"Observer::Observer() {}#if…...

【Spring Boot】SpringBoot 单元测试

SpringBoot 单元测试 一. 什么是单元测试二. 单元测试的好处三. Spring Boot 单元测试单元测试的实现步骤 一. 什么是单元测试 单元测试&#xff08;unit testing&#xff09;&#xff0c;是指对软件中的最⼩可测试单元进⾏检查和验证的过程就叫单元测试。 二. 单元测试的好处…...

ansible 调研

参考&#xff1a;自动化运维工具——ansible详解&#xff08;一&#xff09; - 珂儿吖 - 博客园 (cnblogs.com) ansible是新出现的自动化运维工具&#xff0c;基于Python开发&#xff0c;集合了众多运维工具&#xff08;puppet、chef、func、fabric&#xff09;的优点&#xf…...

QT UI控件汇总介绍

按钮 ToolButton 和pushbutton没什么区别&#xff0c;可以用来设置图标 设置展示策略 RadioButton 一般用Container可以将其框起来设置互斥域&#xff0c;推荐选用GroupBox 使用方法 qDebug()<<ui->radioButton_3->isChecked(); CheckBox 可以勾选三态 stat…...

【垃圾回收概述及算法】

文章目录 1. 垃圾回收概述及算法2. 垃圾回收相关算法2.1 标记阶段&#xff1a;引用计数算法2.2 标记阶段&#xff1a;可达性分析算法2.3 对象的 finalization 机制2.3.1 一个对象是否可回收的判断 2.4 清除阶段&#xff1a;标记-清除算法2.5 清除阶段&#xff1a;复制算法2.6 清…...

2021年03月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python编程&#xff08;1~6级&#xff09;全部真题・点这里 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 对于字典infor {“name”:“tom”, “age”:13, “sex”:“male”}&#xff0c;删除"age":13键值对的操作正确的…...

为什么通过一致性正则化方法就可以避免将所有未标记数据集分配给同一类?

一致性正则化方法可以帮助避免将所有未标记数据分配给同一类别的原因在于它们引入了对模型输出的一致性约束&#xff0c;从而减轻了判别性损失&#xff08;如交叉熵损失&#xff09;可能导致的问题。以下是一些关键原因&#xff1a; 一致性反馈&#xff1a; 一致性正则化方法…...

第4章 决策树

文章目录 4.1 基本流程4.2 划分选择4.2.1 信息增益4.2.2 增益率4.2.3 基尼指数 4.3 剪枝处理4.3.1 预剪枝4.3.2 后剪枝 4.4 连续与缺失值4.4.1 连续值处理4.4.2 缺失值处理 4.5 多变量决策树4.6 阅读材料 4.1 基本流程 决策树也称判定树&#xff0c;是一类常见的机器学习方法。…...

在Remix中编写你的第一份智能合约

智能合约简单来讲就是&#xff1a;部署在去中心化区块链上的一个合约或者一组指令&#xff0c;当这个合约或者这组指令被部署以后&#xff0c;它就不能被改变了&#xff0c;并会自动执行&#xff0c;每个人都可以看到合约里面的条款。更深层次的理解就是&#xff1a;这些代码会…...

如何查看dll文件内导出函数名称

一 使用VS自带工具 进入VS开发环境&#xff0c;然后Tools -> Visual studio 2017 Command Prompt&#xff0c;打开兼容工具命令提示符&#xff0c; 如果工具 目录下没有命令行提示&#xff0c;可以从开始菜单找到VS的命令行提示符。 cd到dll所在目录&#xff0c;输入命令…...

学习笔记|串口通信的基础知识|同步/异步|RS232|常见的串口软件的参数|STC32G单片机视频开发教程(冲哥)|第二十集:串口通信基础

目录 1.串口通信的基础知识串口通信(Serial Communication)同步/异步&#xff1f;全双工&#xff1f;常见的串口软件的参数 2.STC32的串口通信实现原理引脚选择&#xff1a;实现分时复用模式选择串口1模式1&#xff0c;模式1波特率计算公式 3.串口通信代码实现编写串口1通信程序…...

JAVA String 和 String[][]互转的两种方法

第一种方法&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.40</version> </dependency>字符串转数组&#xff1a; String s "[[22,23,23],[1,10,20]]"…...

推荐几个制作svg的工具

以下是一些用于制作SVG&#xff08;可缩放矢量图形&#xff09;的工具和软件&#xff0c;适用于不同技能级别和需求&#xff1a; Adobe Illustrator&#xff1a;作为业界标准之一&#xff0c;Adobe Illustrator是功能强大的矢量图形编辑软件&#xff0c;适用于专业设计师和创意…...

Java实现防重复提交,使用自定义注解的方式

目录 1.背景 2.思路 3.实现 创建自定义注解 编写拦截器 4.使用 5.验证...

Springboot实现Web组件注册

一、前言 在实际开发中&#xff0c;有时候我们可能使用springboot注册web组件&#xff0c;实现某些功能&#xff0c;比如我们需要生成一些api来提供对外的服务&#xff0c;而对应的路径其实是不固定的&#xff0c;那么这种情况下&#xff0c;其实是可以通过这种方式来注册web组…...

IntelliJ IDEA 2026.1 版本发布,多维度升级助力开发体验

AI 能力拓展&#xff1a;内置多 Agent 提升开发效率IntelliJ IDEA 2026.1 版本在 AI 方面有显著升级&#xff0c;内置支持更多 AI agent&#xff0c;如 Codex、Cursor 以及任何兼容 ACP 的 agent。ACP Registry 实现了一键浏览和安装 AI agent&#xff0c;方便开发者快速引入所…...

数据库课程设计好帮手:Phi-4-mini-reasoning辅助ER图设计与SQL优化

数据库课程设计好帮手&#xff1a;Phi-4-mini-reasoning辅助ER图设计与SQL优化 1. 课程设计的痛点与解决方案 每到学期末&#xff0c;计算机专业的学生们都会面临一个共同的挑战——数据库课程设计。这个需要完成ER图设计、SQL编写和文档撰写的综合项目&#xff0c;常常让初学…...

3步搭建PP-DocLayoutV3服务:快速体验文档版面分析的强大能力

3步搭建PP-DocLayoutV3服务&#xff1a;快速体验文档版面分析的强大能力 1. 引言&#xff1a;文档版面分析的价值 在日常工作中&#xff0c;我们经常需要处理各种文档——合同、论文、报告、书籍等。传统OCR技术虽然能识别文字&#xff0c;但往往无法理解文档的结构&#xff…...

TDengine IDMP 工业数据建模 —— 数据标准化

3.4 数据标准化 工业环境通常从多个数据源采集数据&#xff0c;这些数据往往命名不一致、物理单位各异、数据结构不同。如果没有标准化&#xff0c;跨资产分析、AI 生成洞察和数据汇聚将变得不可靠甚至无法实现。TDengine IDMP 提供了多种机制&#xff0c;对整个资产模型中的数…...

手把手教程:在CSDN星图一键部署LFM2.5轻量模型,低配电脑也能跑AI

手把手教程&#xff1a;在CSDN星图一键部署LFM2.5轻量模型&#xff0c;低配电脑也能跑AI 还在为本地跑不动大模型而烦恼吗&#xff1f;今天我要分享一个好消息&#xff1a;即使你的电脑配置不高&#xff0c;也能轻松部署一个实用的AI文本生成模型。LFM2.5-1.2B-Thinking-GGUF就…...

手把手教你用Qwen2.5-Omni-7B:一个模型搞定文本、图片、音频和视频(附Python代码示例)

实战Qwen2.5-Omni-7B&#xff1a;全模态AI开发指南 第一次听说一个模型能同时处理文本、图片、音频和视频时&#xff0c;我的反应和大多数开发者一样——既兴奋又怀疑。直到亲手用Python调用了Qwen2.5-Omni-7B的API&#xff0c;看着它准确描述视频内容、回答图片问题、甚至生成…...

告别台式机没麦克风的尴尬:用SonoBus+VB-Cable把手机秒变无线麦(保姆级配置)

台式机零成本无线麦克风方案&#xff1a;SonoBus与VB-Cable实战指南 你是否遇到过这样的尴尬时刻——台式电脑突然需要语音沟通&#xff0c;却发现没有麦克风&#xff1f;无论是紧急会议、游戏开黑还是直播互动&#xff0c;这种硬件缺失带来的困扰可能让你措手不及。本文将介绍…...

国行iPhone Siri功能意外上线又撤回,背后暗藏玄机

iPhone“Siri”变身“Apple智能与Siri”&#xff0c;意外功能短暂亮相3月31日凌晨&#xff0c;部分国行iPhone用户惊喜发现&#xff0c;手机设置中的“Siri”入口悄然变更为“Apple智能与Siri”&#xff0c;同时还短暂解锁了端侧模型下载及AI功能。不过&#xff0c;这一新鲜体验…...

论文详解 | 基于轨迹数据的多层空间交互网络动态社区发现与时序分析

论文详解 | 基于轨迹数据的多层空间交互网络动态社区发现与时序分析 一、论文基础信息与核心概述 1.1 论文基础信息 项目 详情 论文标题 Dynamical community detection and spatiotemporal analysis in multilayer spatial interaction networks using trajectory data 1.2 …...

3GPP TS 23.256标准解读:无人机广播远程识别码(Broadcast Remote ID)到底是怎么工作的?

3GPP TS 23.256标准深度解析&#xff1a;无人机广播远程识别码的技术实现与合规路径 当一架无人机在城市上空盘旋时&#xff0c;地面人员如何快速确认它的合法身份&#xff1f;监管机构又该如何在密集的无线电环境中精准捕捉每一架飞行器的信息&#xff1f;这些问题的答案&…...