【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解

这篇具有很好参考价值的文章主要介绍了【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【JavaEE】Spring MVC 程序开发要点总结

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

【JavaEE】Spring MVC 程序开发要点总结

1. 什么是 Spring MVC

官方文档:Spring Framework Documentation :: Spring Framework

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

两个关键信息:

  1. Spring MVC 是一个Web框架
  2. Spring MVC 是基于Servelet API 构建的

全称为“Spring Model View Controller”

  • 它就是软件工程中的一种软件架构模式,它把软件系统分为模型Model、视图View、控制器Controller,三个基本部分

大概就是这个模式:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

1.1 MVC的执行流程

  1. 用户的请求首先先给到Controller
  2. Controller将请求转发给Model
  3. Model处理业务并将结果给到Controller
  4. Controller再将“冷冰冰”的数据传给View
  5. View 转化数据生成最终的页面给用户

这个过程就是网站前后端工作的原理,也就是Web

  • 在做项目实战之前,只需要知道,通过指定路由发送请求返回响应即可,现在是学习基础阶段

1.2 为什么要学Spring MVC

绝大多数Java项目都是基于Spring全家桶实现的,而Spring 的核心就是Spring MVC!

在学习Spring Boot的时候,我们不也可以通过路由访问吗?

  • 那是因为我们在创建Spring Boot项目的时候,添加了Spring Web框架,也就是Spring MVC框架!

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 所以,这个项目相当于Spring MVC项目,而Spring Boot之前相关Web的优点,没有这个框架也无用武之地,Spring MVC框架的实现,也离不开Spring 的核心内容:IOC容器、AOP等等…

说到底SpringBoot就是Spring相关开发的脚手架👍,“大辅助”

  1. 方便Spring,例如提供默认配置和自动配置来减少开发者的工作量、约定大于配置的原则…
  2. 方便Spring MVC,例如内置了Web容器…

另外,Spring Boot还提供了丰富的插件和扩展机制,可以与其他技术(如数据库、消息队列、缓存等)无缝集成。开发者可以通过简单的配置,快速集成这些技术,并且可以轻松地通过命令行或配置文件进行管理和调整。

不过,我们作为开发者,不需要过多在意他们的关系和底层实现原理, 我们要专注于开发 ~

重点在于,Spring MVC的学习!

1.3 Spring MVC 的学习

Spring MVC重点就是,连接,处理请求,返回响应

就是说,前面Servelet开发的所有内容,在这里用Spring MVC框架去做一个大的升级!

  • 注意,本文章不讲两者对比,冷热自知
  1. 连接的功能
  2. 处理请求 — 获取请求中的相关数据
  3. 返回响应 — 输出执行业务逻辑后的数据

2. Spring MVC 的创建和连接

2.1 创建

刚才说过了,就是Spring Boot 引入 Spring Web框架~

  • 跟之前别无二致

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

2.2 连接

建立连接(三次挥手四次握手),其他不需要我们开发者管,我们要做的是:

  • 确定个“终点”,也就是说给一段后端程序,加一个路由(url),让前端知道跟哪个程序建立连接
2.2.1 @RestController注解

这个注解很重要!

  • 包含两个重要注解
  1. @Controller,五大类注解之一,没有它,就无法扫描进行一些框架内部操作
    • 框架也是有依靠Bean存储和注入的呀
  2. @ResponseBody,没有它,那么后续方法的返回的字符串,默认代表“文件名”
    • 因为早期没有前后端分离,后端工程师也编写html,所以返回的html文件,就是返回页面咯~
    • 如果页面404,可能就是因为没有这个注释,或者没有这个文件
    • 而有了它,返回的默认就是字符串数据(在后面讲返回数据的时候再说)

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

2.2.2 @RequestMapping注解

这个注解就是请求要连接的路由

  1. 加在类上,代表这个类的路由的上一级路径(可有可无)
    • 这样不同类的方法中,就可以其同样的路由名了~
  2. 加在方法,代表这个方法的路由,其返回值作为响应的Body(这里只关注内容,不关注格式是什么)

理论上前面要加 / 符号的,但是一些版本已经优化掉了,也就是可加可不加,不影响访问(之前是不加就访问不了)

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 并且支持一次写多级的路由

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

