spring mvc
- Spring mvc 是 Spring Framework 里提供的一个模块,是对 mvc 架构的实现
- Spring mvc 指 Spring web mvc
- 它规范了 web 的开发以及对 servlet 做封装,还有提供了其他的一些封装,这里只探究 modelAndView
HttpServletRequest
- HttpServletRequest 表示一个 HTTP 请求,它包含了客户端发送到服务器的请求信息,如请求参数、请求头、会话数据等。当通过 HTTP 协议访问服务器时,会把 HTTP 请求封装为 HttpServletRequest 类型的对象。HttpServletRequest 对象由 Servlet 容器负责创建和管理,它在整个请求处理过程中都存在,直到请求结束。
modelAndView
- modelAndView 是一个类,可以封装为 Controller 控制器方法的返回值。
- 它包含了视图名属性(View Name)和模型数据属性(Model Data)两部分,用来指定视图要渲染的视图以及要传输到视图的数据。
- 在Controller 控制器使用 modelAndView 需要 new 一个 modelAndView 对象
- 对象里的 Model Data (数据模型)部分是一个map,在控制器中可以添加数据,注意 key 不能重复
- 对象里的 View Name (视图模型)部分存储视图的名字,通过配置文件可以找到具体的视图文件
- 控制器处理完并返回 modelAndView 对象之后,Spring mvc 就会解析该对象。
- 解析 modelAndView 对象大致步骤如下:
- 根据 ModelAndView 中的视图名称查找适当的视图模板
- 通过视图解析和渲染机制将 model 传递给视图引擎
- 视图引擎将数据与试图结合
- 渲染视图
- 视图渲染完成就会响应给客户端
- 简而言之,服务器接收到请求后,会调用控制器进行处理,如果控制器最终返回的是 ModelAndView,Spring MVC就会经常解析。把 ModelAndView 中的数据与指定的视图结合渲染,然后返回页面
- 下面是对 modelAndView 操作的一些方法
- 指定 ModelAndView 的页面
//在 new ModelAndView 对象时指定
ModelAndView view = new ModelAndView("product");
//使用方法指定
modelAndView.setViewName("product");
通过key-value的方式绑定数据
modelAndView.addObject(String attributeName, Object attributeValue);
在页面中使用 thymeleaf 模板引擎来访问 ModelAndView 中的数据,这又是一个很大的部分
新手上路,如有错误欢迎指正