3-Spring MVC
1. 👍基本概念
Model-View-Controller
- 模型model:存储内容,指数据、领域类
- 控制器controller:处理用户输入,客户端的请求
- 视图view:显示内容
lombok在编译器自动生成一些样板代码,运行期没用。@Slf4j
是lombok提供的注解。slf4j
是一个日志标准,具体实现有很多,如logback,log4j等。lombok
插件@Data
注解
目前主流的是前后端分离开发。
2. Model 领域类
为视图提供数据。
@ModelAttribute
@SessionAttributes
- Model属性会复制到Servlet Request属性中,这样视图中就可以使用它们用于渲染页面
2.1. Servlet规范
- 最小开发单元
- Web容器的实现规范,与Spring无关
- Web容器/服务器,里面放Servlet对象
- 实现
- tomcat
- jetty
thymeleaf与Servlet request属性协作,与spring model解耦
2.1.1. Servlet对象
- 类型
- Request
- Response
- Servlet对象带有属性(property即key-value)
2.2. ModelAttribute
@ModelAttribute(name = <key>)
- 注解返回值为
value
- 注解返回值为
- 方法被Spring自动调用
2.2.1. 方法级别
1 |
|
方法的返回值将被添加到模型中,并使用指定的属性名作为key。在控制器处理请求之前,该方法会先被调用。
2.2.2. 参数级别
1 |
|
在这种写法中,@ModelAttribute
注解标记在方法的参数上,指定了要从模型中获取的属性的名称。参数将被自动绑定到模型中的相应属性,以便在方法内部使用。
2.2.3. 默认命名规则
1 |
|
如果没有指定@ModelAttribute
注解的属性名称,Spring MVC会根据参数类型自动推断属性名称,并将其添加到模型中。
在上面的示例中,SomeObject
类型的参数将使用类名的首字母小写作为属性名称。
3. MVC请求
3.1. 👍处理过程
客户端请求在后端的处理过程,非常重要。
核心DispatcherServlet,是Spring自己实现的Servlet容器。
- Web容器开发的基本单元是Servlet,请求先到servlet。
- mapping根据url把请求转到controller,其中spring框架会做参数解析。
- controller拿到请求和请求参数,把请求和请求参数传给业务层
- 业务层处理业务逻辑,可能会做数据持久化访问DAO层
- 业务层把处理结构返回控制器
- 控制器把结果放回给servlet
- servlet拿到了数据和逻辑视图名,找到视图解析器的第三方库
- 视图解析器渲染视图
3.2. MVC请求映射
来自http协议的标准。
注解可以放在类定义上方,也可以放在方法上方。
Requestmapping
GetMapping
PostMapping
DeleteMapping
PatchMapping
PutMapping
3.3. 👍重定向
控制器处理完成后可以返回逻辑视图名,也可以重定向到其他url
- http状态码:302
- 控制器
return redirect:<url>
3.4. 👍Spring MVC获取参数的集中方式
- 表单(form)参数,转成model
- 成员类型可能要自己实现Converter进行转换
- 可以用
@Valid
校验 - form是html里定义的
- 路径参数
@PathVariable
- 例:
/book/{id}
- 请求参数/查询参数
@RequestParam
- 例:
/challenge?model=2
- json请求体
@RequestBody
,会用到HttpMessageConverter消息转换器- Rest API
- 标题: 3-Spring MVC
- 作者: Charlie
- 创建于 : 2023-10-10 18:10:00
- 更新于 : 2024-07-05 12:55:04
- 链接: https://chillcharlie357.github.io/posts/c5191f2c/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论