0 引言

作者正在学习SpringMVC相关内容,学到了一些知识,希望分享给需要短时间想要了解SpringMVC的读者朋友们,想用通俗的语言讲述其中的知识,希望与诸位共勉,共同进步!

1 SpringMVC介绍

SpringMVC本质上是Spring家族中专门做Web的一个模块,我们熟知对于网页的开发主要存在前后端分离开发以及前后不分离开发两种模式,其中第一种模式为现在企业开发中经常使用的模式;前后端不分离主要是服务器控制页面的转发和跳转而前后端分离就不需要控制页面的跳转,后端只需要关注两个部分:

1)前端发送过来的请求

2)根据请求,相应需要的数据给前端

因为作者学习的是后端开发部分,所以所介绍的内容是以上两个角度展开介绍。

2 SpringMVC的HelloWorld(小尝试)

首先创建一个SpringBoot的Maven项目:

第一步:红框中的三项标注好,分别是选定Spring Boot框架,Maven项目以及自己的JDK版本以及勾选lombok以及Spring Web。

(2)在这个包底下创建一个HELLO类,并写下代码:

package org.example.demo123.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
public class HELLO {@RequestMapping("/hello")@ResponseBody//返回值放在相应体中public String hello(){return "hello SpringMVC !";}
}

其中@RequestMapping("/hello")表示在网页请求端请求的网址为XXXX/hello,即路径和方法进行绑定,就是说谁输入这个网址,就调用这个方法返回值;

@ResponseBody表示需要把方法的返回值存在响应体中返回给网页。、

之后启动Demo123Application,表示开启服务,这样就可以在网页中测试是否生效:

展示效果:

看到以下界面说明测试成功!

注意:项目中默认的端口为8080,如果端口被占用可以在配置文件中修改端口即可:

3 SpringMVC路径位置通配符

(1)?通配符

这个符号可以代表任意一个字符(但一定需要有一个字符),例如我们有:

    @RequestMapping("/hell?")@ResponseBody//返回值放在相应体中public String hello1(){return "hello SpringMVC !11111111";}

表示我们输入任意hell+任意字符都可以调用这个方法,如我们测试/hell1请求访问:

注意:当输入localhost:9999/hello的时候会响应hello方法,而不会响应hello1方法,这是因为精确匹配优先!!!

(2)* 通配符

这个符号可以代表任意多个字符(也可以表示没有字符),例如我们有:

    @RequestMapping("/hell*")@ResponseBody//返回值放在相应体中public String hello2(){return "hello SpringMVC !2222222222";}

 如我们测试/hell请求访问:

或者测试/hellnidjw请求访问:

(3)** 通配符

这个符号可以代表任意多层路径,例如我们有:

    @RequestMapping("/hello/**")@ResponseBody//返回值放在相应体中public String hello3(){return "hello SpringMVC !3333333";}

如我们测试/hello/1/2de请求访问:

4 简化注解:

因为我们每次写一个方法头顶上都需要带注解@ResponseBody,十分麻烦,所以SpingMVC提供了一个新注解@RestController(包含了@Controller和@ResponseBody注解)在类头上,所以以后方法头上只需要带一个@RequestMapping即可:

package org.example.demo123.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HELLO {@RequestMapping("/hello")public String hello(){return "hello SpringMVC !";}}

5 参考:

1. P84-P88

088.@RequestMapping - 请求限定_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV14WtLeDEit?spm_id_from=333.788.videopod.episodes&vd_source=a19259eb64dbd6c65948ee3815e95f70&p=88

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/87480.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/87480.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/87480.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中如何使用lambda表达式分类groupby

Java中如何使用lambda表达式分类groupby Java中如何使用lambda表达式分类groupby分类问题场景传统手写方式lambda使用groupBy()方法一行结束!!!完整代码 Java中如何使用lambda表达式分类groupby 分类问题场景 比如一群学生根据性别和年龄排…

无人机开发分享——无人机集群基于braft实现长机动态推选算法

在无人机集群项目的算法开发中,推选长机作为集群的动态中心,往往承担着集群管理、通讯中继等重要功能。由于通讯链路的有限性和任务的实时性需要,需要保证动态长机时刻工作正常,并在异常情况下快速切换新长机。 本文主要分享基于b…

python 解码 jwt

import base64 import jsondef base64url_decode(base64url_data):# 将URL安全的base64编码数据转换为标准的base64编码数据base64_data base64url_data.replace(-, ).replace(_, /)# 如果数据长度不是4的倍数,则补齐padding_length 4 - len(base64_data) % 4base…

腾讯云TCCA认证考试报名 - TDSQL数据库交付运维工程师(MySQL版)

数据库交付运维工程师-腾讯云TDSQL(MySQL版)认证 适合人群: 适合从事TDSQL(MySQL版)交付、初级运维、售前咨询以及TDSQL相关项目的管理人员。 认证考试 单选*40道多选*20道 成绩查询 70分及以上通过认证,官网个人中心->认证考试 查询 考试费用&am…

Spring Boot的Security安全控制——认识SpringSecurity!

Spring Boot的Security安全控制 在Web项目开发中,安全控制是非常重要的,不同的人配置不同的权限,这样的系统才安全。最常见的权限框架有Shiro和Spring Security。Shiro偏向于权限控制,而Spring Security能实现权限控制和安全控制…

