Spring MVC(一)介绍、Spring MVC 工作流程 / Spring MVC 原理、使用注解定义接口(接口中的参数、请求转化)

Spring MVC(一)介绍、Spring MVC 工作流程 / Spring MVC 原理、使用注解定义接口(接口中的参数、请求转化)

一、介绍

1、引言

在这里插入图片描述

2、MVC架构概念

在这里插入图片描述
好处:
在这里插入图片描述

3、开始使用 Spring MVC

a、xml 文件配置

跟 servlet 有点像,导入 war 包,然后引入依赖:
在这里插入图片描述

b、接口实现——HttpRequestHandlerAdapter

能实现的接口有好几种。

这里先展示一种:
在这里插入图片描述

当然,也要写配置文件,就像配置 servlet 那样(下面两图中有实现 HttpRequestHandlerAdapter 接口和 SimpleControllerHandlerAdapter 接口):
在这里插入图片描述
在这里插入图片描述

还要配置加载:
在这里插入图片描述
到目前位置就弄好了,再配置 tomcat 运行就能成功运行。

注意:每个接口对应的实现类都不同,接口和实现类要一一对应,不然会报错!

c、接口实现——Controller

看下 Controller 接口的实现:
在这里插入图片描述

可以发现这个接口实现的是需要返回值的。

注意:视图的前缀和位置都在配置文件里面写好了,在上面的图片中可以找到。

二、Spring MVC 工作流程 / Spring MVC 原理

在这里插入图片描述
为什么这个 DispatcherServlet 不自己把所有东西都做完?

这种最大的好处就是解耦,可插拔的;可以根据自己的需求自由的去配置处理器或者解析器等。

但是这种一样可以去通过枚举获取,为什么不这么做?

最主要还是灵活、开放;比如视图解析器:目前就这么几种,但是不能保证未来还会不会有新的视图解析器;如果有人发明新的页面模板,想要整合到 SpringMVC 中,只要实现 ViewResolver 的接口就行了,把这个 ViewResolver 配置给 DispatcherServlet 即可;整个 MVC 框架不需要任何变动,以不变应万变。 如果是枚举,那么有人发明了新的视图又要去改动源码才能执行。

三、使用注解定义接口

1、依赖导入

首先先导入依赖:
在这里插入图片描述
然后配置成 web 工程。

接着就是 Controller文件:
在这里插入图片描述

然后就是 web.xml 配置文件:
在这里插入图片描述
在这里插入图片描述

因为写接口一般都是按上面这么写的,没什么变化,所以有个东西可以代替这两个玩意(看下图)
在这里插入图片描述

2、接口中的参数

a、默认参数 / 自定义参数

在这里插入图片描述

b、基本类型的参数

在这里插入图片描述
在这里插入图片描述
注意:如果是 post 请求有中文的话,会乱码,编码解决问题请看上面的 xml 配置里面,已经配好。

c、直接用对象接收参数

先看实体类:
在这里插入图片描述

然后代码:
在这里插入图片描述

d、@RequestParam 注解的使用(参数别名,默认值、是否必填)

在这里插入图片描述

e、数组参数(不能用集合参数(或者说不建议))

先看前端 jsp 代码:
在这里插入图片描述
然后后端代码:
在这里插入图片描述

f、路径中的参数

在这里插入图片描述

3、请求转化

a、限定请求方法

先看下后端代码:
在这里插入图片描述
功能是成功访问就输出===,然后跳转页面;然后接着用 postman 来测试这个接口:
在这里插入图片描述

可以看到,能成功显示。

这里直接上结论: get、post可以有显示,但是 put、delete 不能显示页面,但是后端却依然接受的到请求,也有打印 ===。这是因为 jsp 页面只支持 get、post、head 方法,其他的只会报错,如果是使用 html 页面,就没有这个问题(意思是其他请求方法也支持):
在这里插入图片描述

那么,如果只想支持某些请求方法呢?这里就用到注解中 METHOD 这个属性:
在这里插入图片描述
这么写嫌麻烦的话,还有简化写法:
在这里插入图片描述

b、地址前缀(解决地址重复问题)

看下图:
在这里插入图片描述
现在有两个 Controller ,一般每个 Controller 里面负责自己的增删改查,但是 Controller 间的地址名不能重复:
在这里插入图片描述

那么可以给地址加个前缀:
在这里插入图片描述

/ user / xxx :这种格式。

但每个这么填就会很麻烦,所以可以统一的加个前缀:
在这里插入图片描述

那么此时再按照以前的去访问,就会报错:
在这里插入图片描述
要加前缀:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值