`

SpringMVC(六)_处理模型数据方式整理

阅读更多

        前言:本文主要介绍SpringMVC处理模型数据的方式,包括以Map、Model、ModelAndView作为模型数据,介绍指定响应页面的方式。

 

前台测试界面(type、username、password用来接收后台传来的数据,以检验后台模型数据的正确性 ):

 

1. 测试页面传参(ModelAndView——构造函数设置view)

  Spring Web MVC 提供Model、Map或ModelMap让我们能去暴露渲染视图需要的模型数据,ModelAndView中既有模型数据信息,也有View页面信息。此处在功能方法中,以ModelAndView构造函数方式传入待返回的View页面,通过API添加数据模型,SpringMVC会把此数据模型中的数据反馈给View。

前台代码:

<form action="getModelAndView.action" method="post">
	测试页面传参(ModelAndView——构造函数设置view):<button type="submit">提交</button>
</form>

 后台代码:

  @RequestMapping("/getModelAndView.action")
    public ModelAndView getModelAndView(){
        System.out.println("【ModelAndView】【构造函数】");
        
        /* ModelAndView构造函数可以指定返回页面的名称.    */
        /* 此处返回的页面为:'/views/handleModel.jsp'. */
        ModelAndView modelAndView = new ModelAndView("handleModel");
        modelAndView.addObject("type", "ModelAndView_构造函数设置View");
        return modelAndView;
    }

 

 2. 测试页面传参(ModelAndView——setViewName)

         此处在功能方法中,通过API设置待返回的View页面,通过API添加数据模型,SpringMVC会把此数据模型中的数据反馈给View。

前台代码:

<form action="getModelAndView2.action" method="post">
	测试页面传参(ModelAndView——setViewName):<button type="submit">提交</button>
</form>

 后台代码:

    @RequestMapping("/getModelAndView2.action")
    public ModelAndView getModelAndView2(){
        System.out.println("【ModelAndView】【setViewName】");
        
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("type", "ModelAndView_setViewName");
        /* setViewName方法来设置所需要跳转的页面. */
        modelAndView.setViewName("handleModel");
        return modelAndView;
    }

 

3. 测试页面传参(Map为形参)

         此功能方法中,以Map为作为功能方法的形参,SpringMVC自动将此Map中的数据暴露为模型数据。

前台代码:

<form action="getMap.action" method="post">
	测试页面传参(Map为形参):<button type="submit">提交</button>
</form>

 后台代码:

    @RequestMapping("/getMap.action")
    public String getMap2(Map<String, Object> map){
        System.out.println("【Map为形参】【返回值为页面】");
        
        /* map.put相当于request.setAttribute方法. */
        map.put("type", "map以形参返回Model");
        /* 返回的页面:/views/handleModel.jsp */
        return "handleModel";
    }

 

4. 测试页面传参(Model为形参)

      此功能方法中,以Model为作为功能方法的形参,SpringMVC自动将此Model中的数据暴露为模型数据。

前台代码:

<form action="getModel.action" method="post">
	测试页面传参(Model为形参):<button type="submit">提交</button>
</form>
 后台代码:
    @RequestMapping("/getModel.action")
    public String getModel(Model model){
        System.out.println("【Model为形参】【返回值为页面】");
        
        /* model.addAttribute相当于request.setAttribute方法. */
        model.addAttribute("type", "model以形参返回Model");
        /* 返回的页面:/views/handleModel.jsp */
        return "handleModel";
    }
 

5. 测试页面传参(ModelMap为形参)

        此功能方法中,以ModelMap为作为功能方法的形参,SpringMVC自动将此ModelMap中的数据暴露为模型数据。

前台代码:

<form action="getModelMap.action" method="post">
	测试页面传参(ModelMap为形参):<button type="submit">提交</button>
</form>
 后台代码:
    @RequestMapping("/getModelMap.action")
    public String getModelMap(ModelMap mapModel){
        System.out.println("【ModelMap为形参】【返回值为页面】");
        
        /* mapModel.addAttribute相当于request.setAttribute方法. */
        mapModel.addAttribute("type", "ModelMap以形参返回Model");
        /* 返回的页面:/views/handleModel.jsp */
        return "handleModel";
    }
 

6. 测试页面传参(@ModelAttribute修饰形参)

     @ModelAttribute有三大作用

  1. 绑定请求参数到命令对象:放在功能处理方法的入参上时,用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示时使用;
  2. 暴露表单引用对象为模型数据:放在处理器的一般方法(非功能处理方法)上时,是为表单准备要展示的表单引用对象;
  3. 暴露@RequestMapping方法返回值为模型数据:放在功能处理方法的返回值上时,是暴露功能处理方法的返回值为模型数据,用于视图页面展示时使用。

        此处仅给出作用1、作用3,作用2在参数绑定一章已给出样例,此处不再重复。

        先是作用1,@ModelAttribute修饰形参,绑定请求参数到命令对象,自动暴露为模式数据。此样例中,前台并未传参数,@ModelAttribute仅是将其修饰的参数暴露给模型数据。

前台代码:

<form action="getModelAttribute.action" method="post">
	测试页面传参(@ModelAttribute修饰形参):<button type="submit">提交</button>
</form>

 后台代码:

  RequestMapping("/getModelAttribute.action")
    public String getModelAttribute(@ModelAttribute("user") UserVo user){
        System.out.println("【@ModelAttribute修饰形参】【返回值为页面】");
        
        user.setUsername("username_return");
        user.setPassword("password_return");
        /* 返回的页面:/views/handleModel.jsp */
        return "handleModel";
    }

 

7. 测试页面传参(@ModelAttribute修饰返回值)

        此样例给出@ModelAttribute第三个作用:暴露@RequestMapping 方法返回值为模型数据。当@ModelAttribute放在功能处理方法的返回值上时,是暴露功能处理方法的返回值为模型数据,用于视图页面展示时使用。

前台代码:

<form action="getModelAttribute2.action" method="post">
	测试页面传参(@ModelAttribute修饰返回值):<button type="submit">提交</button>
	(会返回出错页面,因为后台默认根据请求路径(/views/views/getModelAttribute2.jsp)寻找响应页面,必然出错)
</form>

 后台代码:

    @RequestMapping("/getModelAttribute2.action")
    public @ModelAttribute("user") UserVo getModelAttribute2(){
        System.out.println("测试页面传值方式:getModelAttribute2");
        
        UserVo user = new UserVo();
        user.setUsername("username_return");
        user.setPassword("password_return");
        /* 响应的view应该也是该请求的view,等同于void返回. */
        /* 返回的页面:/views/views/getModelAttribute2.jsp */
        return user;
    }

 

 

代码下载来源:http://super-wangj.iteye.com/blog/2388430

  • 大小: 45.5 KB
分享到:
评论

相关推荐

    SpringMVC 学习总结

    SpringMVC 参数绑定有六种主要方式: 1. 基本类型参数:直接通过请求参数名绑定到方法的基本类型参数。 2. POJO 参数:请求参数名与 POJO 类属性名匹配时,会自动将参数值注入到 POJO 对象中。 3. @RequestParam ...

    springmvc 尚硅谷资料整理

    - 方法可以返回`ModelAndView`类型,同时包含视图名称和模型数据: ```java @RequestMapping("/testModelAndView") public ModelAndView testModelAndView() { String viewName = "success"; ModelAndView ...

    springmvc+mybatis多数据源,aop动态切换

    在SpringMVC+MyBatis的多数据源项目中,Maven可以帮助我们整理项目的目录结构,管理所需的依赖库,使得项目的构建和部署更加便捷。 总结来说,"springmvc+mybatis多数据源,aop动态切换"这个主题涉及到了SpringMVC...

    SpringMVC面试专题及答案整理.pdf

    5. **处理请求并返回ModelAndView**:处理器执行完成后会返回一个包含模型数据和视图名称的对象(ModelAndView)。 6. **视图解析器(ViewResolver)解析视图**:根据ModelAndView中的视图名称解析成具体的视图实现...

    2021全新SpringMVC框架教程【视频课程】下载整理.zip

    9. **Conversion and Formatting**:SpringMVC提供了强大的数据绑定和格式化机制,使得模型数据能自动转换为合适的类型。 在学习这个课程时,你将接触到以下关键知识点: - **Spring Boot集成SpringMVC**:Spring ...

    springMVC3和Hibernate3整理笔记

    4. **ModelAndView**: Controller处理完业务后,可以使用ModelAndView对象返回视图名和模型数据,模型数据可以注入到视图中。 5. **HibernateTemplate或HibernateDaoSupport**: Spring提供的辅助类,简化了Hibernate...

    2021全新SpringMVC框架教程[视频课程].txt打包整理.zip

    这些类的方法(即处理方法)接收HTTP请求并返回一个ModelAndView对象,该对象包含了模型数据和视图名。通过使用@PathVariable、@RequestParam和@ModelAttribute等注解,可以方便地从URL路径、请求参数或表单中提取...

    SpringMvC+Mybaits

    首先,SpringMVC是基于Spring框架的MVC模型,它提供了请求分发、视图解析、数据绑定等功能。在SpringMVC中,控制器(Controller)通常是实现了`@Controller`注解的Java类,它接收HTTP请求并调用业务逻辑。模型...

    springMVC框架例子源码

    学习这个源码例子,你可以深入了解SpringMVC如何与MySQL数据库进行交互,包括如何配置数据源、如何编写DAO和Service层代码,以及如何在Controller中调用这些服务来处理请求并返回响应。同时,你还可以研究如何组织...

    【新技术】java框架源码springmvc+mybatisJava实用源码整理learns

    4. **数据绑定与验证**:SpringMVC提供数据绑定机制,自动将请求参数映射到方法参数,同时支持数据验证,如@Validated。 5. **拦截器**:自定义Interceptor可以实现预处理和后处理功能,例如权限验证、日志记录等。...

    【新技术】java框架源码springmvc+mybatis源码整理

    模型绑定、数据验证、异常处理等机制使得SpringMVC在处理用户请求时更加灵活和强大。 SpringMVC的工作流程大致如下: 1. 用户发起HTTP请求到达DispatcherServlet。 2. DispatcherServlet通过HandlerMapping找到合适...

    springmvc-wys笔记

    2. **Model-View-Controller(MVC)模式**:Spring MVC遵循这一设计模式,模型负责业务逻辑,视图负责展示,而控制器负责接收请求并处理,将模型数据传递给视图。 3. **@Controller**:这是Spring MVC中的一个注解...

    SpringMVC面试专题及答案整理1

    - 处理器执行完后返回ModelAndView对象,包含模型数据和视图名称。 - HandlerAdapter将ModelAndView返回给DispatcherServlet。 - DispatcherServlet使用ViewResolver(视图解析器)解析视图名称。 - ...

    SpringMVC精品资源--记录准备春招实习过程中,学习与复习的知识(模块化整理,非面试题速成)。注:暂停更新,后.zip

    Controller处理业务逻辑后,通常会返回一个ModelAndView对象,其中包含了视图名和模型数据。接着,ViewResolver解析视图名,生成具体的视图,如JSP页面,展示给用户。 在SpringMVC中,Bean的管理由Spring容器负责,...

    springmvc+hibernate使用jar包集合

    Controller处理业务逻辑后,返回一个ModelAndView对象,其中包含了模型数据和视图信息。ViewResolver根据ModelAndView中的视图名解析出实际的视图,最后渲染出响应。 Hibernate框架则通过提供一套API和XML配置文件...

    管理系统系列--一个SpringMVC4+EasyUI的后台管理系统,重新整理简洁版:后台管理系统模板.zip

    6. **ModelAndView对象**:在Controller中使用,用于存储模型数据和视图名称。 7. **AOP(面向切面编程)**:SpringMVC可以与Spring的AOP模块结合,实现事务管理、日志记录等横切关注点。 **EasyUI知识点**: 1. ...

    Maven + SpringMVC + Mybatis【绝非原创,单纯整理】【五】

    接着,SpringMVC是Spring框架的一部分,用于构建Web应用程序的模型-视图-控制器(MVC)架构。它提供了一种声明式的方式来处理HTTP请求,将业务逻辑与视图层分离,提高了代码的可维护性。SpringMVC的核心组件包括...

    springmvc+maven+gora资料总结

    在"springmvc+maven+gora框架整理.docx"中,我们可以期待找到关于如何将这三个技术整合在一起的信息。这可能包括: 1. **Gora数据模型**:Gora提供了数据对象的抽象,允许定义数据的结构。这些对象可以映射到不同的...

    java springmvc4.0+hibernate4.1 jar架包

    ModelAndView则封装模型数据和视图信息。 Hibernate 4.1 是一个强大的ORM框架,能够将Java对象与数据库表进行映射,允许开发者通过面向对象的方式来操作数据库。它的主要功能包括实体管理、事务管理、查询语言(HQL...

    SpringMVC PDF

    7. 视图解析:介绍了Spring MVC如何将控制器返回的模型数据解析为视图,包括视图解析器ViewResolver的使用。 8. 内容协商解析器ContentNegotiatingViewResolver:这是Spring MVC提供的一个视图解析器,用于根据...

Global site tag (gtag.js) - Google Analytics