深入理解ArrayList:从Java原生实现到手写一个ArrayList

Java原生ArrayList解析 基本结构 Java的ArrayList是基于数组实现的动态列表,主要特点包括: 动态扩容:当元素数量超过当前容量时,自动扩容(通常增加50%) 快速随机访问:通过索引访问元素的时间…

【力扣 简单 C】206. 反转链表

目录 题目 解法一:迭代 解法二:递归 题目 解法一:迭代 struct ListNode* reverse(struct ListNode* head) {struct ListNode* retHead NULL;while (head){struct ListNode* nextNode head->next;head->next retHead;retHead he…

明代大模型:智能重构下的文明再发现

引言:当紫禁城遇见生成式AI 一幅动态的《紫禁城图卷》正通过全息投影技术演绎永乐年间的宫廷盛景。这个虚实交融的场景,恰似明代大模型技术的隐喻——以人工智能为纽带,连接起永乐盛世的恢弘气象与数字时代的文明重构。作为人工智能与历史学…

推荐使用的Unity插件(行为树Behavior )

在 Unity 6.0 中使用 Behavior Designer 行为树插件开发 AI 系统,需结合其核心节点设计、变量管理和代码控制。以下是详细指南,整合了最新版本的最佳实践: 🛠️ 1. 安装与基础配置 安装插件 通过 Unity Asset Store 安装 “Behav…

107. Java 继承 - 总结:方法重写与隐藏

文章目录 107. Java 继承 - 总结:方法重写与隐藏**详细解释:****方法重载** **总结** 107. Java 继承 - 总结:方法重写与隐藏 在 Java 中,定义与超类中的方法具有相同签名的方法时,不同类型的方法之间会有不同的行为。…

Spring Cloud使用Eureka调用接口,超时设置(二)

在 Spring Cloud 微服务架构中,当同时配置了 Ribbon 和 Feign 的超时时间时,Feign 的配置优先级高于 Ribbon。具体规则和底层逻辑如下: ⚙️ 1. 配置优先级规则 Feign 显式配置 > Ribbon 配置 若在 Feign 中显式设置了超时时间&#xff0…

iOS-SM3加密算法N种集成

近期的一个项目需要用到SM3加密算法,需要在iOS中使用Objective-C实现SM3国密加密算法。 SM3:是中国国家密码管理局发布的密码杂凑算法标准,适用于商用密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成等 由于iOS系统并未…

[逆向工程]什么是TEB 与 PEB(二十九)

[逆向工程]什么是TEB 与 PEB(二十九) 一、引言:为什么需要了解 TEB/PEB? 在 Windows 系统开发、调试或逆向工程中,TEB(Thread Environment Block) 和 PEB(Process Environment Block) 是理解程序执行机制的关键。它们如同进程与线程的“身份证”,存储了从内存布局到…

逆向分析贝壳网人机验证JS加密逻辑

引言 在数据爬取和自动化测试过程中,人机验证(如滑块、点选、短信验证等)是常见的反爬手段。贝壳网(ke.com)作为国内领先的房产平台,其人机验证机制较为复杂,涉及前端JS加密、动态Token、行为检…

Vue3 + Element Plus中el-table加载状态分析

在 Vue 3 中,当 onMounted 钩子被触发时,父组件的 DOM 已经挂载完成,但子组件(如 el-table)可能尚未完成其内部渲染。具体分析如下: 1. onMounted 的执行时机 父组件挂载完成:onMounted 表示当前…

OpenCV图像拼接技术详解:从特征匹配到全景合成

本文将详细介绍如何使用OpenCV实现两幅图像的自动拼接,涵盖特征提取、单应性矩阵计算和图像融合等关键技术。 一、图像拼接概述 图像拼接是将多张有重叠区域的图像合并成一幅全景图的技术,广泛应用于全景摄影、卫星图像处理、医学影像等领域。其核心技术…

如何通过 5 种方式向 Android 手机添加音乐

想把音乐添加到你的安卓手机,然后随时随地无需网络连接就能欣赏你喜爱的音乐吗?这不再是麻烦。现在,你可以按照本指南中的有效方法,将音乐添加到你的安卓手机上。让我们在安卓手机上聆听我们美妙的歌曲吧。 第 1 部分:…

VS Code 项目中的 .vscode 目录详解

VS Code 项目中的 .vscode 目录详解 .vscode 目录是 VS Code 项目的核心配置中心,它包含特定于当前项目的配置,这些配置覆盖全局设置,确保团队成员获得一致的开发环境体验。 .vscode 目录中的核心文件 文件名作用是否应纳入版本控制settin…

Ubuntu22.04安装opengauss并配置远程访问、JDBC连接

内容概括 最近在研究怎么在ubuntu服务器环境下使用opengauss,看了下官方下载地址没有适配ubuntu的安装包。仔细翻了下官方文档,发现安装指南里有提供一个deb包安装方案,有适配ubuntu,经过实践可行,于是记录下来给有需要…

国产智能体“双子星”:实在Agent vs Manus(核心架构与技术实现路径对比)

2025年,人工智能领域迎来重要转折点——大模型的光环逐渐消散,落地应用成为行业焦点。 正如业内人士所言:“2023年,大家普遍觉得要买一个大模型,但训练完了怎么用起来,大家一头雾水。” 在这一背景下&…