2.2.3 请求的方法

我们之前有针对Get的,还有Post的,那么这个@RequestMapping注解代表可以接受什么方法呢

答:默认情况下是全都可以,如何请求都能访问这个url,但是可以改~

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 这里的重点就是 path / value(path和value一样) 和method三个,其他没咋用

path的值代表url,method代表允许的请求的方法

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • method的值是对应的枚举类型的值,不是字符串

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

这样就只有POST请求可以访问了,浏览器只能构造GET请求:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 报405,方法不允许~

注解的属性的值要设置多个,用类似这样数组的方式即可:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 代表可连接的几种url
  • 代表满足的几种方法

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

这样一个类就可以书写,多个处理GET请求和多个处理POST请求的程序了~

3. 处理请求

因为Spring MVC是基于Servlet写的,所以也可以这样操作

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

然后完全继承之前的处理操作

  • 之后都是用Spring MVC框架的方式去写~

@RequestMapping注解的方法,它们的参数列表没有限制,什么都可以

你可以理解为,Spring框架内部有很多Bean

  • 参数列表的取名/其他可以定位到对应的Bean,就可以完成注入
  • 找不到的就是默认值

而HttpServletRequest request,就有一个对应的针对这个请求的Bean,请求过来的时候,就会诞生

  • 具体底层实现和相关的复杂的原理,暂时不考虑

3.1 获取参数 Parameter

  1. query string的键值对
  2. form表单的键值对
3.1.1 一个个参数属性注入的方式

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

这里用到Postman这个软件!

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

可见:

  1. 自动设置了字符集为UTF-8,没有中文乱码的问题
  2. 将键值对注入到了参数中!

要求:

  • 类型正常对应得上!(不要没事找事,正常点写)
    • 框架已经支持很多对应了,比如字符串可对应为包装类,也可以对应为基本数据类型!
  • 参数名跟key对应

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

多个同名的key

  1. 用数组接受
  2. 参数的值为,key1, key2

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

3.1.2 注入对象的方式

有时候,其实这些属性对应的就是一个实体类的属性,那么还不如注入到一个实体类里

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

要求:

  • 实体类的属性名要对应得上,否则找不到对应的Bean
  • 类型正确

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

注入规则就是:

  • 参数列表中的任何对象的属性名和对应请求中的key名相同的属性,都会被注入

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

理论上,这些数据并不会共享不同的对象,而是针对一个类一个对象!

  • 代码层面上,这些参数没规定是哪个对象的,逻辑实际层面上,这些参数是一个User对象的,开发者心知肚明
3.1.3 @RequestParam重命名

你有时候会觉得,前端传过来的键值对,key名好low!让我的代码变得low!

还是通过注解,你可以这么做:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 代表的含义是:
    1. 前端 key 为 n 的值,注入到 name 里
    2. 前端必须有key 为 n的键值对

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

加了注解后就会强制要求这个键值对存在,而不是取默认值

当然,你也可以设置:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

让required等于false,代表,这个键值对不需要必须存在

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 这个注解的位置只能在那,所以如果以对象注入的方式的话,无法重命名key为对应的属性名

3.2 获取请求中的JSON格式数据

json格式的数据,对应的是一个对象,不能像通过获取参数的方式去获取!

通过注解@RquestBody即可实现:

  • @ResponseBody,@RequestBody都是跟正文有关的,或者说是跟JSON有关的~
    • 不要纠结这个注解名,记住他们的作用和用法!
  • @ResponseBody等一下就讲~

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 含义就是把这个User对象,看做json对象
    1. 相较于json字符串,多出来的属性,忽略
    2. 相较于json字符串,缺少的属性,默认值

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

Spring MVC 这种动态注入的方式是不是很爽!😊

3.3 获取请求中url附带的变量

url本来就是我们规定的,所以不需要获取(要是想获取,用老方法req.getRequestURL即可获取)

  • 【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

我们在日常生活中,一些网站的格式好像不符合我们之前的【路径 + url + querystring】的格式

例如csdn:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

这个数字明显不是路由,而是url附带的一个变量

实现方式:

3.3.1 注解@PathVariable
  • 用到注解@PathVariable,也就是获取路径上的变量

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

