SpringMVC
2021-11-15 20:22:16 1 举报
AI智能生成
SpringMVC框架
作者其他创作
大纲/内容
搭建环境
SpringMVC本身
依赖
web.xml
DispatcherServlet
CharacterEncodingFilter
HiddenHttpMethodFilter
spring-mvc.xml
自动扫描的包
Thymeleaf 视图解析器
注解驱动(标配)
SSM整合
spring-persist.xml
Spring和Mybatis整合
依赖
jdbc.properties
logback.xml
配置数据源
配置SqlSessionFactoryBean
保留Mybatis全局配置文件
舍弃Mybatis全局配置文件
需要装配数据源
指定Mapper配置文件位置
根据需要配置插件
扫描Mapper接口
MapperScannerConfigurer
mybatis-spring:scan
声明式事务
事务管理器
需要装配数据源
开启基于注解的声明式事务
在需要事务的方法上使用@Transactional注解
spring-mvc.xml
Spring和SpringMVC整合
在 web.xml 中配置 ContextLoaderListener
读取 spring-persist.xml
在 web.xml 中配置 DispatcherServlet
读取 spring-mvc.xml
两个 IOC 容器之间是父子关系
子容器可以装配父容器中的bean
基础操作
请求映射
@RequestMapping
方法级别
类级别
附加请求方式要求
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
view-controller
handler 方法形参
请求参数
@RequestParam注解
value属性:请求参数名字
required属性:当前请求参数是否为必需
defaultValue属性:默认值
实体类
通过 setXxx() 方法注入请求参数
其他数据
@RequestHeader
@CookieValue
原生 Servlet API
HttpServletRequest
HttpServletResponse
HttpSession
Model系列对象
存入模型的数据会被存入请求域
BindingResult
数据绑定操作的结果,如果绑定操作出错,那么错误信息可以从BindingResult对象获取
@RequestBody
主要用来把请求体中的JSON数据转换为Java实体类传入handler方法
handler 方法返回值
逻辑视图
页面跳转指令
转发:使用forward指令
重定向:使用redirect指令
@ResponseBody
将handler方法返回的实体类转换为JSON作为响应体返回给浏览器
ResponseEntity
作用:实现文件下载
封装数据
要下载的文件的字节数组
响应消息头
获取 ServletContext
通过 HttpSession 获取
自动装配
静态资源访问
url-pattern匹配斜杠
使用mvc:default-servlet-handler
让SpringMVC对未映射的请求直接放行
url-pattern匹配扩展名
匹配扩展名的请求:SpringMVC处理
不匹配扩展名的请求:SpringMVC不管,Tomcat处理
特定功能
REST
URL地址的要求
风格一致
所有单词由斜杠分开,不允许使用问号键值对形式的请求参数
如果需要携带数据,那就把数据放在 URL 地址中
请求方式要求
增
POST
删
DELETE
通过HiddenHttpMethodFilter来进行转换
改
PUT
通过HiddenHttpMethodFilter来进行转换
查
GET
HiddenHttpMethodFilter
请求参数名
_method
原始请求方式
POST
@PathVariable
将路径中会变化的部分匹配出来
Ajax
环境
JSON数据的转换需要Jackson支持
必须配置mvc:annotation-driven
注解
@RequestBody
@ResponseBody
@RestController
拦截器
三要素
拦截
默认情况
拦截全部请求
配置情况
精确匹配
模糊匹配
/*
匹配一层
/**
匹配多层
过滤
放行
preHandle()方法
返回true:放行
返回false:不放行
执行顺序
preHandle()
目标 handler 方法
postHandle()
渲染视图
afterCompletion()
类型转换
自动类型转换
字符串到基本数据类型
日期时间数据指定格式就能自动转换
转换失败
通过BindingResult是否出错
自定义类型转换器
数据校验
依赖
hibernate-validator
hibernate-validator-annotation-processor
实体类成员变量
通过注解设定校验规则
handler 方法中实体类形参
@Validated
需要mvc:annotation-driven支持
异常映射
基本思想
请求处理过程中抛出的异常
逻辑视图
效果
微观
抛出异常展示的是友好的提示界面
宏观
整个项目范围内统一管理错误消息
实现
基于XML
基于注解
普通请求
Ajax请求
@ControllerAdvice
@ExceptionHandler
文件上传
表单要求
请求方式
POST
编码方式
multipart/form-data
文件上传框
input type="file"
后端
依赖
commons-fileupload
commons-io
配置CommonsMultiPartResolver
Handler方法中使用MultiPartFile类型接收上传的文件
上传文件相关数据
文件转存
文件下载
ResponseEntity
下载文件的数据
响应消息头
运行原理
启动过程
读取配置文件
创建内置组件对象并加入IOC容器
收集请求映射
请求处理过程
建立调用链
创建HandlerAdapter对象
调用拦截器的preHandle()方法
调用目标handler方法
注入请求参数
准备所需的其他参数
调用handler方法
调用拦截器的postHandle()方法
后续操作
检查是否存在异常
渲染视图
把模型数据存入请求域
调用拦截器的afterCompletion()方法
0 条评论
下一页