Spring MVC 框架作为一个 MVC 框架,很重要的一项工作是在控制器获取模型数据并返回给前端,

在 JSP 页面展示模型数据,使用的技术是通过 EL 表达式从域对象中取值;
四大域:pageContext、request、session、application。
我们常用到的request 和 session这两个域对象;

Spring MVC 提供了以下几种方式添加模型数据:

Map
Model
ModelAndView
@SessionAttributes
@ModelAttribute

一、 模型数据绑定到 request 域对象
1、Map

设置业务方法的入参为 Map 类型,Spring MVC 会将隐含对象的引用传递给入参。在方法体中,开发者可以通过入参对象访问到模型中的所有数据,也可以向模型中添加新数据。

@RequestMapping("/mapTest")
    public String mapTest(Map<String,Object> map){
        User user = new User();
        user.setId(1);
        user.setName("张三");
        map.put("user", user);
        return "index";

业务方法完成,返回modelAndView给 DispatcherServlet,DispatcherServlet 通过 ViewResolver 对视图信息进行解析,逻辑视图映射到物理视图,同时将模型数据绑定到 JSP 的 request 域对象中,在 JSP 页面,可直接通过 EL 表达式取值。

${user.name } </body>
2、Model

Model 与 Map 类似,业务方法通过入参来完成模型数据的绑定。

@RequestMapping("/modelTest")
public String modelTest(Model model){
    User user = new User();
    user.setId(1);
    user.setName("张三");
    model.addAttribute("user", user);
    return "index";
 
3、ModelAndView

与 Map 或者 Model 不同的是,ModelAndView 不但包含模型数据,同时也包含了视图信息,所以使用 ModelAndView 来处理模型数据,业务方法的返回值必须是 ModelAndView。

业务方法中对 ModelAndView 进行两个操作:填充模型数据和绑定视图信息。

关于 ModelAndView 的使用有 8 种方式。

@RequestMapping("/modelAndViewTest1")
public ModelAndView modelAndViewTest1(){
    ModelAndView modelAndView = new ModelAndView();
    User user = new User();
    user.setId(1);
    user.setName("张三");
    modelAndView.addObject("user", user);
    modelAndView.setViewName("index");
    return modelAndView;
@RequestMapping("/modelAndViewTest2")
public ModelAndView modelAndViewTest2(){
    ModelAndView modelAndView = new ModelAndView();
    User user = new User();
    user.setId(1);
    user.setName("张三");
    modelAndView.addObject("user", user);
    View view = new InternalResourceView("/index.jsp");
    modelAndView.setView(view);
    return modelAndView;
@RequestMapping("/modelAndViewTest3")
public ModelAndView modelAndViewTest3(){
    ModelAndView modelAndView = new ModelAndView("index");
    User user = new User();
    user.setId(1);
    user.setName("张三");
    modelAndView.addObject("user", user);
    return modelAndView;
@RequestMapping("/modelAndViewTest4")
public ModelAndView modelAndViewTest4(){
    View view = new InternalResourceView("/index.jsp");
    ModelAndView modelAndView = new ModelAndView(view);
    User user = new User();
    user.setId(1);
    user.setName("张三");
    modelAndView.addObject("user", user);
    return modelAndView;
@RequestMapping("/modelAndViewTest5")
public ModelAndView modelAndViewTest5(){
    Map<String,Object> map = new HashMap<String,Object>();
    User user = new User();
    user.setId(1);
    user.setName("张三");
    map.put("user", user);
    ModelAndView modelAndView = new ModelAndView("index", map);
    return modelAndView;
@RequestMapping("/modelAndViewTest6")
public ModelAndView modelAndViewTest6(){
    Map<String,Object> map = new HashMap<String,Object>();
    User user = new User();
    user.setId(1);
    user.setName("张三");
    map.put("user", user);
    View view = new InternalResourceView("/index.jsp");
    ModelAndView modelAndView = new ModelAndView(view, map);
    return modelAndView;
@RequestMapping("/modelAndViewTest7")
public ModelAndView modelAndViewTest7(){
    User user = new User();
    user.setId(1);
    user.setName("张三");
    ModelAndView modelAndView = new ModelAndView("index", "user", user);
    return modelAndView;
@RequestMapping("/modelAndViewTest8")
public ModelAndView modelAndViewTest8(){
    User user = new User();
    user.setId(1);
    user.setName("张三");
    View view = new InternalResourceView("/index.jsp");
    ModelAndView modelAndView = new ModelAndView(view, "user", user);
    return modelAndView;
4、HttpServletRequest

Spring MVC 可以在业务方法直接获取到 Servlet 原生 Web 资源,只需在方法定义时添加 HttpServletRequest 入参即可,在方法体中,可直接对 request 对象进行操作。

@RequestMapping("requestTest")
public String requestTest(HttpServletRequest request){
    User user = new User();
    user.setId(1);
    user.setName("张三");
    request.setAttribute("user", user);
    return "index";

2018.11.15

5、使用@ModelAttribute注解

(1)定义一个方法,该方法用来返回要填充到模型数据中的对象。
(2)给该方法添加 @ModelAttribute 注解。
由于web.xml中配置的过滤路径为*.do
访问路径:
http://localhost:8080/modelAttributeTest.do

    @RequestMapping("/modelAttributeTest")
    public String modelAttribute() {
        return "hello";
    @ModelAttribute
    public User getUser(){
        User user = new User();
        user.setId(1L);
        user.setName("zhangsan");
        return user;
 

在hello.jsp中把user对象中数值取出来 $ { user.id} 、$ {user.name};
若没效果,jsp页面顶添加如下标签:
<%@ page isELIgnored=“false” %>

二、模型数据绑定到 session 域对象

以上的方式全部是将模型数据绑定到 request 对象中,如果需要将模型数据绑定到 session 对象中,只需要在类定义处添加 @SessionAttributes(value=“user”) 注解即可。

@Controller
@SessionAttributes(value="user")
public class HelloHandler {
//省略代码

通过 @ModelAttributes 绑定模型数据到session中,request中也存在模型数据;除了通过key值来绑定,还可以通过model的数据类型来绑定;也可以绑定多个模型数据;

@Controller
@SessionAttributes(types=User.class)
public class HelloHandler {
//省略代码
------------------------------------------------------------
@Controller
@SessionAttributes(types={User.class,Address.class})
public class HelloHandler {
//省略代码

整个过程完成了 ,控制器调用 Controller 到 View的过程;

Spring MVC 框架作为一个 MVC 框架,很重要的一项工作是在控制器获取模型数据并返回给前端,在 JSP 页面展示模型数据,使用的技术是通过 EL 表达式从域对象中取值;四大域:pageContext、request、session、application。我们常用到的request 和 session这两个域对象;Spring MVC 提供了以下几种方式添加模型数据:Ma... 作用: 作为数据流转的载体,SpringMVC官方提供的一个对象。 使用:在单元方法上声明Model类型的形参即可。 注意:Model对象是由DispatcherServlet创建并作为实参传递给单元方法使用 请求转发: model对象存储的数据,相当于存储到了request对象 我们在jsp直接按照request对象作用域取值的方式来获取数据即可。 在重定向,会将第一次请求model对象的数据作为第二次请求的 请求数据携带,第一次请求. @Entity @Table(name = "diz_circle", catalog = "discuss") @Column(name = "name", length = 64) @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "update_use 先用python manage.py shell命令提供的交互模式环境 通过模型实例化对属性赋值保存或通过调用四种内置方法create()、get_or_create()、update_or_create()、bulk_create(),来实现数据库表记录的增加。 (1)属性赋值方式新增记录 (2)create()方法增加新的记录 (3)检查新增记录 (5)批量新增记录 2、读取记录 常用的内置查询方法包括了all()、values()、values_li... @RequestMapping("/blogs/{id}") public String index(@PathVariable("id") long id, Model model) {     // 这里我们模拟一些数据 SpringMVC的请求处理器 会调用Service层,Service层调用数据访问层,最终页面上要得到的结果一般就是数据访问层的结果。那么SpringMVC是如何将数据模型加入到请求域和session域的呢? 一. 处理数据模型ModelAndView 请求处理器方法的返回结果如果为ModelAndView,则既包含数据模型,也包含视图信息。ModelAndView添加数据模型方法: addObject(String,Object) 添加单个数据,第一个参数表示数据模型名称,第二个参数就是
一、模型数据处理的方式  1、将控制器方法的返回值类型设置为ModelAndView:通过ModelAndView对象我们既可以设置视图,也可以设置模型数据模型数据可以在视图(如jsp页面)通过EL表达式或者jsp表达式获取: @RequestMapping(value = "/testModelAndView") public ModelAndView testModelAndView(Mo...
@ModelAttribute修饰的userModel方法会先与login调用,它把请求参数值赋给对应变量,可以向方法Model添加对象,前提是要在方法签名加入一个Model类型的参数 @RequestMapping("/getHoman") public ModelAndView getHoman() { List> maps = jdbcTemplate.queryForList("SELECT * FROM t_struct where f_isdelete=0"); String s = JSONArray. save():将模型对象保存到数据,ORM框架会映射成对应的insert或update语句。 delete():将模型对象从数据删除,ORM框架会映射成对应的delete语句。 实例演练: 将‘天龙八部’插入到图书表 修改urls.py文件,增加一条路由:url('cure', views.cure), 修改views....
Spring MVCSpring Framework的一部分,它是一个用于开发Web应用程序的MVC框架。MVCModel-View-Controller的缩写,它是一种设计模式,可以将应用程序的逻辑分为三个部分:模型、视图和控制器。 在Spring MVC模型代表应用程序的业务逻辑和数据。视图代表应用程序的用户界面。控制器接受用户请求并根据请求的内容选择适当的模型和视图来响应用户请求。 Spring MVC框架提供了许多功能,例如处理HTTP请求和响应、请求参数绑定、表单验证、文件上传等等。它还支持各种视图技术,例如JSP、FreeMarker、Thymeleaf等等。 Spring MVC框架是一个轻量级的框架,它易于学习和使用,并且可以与其他Spring框架集成,例如Spring Boot、Spring Security等等。它也非常适合用于构建RESTful Web服务。
严重: testWhileIdle is true, validationQuery not set 使用Druid连接池报错处理【无Spring框架,使用的JDK9,MYSQL8版本】 91420 严重: maxIdle is deprecated,严重: testWhileIdle is true, validationQuery not set,Druid连接池连接MSQL报错处理 48961