Java---JavaSpringMVC解析(1)

ops/2025/3/15 20:44:53/

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为"Spring

MVC"

1.MVC

MVC是Model View Controller的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分

为模型、视图和控制器三个基本部分

其中:

View:用于界面显示,进行人机交互,展示数据

Controller:分配资源的分用器,用于处理判断视图传来的请求应该用哪个模型解决,以及处理后的响应应该发给哪个视图

Model:是应用程序的主体部分,⽤来处理程序中数据逻辑的部分

用生活中的例子说:

View:服务员,用于与客户顾客交互的角色

Controller:前台,处理服务员从顾客那里拿来的菜单应该给哪个厨师

Model:厨师,真正做菜的角色

2.Spring MVC

 那么Spring实现MVC后有什么改变呢?下图可能展示的更准确

既然是 Web 框架, 那么当⽤⼾在浏览器中输⼊了 url 之后,我们的 Spring MVC 项⽬就可以感知到⽤户的请求, 并给予响应。

主要分以下三个⽅⾯:

1. 建⽴连接:将用户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring 程序。

2. 请求: 用户请求的时候会带⼀些参数,在程序中要想办法获取到参数, 所以请求这块主要是 获取参数的功能.

3. 响应: 执行了业务逻辑之后,要把程序执行的结果返回给用户, 也就是响应

2.1建立连接 

在 Spring MVC 中使⽤ @RequestMapping 来实现 URL 路由映射 ,也就是浏览器连接程序的作⽤

创建一个HelloController程序,实现用户通过浏览器和程序的交互

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {@RequestMapping("/Hello")public String hello() {System.out.println("Hello Spring MVC");return "Hello Spring MVC!!";}}

启动程序后,接下来在浏览器访问: http://127.0.0.1:8080/Hello, 就可以看到程序返回的数据了

2.1.1@RequestMapping作用

@RequestMapping用与注册接⼝的路由映射的

表示当路径/Hello接收到请求时,就会调用hello()方法

路由映射:当用户输入url访问服务时,将用户请求定位再某个类的某个方法的过程就是路由映射

既然 @RequestMapping 已经可以达到我们的⽬的了, 我们为什么还要加 @RestController呢?

我们把 @RestController 去掉, 再来访问⼀次

 程序报了404错误,显示找不到界面

Spring会对所有的类进⾏扫描, 如果类加了注解@RestController, Spring才会去看这个类⾥⾯的⽅法有没有加 @RequestMapping 这个注解

2.1.2@RequestMapping使用

@RequestMapping 既可修饰类,也可以修饰⽅法 ,当修饰类和⽅法时,访问的地址是类路径 + ⽅法路径.

@RequestMapping标识⼀个类:设置映射请求的请求路径的初始信息

@RequestMapping标识⼀个⽅法:设置映射请求请求路径的具体信息

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/r1")
@RestController
public class HelloController {@RequestMapping("/Hello")public String hello() {System.out.println("Hello Spring MVC");return "Hello Spring MVC!!";}
}

 访问地址:127.0.0.1:8080/r1/Hello

注意:
@RequestMapping 的URL 路径最前⾯加不加 / (斜杠)都可以, Spring程序启动时, 会进⾏判断, 如果前⾯没有加 / , Spring会拼接上⼀个 /

2.1.3@RequestMapping是Get请求还是Post请求

我们通过创造from表单构建请求

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><form action="/r1/Hello" method="post"><input type="submit" value="提交"></form>
</body>
</html>

放在static包中

访问⽅式为:http://127.0.0.1:8080/test.htm

如果有多层目录,访问链接从static目录开始

 

如上图, 访问链接为: http://127.0.0.1:8080/html/test.html  

 

点击提交后跳转到 :http://127.0.0.1:8080/r1/Hello

可以通过@RequestMapping指定GET/POST⽅法类型

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/r1")
@RestController
public class HelloController {@RequestMapping(value = "/Hello",method = RequestMethod.POST)public String hello() {System.out.println("Hello Spring MVC");return "Hello Spring MVC!!";}
}

 


http://www.ppmy.cn/ops/166038.html

相关文章

数组的介绍

1.数组的概念 数组是一组相同类型元素的集合&#xff0c;从这个描述中我们知道&#xff1a; 数组中存放1个或多个数据&#xff0c;但是数组的元素个数不为0。数组中存放的多个数据&#xff0c;类型是相同的。 数组分为一维数组和多维数组&#xff0c;多维数组一般比较多见的…

大模型微调中warmup(学习率预热)是什么

大模型微调中warmup(学习率预热)是什么 在大模型微调中,添加warmup(学习率预热)是指在训练初期逐步增加学习率,避免直接使用高学习率导致参数震荡。 🔧 为什么需要warmup? 大模型参数敏感:预训练模型的参数已接近最优,初期用大学习率可能剧烈扰动参数(如“急刹车…

3.JVM-内部结构

1.栈结构 1.1 动态链接 栈中的对象指向堆中的实际引用 符号引用: 比如一个类的名称 直接引用: 具体堆中数据信息 1.2 方法返回 栈中上一层的结果和下一层的指令 1.3 操作数栈 1.4 局部变量 该线程中需要的变量 2. 虚拟机栈是如何工作 程序计数器:存当前执行到那一步 操作…

手写一个Tomcat

Tomcat 是一个广泛使用的开源 Java Servlet 容器&#xff0c;用于运行 Java Web 应用程序。虽然 Tomcat 本身功能强大且复杂&#xff0c;但通过手写一个简易版的 Tomcat&#xff0c;我们可以更好地理解其核心工作原理。本文将带你一步步实现一个简易版的 Tomcat&#xff0c;并深…

绝美焦糖暖色调复古风景画面Lr调色教程,手机滤镜PS+Lightroom预设下载!

调色教程 通过 Lr 软件丰富的工具和功能&#xff0c;对风景照片在色彩、影调等方面进行调整。例如利用基本参数调整选项&#xff0c;精准控制照片亮度、对比度、色温、色调等基础要素&#xff1b;运用 HSL 面板可对不同色彩的色相、饱和度以及明亮度进行单独调节&#xff1b;利…

3.angular表单验证

更多用法参考&#xff1a;https://www.jb51.net/article/97552.htm $valid/$invalid // 表单验证通过/表单验证不通过, true/false$pristine/$dirty // 表单验证值是否是初始值 $pristine 初始值, $dirty就是只要改变就为true$error // 验证信息 有错误的才展示里面true 上面…

MySQL Binlog的样式

一、Binlog 的基本概念与记录内容 Binlog 是 MySQL 的二进制日志&#xff0c;以事件形式记录所有对数据库的修改操作&#xff0c;包括&#xff1a; DDL 操作&#xff1a;如 CREATE、ALTER、DROP 等表结构变更。DML 操作&#xff1a;如 INSERT、UPDATE、DELETE 等数据修改。事…

Webpack 打包详细教程

Webpack 是一个现代 JavaScript 应用的静态模块打包工具&#xff0c;它可以处理 JavaScript、CSS、图片等资源&#xff0c;并优化它们以提高性能。以下是 Webpack 从基础到进阶的详细教程。 1. Webpack 基础概念 Webpack 的核心概念包括&#xff1a; Entry&#xff08;入口&a…