一旦这么写了,url就是必须按照这个格式来了!

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

当然,也支持携带多个变量:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

不支持注入对象:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

3.3.2 重命名

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 其实很少见这么写,比较这个起名本来就完全由一个程序员规定的
  • 唯一的特点就是,同时注入到两个不同的参数里,因为原本这个 i 固定了,就只能个一个参数

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

3.4 提交文件

3.4.1 注解@RequestPart

用到的注解就是 @RequestPart(name = “xxx”)

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 含义就是:在前端name属性值为fileName的文件按钮,化为对象MultipartFile对象注入到参数中,用此对象可进行相关文件操作
    • 如transferTo方法代表,将文件保存到对应目录

Postman提交文件方法:

  • 模拟了form表单提交文件,一个文件对应一个name(key)

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

点击发送后,查看对应目录:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 表示不会自动建立不存在的目录,并且没有默认的文件名(并非原名)!

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

如果没有设置文件名,或者文件格式错误:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

成功~

3.4.2 设置独一无二的适配的文件名
  1. 文件名可能会在目录下已存在,如果重了的话,就会导致原文件被覆盖!
    • 所以我们要获取一个独一无二的文件名
  2. 并不是所有文件都是.png文件
    • 所以我们还要获得其后缀才能成功保存任何文件!
  3. 文件保存路径
    • 绝对路径/相对路径/项目目录

获取唯一id:

UUID的方式去获取一个全球唯一id:考虑到元素MAC + 随机种子 + 加密算法 …

  • 由于考虑线程安全的问题,所以没有绝对的同时!让机器保存一个文件的时间的那极短的时间内生成的id都是不同的,那么这个id必然就是全球唯一的~

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 这里用到了UUID的一个工厂模式,生成方法
  • UUID来自java标准库util

获取文件后缀

  • 我们只需要知道这个文件的初始文件名,截取一下字符串即可

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

取最后一个点以及之后的字符串

  1. 相对路径

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

如果不加目录,相对路径放在了 “四海八荒之外”了🤣

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  1. 绝对路径

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

就会保存到这儿~

  1. 项目目录

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

用这一套固定搭配就能获取项目目录了~

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

藏的还挺深

当然是有其他的方式,应该可以指定存储到项目的哪个目录,感兴趣的同学可以去了解一下~

但是,正式项目通常并不是在项目里去保存文件,而是在其他地方去统一的保存一些文件,即绝对路径的写法👍

3.5 获取Cookie

这个机制在初阶的时候已经讲解,不用细说~

  • 传送门:【JavaEE】Cookie与Session的前后端交互-表白墙登录设计_s:103的博客-CSDN博客
3.5.1 老方法

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

通过注入这两个对象,这样跟之前的一模一样

  • 如果key不唯一,要遍历多个Cookie,还得用这种
3.5.2 注解@CookieValue

跟之前的注解一样,通过注入的方式:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

浏览器手动加Cookie:

  • Cookie是浏览器的机制,所以浏览器中演示最佳最方便

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

3.5.3 重命名

通过key值直接注入,并设置不存在也无所谓:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc


现在不存在key为n的cookie,但不会报错,手动加入:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

3.6 获取和存储Session

3.6.1 老方法

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

如果不存在session,不打算创造session,就得用老方法

3.6.2 存储Session

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

