Spring框架总结(7)
分类:
文章
•
2025-05-04 19:53:22
续上篇&SpringMVC工作原理&小知识点(重定向和转发&拦截器&静态资源处理)
- @SessionAttributes 注解
- 用来指定哪些数据存储到session中
- 可以通过type,name来分别指定
- 若在此注解中指定,不仅向session中存储,同时也向request中存储

- @ModelAttribute 注解
- 作用:无论访问哪个控制方法,都会先调用使用了此注解的方法
- 在使用此注解的方法中可以将对象的默认值先存储在数据模型中;当入参到达时先检查ModeAttribute中添加的数据,若存在则更改

- SpringMVC工作原理

- SpringMVC流程
- 用户发送请求至前端控制器DispatcherServlet。
- DispatcherServlet收到请求调用HandlerMapping处理器映射器。
- 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
- DispatcherServlet调用HandlerAdapter处理器适配器。
- HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
- Controller执行完成返回ModelAndView。
- HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
- DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
- ViewReslover解析后返回具体View。
- DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
- DispatcherServlet响应用户。
- 组件说明:以下组件通常使用框架提供实现
- ViewResolver:通过扩展视图解析器,支持更多类型的视图解析,例如:jsp、freemarker、pdf、excel等。
- HandlAdapter:通过扩展处理器适配器,支持更多类型的处理器。
- HandlerMapping:通过扩展处理器映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
- DispatcherServlet:作为前端控制器,整个流程控制的中心,控制其它组件执行,统一调度,降低组件之间的耦合性,提高每个组件的扩展性。
- 关于视图
- 两个接口:
- View是所有视图都需要实现的接口,主要方法是render(渲染)
- ViewResolver:视图解析器,负责创建View;常用的视图解析器有 IntervalResourceViewResolver
- 关于重定向和转发
- 当请求方法返回字符串时,可以通过设置forward和redirect作为字符串的前缀来指定转发和重定向;例如:
- return "forward:success.jsp"(返回的该jsp不能再WEB-INF下,而是在webapp下,下例同理)
- return"redirect:error.jsp"
- 二者皆可使用" / "+文件名:" / "代表工程根目录(原生servlet的" / "代表服务器根目录),不带" / "代表当前路径
- 拦截器(HandlerInterceptor)
- SpringMVC的一个组件,可以拦截所有的SpringMVC请求,无论该请求是否被映射
- 创建拦截器的步骤
- 定义拦截器类实现接口

- 配置拦截器

- 处理静态资源

- 使用如下配置对WEB-INF下的文件做映射