1.@ModelAttribute注释方法
例子(1),(2),(3)类似,被@ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个controller映射多个URL的用法来说,要谨慎使用。
(1)@ModelAttribute注释void返回值的方法
- <span style="font-size:12px;">@Controller
- public class HelloWorldController {
- @ModelAttribute
- public void populateModel(@RequestParam String abc, Model model) {
- model.addAttribute("attributeName", abc);
- }
- @RequestMapping(value = "/helloWorld")
- public String helloWorld() {
- return "helloWorld";
- }
- }</span>
- <span style="font-size:12px;">
- </span>
这个例子,在获得请求/helloWorld 后,populateModel方法在helloWorld方法之前先被调用,它把请求参数(/helloWorld?abc=text)加入到一个名为attributeName的model属性中,在它执行后helloWorld被调用,返回视图名helloWorld和model已由@ModelAttribute方法生产好了。
这个例子中model属性名称和model属性对象有model.addAttribute()实现,不过前提是要在方法中加入一个Model类型的参数。
当URL或者post中不包含次参数时,会报错,其实不需要这个方法,完全可以把请求的方法写成,这样缺少此参数也不会出错
- <span style="font-size:12px;"> @RequestMapping(value = "/helloWorld")
- public String helloWorld(String abc) {
- return "helloWorld";
- }</span>
- <span style="font-size:12px;">
- </span>
(2)@ModelAttribute注释返回具体类的方法
- <span style="font-size:12px;">@ModelAttribute
- public Account addAccount(@RequestParam String number) {
- return accountManager.findAccount(number);
- }
- </span>
- <span style="font-size:12px;">
- </span>
这种情况,model属性的名称没有指定,它由返回类型隐含表示,如这个方法返回Account类型,那么这个model属性的名称是account。
这个例子中model属性名称有返回对象类型隐含表示,model属性对象就是方法的返回值。它无须要特定的参数。
(3)@ModelAttribute(value="")注释返回具体类的方法
- <span style="font-size:12px;">@Controller
- public class HelloWorldController {
- @ModelAttribute("attributeName")
- public String addAccount(@RequestParam String abc) {
- return abc;
- }
- @RequestMapping(value = "/helloWorld")
- public String helloWorld() {
- return "helloWorld";
- }
- }</span>
- <span style="font-size:12px;">
- </span>
这个例子中使用@ModelAttribute注释的value属性,来指定model属性的名称。model属性对象就是方法的返回值。它无须要特定的参数。
(4)@ModelAttribute和@RequestMapping同时注释一个方法
- <span style="font-size:12px;">@Controller
- public class HelloWorldController {
- @RequestMapping(value = "/helloWorld.do")
- @ModelAttribute("attributeName")
- public String helloWorld() {
- return "hi";
- }
- }</span>
- <span style="font-size:12px;">
- </span>
这时这个方法的返回值并不是表示一个视图名称,而是model属性的值,视图名称由RequestToViewNameTranslator根据请求"/helloWorld.do"转换为逻辑视图helloWorld。
Model属性名称有@ModelAttribute(value=””)指定,相当于在request中封装了key=attributeName,value=hi。
2.@ModelAttribute注释一个方法的参数
(1)从model中获取
- <span style="font-size:12px;">@Controller
- public class HelloWorldController {
- @ModelAttribute("user")
- public User addAccount() {
- return new User("jz","123");
- }
- @RequestMapping(value = "/helloWorld")
- public String helloWorld(@ModelAttribute("user") User user) {
- user.setUserName("jizhou");
- return "helloWorld";
- }
- }</span>
- <span style="font-size:12px;">
- </span>
在这个例子里,@ModelAttribute("user") User user注释方法参数,参数user的值来源于addAccount()方法中的model属性。
此时如果方法体没有标注@SessionAttributes("user"),那么scope为request,如果标注了,那么scope为session
(2)从Form表单或URL参数中获取(实际上,不做此注释也能拿到user对象)
- <span style="font-size:12px;">@Controller
- public class HelloWorldController {
- @RequestMapping(value = "/helloWorld")
- public String helloWorld(@ModelAttribute User user) {
- return "helloWorld";
- }
- }</span>
- <span style="font-size:12px;">
- </span>
注意这时候这个User类一定要有没有参数的构造函数。
相关推荐
@ModelAttribute注解运用详解 @ModelAttribute注解是Spring框架中的一种重要注解,用于将模型数据绑定到控制器的方法参数中。下面我们将详细介绍@ModelAttribute注解的使用方法和示例代码。 一、@ModelAttribute...
本文将深入探讨`@ModelAttribute`的两种主要用途,并结合示例展示如何巧妙地运用它来简化Controller层的代码。 1. **作为方法参数**: 当`@ModelAttribute`注解应用于方法参数时,Spring MVC会尝试从请求中找到...
**Spring MVC 数据绑定详解** 在Web开发中,Spring MVC框架为我们提供了一种高效的数据绑定机制,使得控制器(Controller)能够方便地将用户提交的表单数据与Java对象进行映射,简化了处理HTTP请求和响应的过程。本...
在Spring MVC框架中,注解是实现控制器、数据绑定、模型映射等核心功能的关键元素。这些注解简化了代码,使得开发更加...视频教程结合课程文档将提供更加直观和详尽的指导,帮助学习者更好地掌握Spring MVC的注解使用。
在Java Spring框架中,注解(Annotation)是配置的核心元素之一,它们极大地简化了XML配置,使得代码更加简洁,更具可读性。本篇将详细解析Spring中的主要注解及其用法。 一、注解说明 1. 使用简化配置:Spring...
Spring框架作为Java领域最流行的轻量级开源框架之一,它的学习对于任何Java开发者来说都是至关重要的。本资源主要关注Spring3版本,虽然它相对较老,但其中的基础概念和核心机制在Spring的后续版本中仍然保持一致,...
本文将深入探讨Spring MVC的核心概念、工作原理以及如何在实际项目中运用。 ### 1. 核心概念 - **DispatcherServlet**:Spring MVC 的入口点,负责接收HTTP请求,并根据配置的映射规则转发到相应的处理器。 - **...
《Spring In Action: SpringMVC 提交表单详解》 在Web开发中,SpringMVC作为Spring框架的一部分,是处理HTTP请求和响应的强大工具。它为开发者提供了构建高性能、易于测试的Web应用程序的结构。本篇文章将深入探讨...
**Spring5 MVC 示例详解** Spring MVC是Spring框架的一部分,它是一个强大的用于构建Web应用程序的模型-视图-控制器(MVC)架构。Spring5作为最新版本,引入了许多新特性和改进,使得开发者能够更加高效地构建可...
### Spring中文教程:深入理解与应用 #### 引言 Spring框架自2003年由Rod Johnson...掌握Spring框架的关键在于理解其设计理念,熟练运用其提供的工具,不断实践和优化代码结构,以构建稳定、高效、可维护的应用系统。
### Spring Boot 前后端传值知识点详解 #### 一、@RequestParam 注解 - **定义**:`@RequestParam` 注解主要用于处理 Content-Type 为 `application/x-www-form-urlencoded` 编码的内容,适用于 GET 或 POST 请求...
`springmvc入门详解.pdf`可能包含详细的步骤和实例,从创建项目、配置环境到编写第一个简单的Spring MVC应用,包括Hello World示例的Controller、配置文件设置、运行及调试等。 综上所述,Spring MVC 提供了一套...
本文旨在深入探讨SpringMVC框架的核心概念、特性及其实际应用,帮助初学者快速掌握并熟练运用这一框架。 #### SpringMVC框架的特色与优势 1. **URL自定义**:SpringMVC支持灵活的URL映射,允许开发者自定义URL结构...
### Spring注解开发详解 随着软件工程的发展与技术演进,传统的XML配置方式逐渐显得冗余且不便于维护。为了简化开发流程并提高程序的可读性和可维护性,Spring框架自2.5版本起引入了注解驱动的配置方式。这种基于...
在本项目中,我们将深入探讨"Spring MVC应用之用户管理系统"。Spring MVC是Spring框架的一个模块,主要用于构建Web应用程序,而用户管理系统则是任何Web应用的基础组成部分。它涉及到用户注册、登录、权限管理等多个...
**Spring MVC 框架详解** Spring MVC 是 Spring 框架的一个重要组成部分,它是一个用于构建 Web 应用程序的模型-视图-控制器(MVC)框架。在 Spring 2.5 版本中,这个框架已经相当成熟,为开发者提供了强大的功能和...
### Spring注解详解 #### 1.1 Spring注解说明 Spring框架通过引入注解,极大地简化了Java开发中的配置工作,使得开发者能够更加专注于业务逻辑的编写。Spring注解主要应用于依赖注入、控制器定义、事务管理、缓存...