可以直接注入session对象( 系统根据Cookie中的SessionId,找到对应的Session然后注入到参数中

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

这个方式,默认自动创建session
【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

3.6.3 获取Session - 注解@SessionAttribute

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

典型注入~

同样的,有value属性和require属性

  • 重命名
  • 是否强制要求存在

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

效果:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 一样的不能注入对象,只有获取参数的时候才能用注入对象的方式

3.7 获取Header

同样可以用老方法

  • 我们如果要遍历获取所有的Header,就用老方法:
Enumeration<String> headerNames = reqest.getHeaderNames();
StringBuilder result = new StringBuilder();
while(headerNames.hasMoreElements()) {
    String name = headerNames.nextElement();
    String value = req.getHeader(name);
    result.append(name);
    result.append(": ");
    result.append(value);
    result.append("<br>");
}
return result;

现在用注解@RequestHeader,一样的注入思想
【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 这里最好加上,重命名,因为header的key一般都有-,而变量不能起这个名儿
  • 同样有require属性=>是否强制要求存在

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

处理请求的内容就差不多这么多了,掌握这些基本够用了~

注意:并不是只有这些,可能实现的方式还有其他,注解还有更多,可以实现的也还有更多,我们之后需要用到的不会的东西就专门去查阅资料去学即可~

Java的很多东西都是学不完的,但是我们只要保证我们需要的会去学即可~

4. 返回响应

一样可以注入参数中的HttpServletResponse对象,这是老方法,就不提了~

其实**一般我们只注重响应body里面的数据**,其他都是信息自动生成的也就够用了

  • 要是需要调整的,注入这个对象调整一下就好~

4.1 默认返回代表什么

代表的是文件,这个文件的内容就是响应的Body

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

test.html是在resources.static目录下扫描的:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

如果找不到:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

返回其他类型呢?

  • 直接报错(包括void)

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

4.2 注解@ResponseBody

@RestController = @Controller + @ResponseBody

这个注解修饰这个类后,其中的所有方法的返回值就是响应的body,字符集默认为utf8!

4.2.1 String类型

格式为text/html

即使这个字符串就是json格式,格式仍然是text/html:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

如果为html代码,则会显示出来:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

即使你返回的是文件名,也会被认为是文本~

4.2.2 其他类型

其他类型,都会被转化为格式为application/json的字符串作为响应的body~

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 只有一条数据的json是这样的~

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • fiddler中可见

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc


【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc


特殊:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

这样,就能很方便的返回json字符串给前端了!😀😀😀

4.3 补充:请求转发和请求重定向

forward VS redirect

不加@ResponseBody的情况下,通过返回值返回一个视图(一个文件),还可以实现转发和重定向!

  1. forward:请求转发
  2. redirect:请求重定向
4.3.1 现象对比

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

  • 写法是这样的👆

对于index1:

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

对于index2:
【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

4.3.2 现象分析
  1. 对于请求重定向的index1,现象属于直接跳转到一个页面,跟点击到一个链接一样

  2. 而对于请求转发,地址并没有改变为test.html,依旧保持index2,现象跟直接返回一个视图一样

也就是说:

  1. 请求重定向:直接让浏览器去访问另一个地址(让你自己去访问别的页面)
  2. 请求转发:服务器帮忙访问另一个地址,显示在原地址上(服务器转发了个页面给你)

【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解,JavaEE,java-ee,spring,mvc

知道一些网站为什么不是显示html文件了吧,原来是这样Σ(っ °Д °;)っ!

  • 这也谈不上高级,倒是以后也可以这样试试 ~
4.3.3 具体区别
  1. redirect将请求重新定位到资源;forward则为服务器帮忙转发
  2. redirect地址发生改变;forward地址不会发生改变
  3. redirect与直接访问效果一致,不存在原来的外部资源不能访问;forward服务器转发有可能造成原外部资源不能访问
    • 例如forward如果资源和转发的页面不在一个目录下,会导致资源不可访问(失效),如果是css/js等等…失效了,页面会变得很丑
    • 这里就不演示了,感兴趣的同学可以去试试,以后有机会做项目的时候搞一下

文章到此结束!谢谢观看
可以叫我 小马,我可能写的不好或者有错误,但是一起加油鸭🦆

代码位置:spring_mvc_demo/src/main/java/com/example/demo · 游离态/马拉圈2023年8月 - 码云 - 开源中国 (gitee.com)

看到这里,Spring MVC算是掌握了!对于网站开发基本够用了~

还是那句话,我们学了这些之后,之后肯定会遇到不会的,因为本文章的内容之外的,能够实现的还有很多,注解也很多,方式也很多,我们之后项目开发需要用到的,我们就去学就完事了!b( ̄▽ ̄)d

接下来就是MyBatis框架的学习✿✿ヽ(°▽°)ノ✿文章来源地址https://www.toymoban.com/news/detail-639630.html


到了这里,关于【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第二天)Mybatis的深入学习

    上一篇我们的项目搭建好了,也写了简答的Junit测试类进行测试,可以正确映射到数据库中。 那么这篇文章来深入学习一下以下几个点: 了解 MyBatis的核心对象SqlSessionFactoryBuilder 以及它的作用 掌握MyBatis核心配置文件以及元素的使用 。 掌握MyBatis映射文件及其元素的使用 。

    2024年02月11日
    浏览(68)
  • 【JavaEE】Spring Web-MVC

    目录 Spring Web MVC 是什么 什么是Serlet 什么是MVC 什么是Spring MVC 使用Spring MVC 建立连接 @RequestMapping 请求 传递单个参数 传递多个参数 传递对象 后端参数重命名  传递数组 传递集合 传递JSON数据 获取url参数-@pathvariable 上传文件@RequestPart 获取Cookie Session 获取Header 响应 返回静态页

    2024年04月12日
    浏览(31)
  • 【JavaEE进阶】 初识Spring Web MVC

    Spring Web MVC 是 基于 Servlet API 构建的原始 Web 框架 ,从⼀开始就包含在Spring框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为)Spring MVC). Servlet是⼀种实现动态⻚⾯的技术.准确来讲Servlet是⼀套Java Web 开发的规范,或者说是⼀套Java Web 开发的

    2024年02月03日
    浏览(45)
  • Spring MVC程序开发(JavaEE进阶系列3)

    目录 前言: 1.什么是Spring MVC 1.1MVC的定义 1.2MVC和Spring MVC的关系 1.3为什么要学习Spring MVC 2.Spring MVC项目的创建 3.Spring MVC框架的使用 3.1连接的功能 3.1.1@RequestMapping 3.1.2@GetMapping  3.1.3@PostMapping 3.2获取参数的功能 3.2.1获取单个参数 3.2.2获取对象 3.2.3上传文件 3.2.4获取Cookie 3.2

    2024年02月07日
    浏览(48)
  • [框架]Spring MVC框架

    目录 关于Spring MVC框架 Spring MVC框架的依赖项 使用Spring MVC框架接收请求 关于@RequestMapping注解 关于RESTful 关于@RequestParam注解 @RequestParam注解是添加在方法的参数上的,它的作用主要有:   其它 MVC : M odel + V iew + C ontroller   Spring MVC框架主要解决了接收请求、响应结果及相关问

    2024年02月11日
    浏览(44)
  • 【JavaEE】JavaEE进阶:框架的学习 - Spring的初步认识

    JavaEE进阶首章 在之前的学习中,我们已经掌握了Servlet的框架去完成一个项目,而目前企业正在使用的技术则是我们接下来重点学习的! 本文章为 JavaEE进阶的第一篇文章,JavaEE进阶我们将学习: Spring全家桶 Spring / Spring Boot/ Spring MVC ,Spring Cloud为社招必须,校招不须 MyBatis

    2024年02月17日
    浏览(41)
  • Spring MVC框架

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一

    2024年02月05日
    浏览(38)
  • 关于Spring MVC框架

    目录 Spring MVC框架的作用 关于控制器  关于统一处理异常的方法: 在处理异常的类中,关于处理异常的方法: Knife4j框架 添加依赖 关于Knife4j的配置类: Spring MVC框架的基础依赖项是spring-webmvc。 Spring MVC框架主要解决了接收请求、响应结果及相关的问题。 控制器(Controller)是

    2024年02月05日
    浏览(32)
  • 深入探索 Spring MVC:构建优雅的Web应用

    Spring MVC 是 Java 中最受欢迎的 Web 框架之一,它为开发人员提供的强大的工具和灵活的架构,帮助构建高效、可扩展且易于维护的 Web 应用程序。本文将深入探讨 Spring MVC 的核心概念、使用方法以及实践操作。 在了解什么是 Spring MVC之前,我们首先有必要先了解其中的 MVC 到底

    2024年02月13日
    浏览(49)
  • JavaWeb框架:Spring MVC介绍

    MVC(Model View Controller,模型-视图-控制器) ,作为一种设计模式,用于应用程序的分层开发。 Spring MVC ,由 Spring 框架提供的基于 MVC 设计模式的一个轻量级 Web 开发框架。Spring MVC 提供了一个前端控制器 DispatcherServlet 来分派请求,然后通过配置处理程序映射、视图解析等,使

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包