我的開發環境
框架:        springmvc+spring+freemarker
開發工具: springsource-tool-suite-2.9.0
JDK版本: 1.6.0_29
tomcat版本:apache-tomcat-7.0.26

前置文章-SpirngMVC配置入門 http://www.cnblogs.com/sunang/p/3419544.html

      Spring整合Freemarker http://www.cnblogs.com/sunang/p/3419676.html

    SpringMVC常用注解實例詳解:@Controller,@RequestMapping,@RequestParam,@PathVariable http://www.cnblogs.com/sunang/p/3421707.html

@ModelAttribute用于綁定控制器接收的實體對象,本文以一個表單提交的例子來演示下這個註釋的用法:

首先,寫一個表單頁面register.ftl,代碼如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<table>
<form name="register" action="register.htm" method="post">
<tr>
<td>姓名</td>
<td><input name="userName" type="text"></input></td>
</tr>
<tr>
<td>年齡</td>
<td><input name="age" type="text"></input></td>
</tr>
<tr>
<td><input type="submit" value="提交"></input></td>
</tr>
</form>
<table>
</body>
</html>

還有一個註冊成功的頁面registerSuccess.ftl:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>註冊成功!用戶名:${userNameGot}&nbsp年齡:${ageGot}</h2>
</body>
</html>

接下來,我們要新建一個VO(value object)文件用來把表單信息綁定到vo對象,在src/main/java目錄下新建包www.asuan.com.vo,在包里新建UserInfo.java,代碼如下:

package www.asuan.www.vo;

public class UserInfo {
private String userName;
private int age; public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}

接下是controller類,代碼如下:

package www.asuan.com.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping; import www.asuan.www.vo.UserInfo; @Controller
@RequestMapping("/learnMVC")
public class LearnMVCController {
//使用該索引跳轉到註冊頁面
@RequestMapping("/goRegisterPage")
public String goRegisterPage() {
return "register.ftl";
}
//使用該索引進行註冊操作并返回註冊成功頁面
@RequestMapping("/register")
public String register(@ModelAttribute(value = "register") UserInfo userInfo, Model model) {
//通過@ModelAttribute,我們把表單信息綁定到了userInfo對象裏面,可以直接使用
String userName = userInfo.getUserName();
int age = userInfo.getAge();
model.addAttribute("userNameGot", userName);
model.addAttribute("ageGot", age);
return "registerSuccess.ftl";
}
}

部署運行工程,在瀏覽器訪問:http://localhost:8080/你的工程名/learnMVC/goRegisterPage.htm 訪問表單填寫頁面并填寫測試信息,運行結果如下:

點擊提交,表單的action配置了要訪問的controller路徑register.htm,所以控制器會執行register()方法,我們把該方法單獨列出分析:

@RequestMapping("/register")
public String register(@ModelAttribute(value = "register") UserInfo userInfo, Model model) {
//通過@ModelAttribute,我們把表單信息綁定到了userInfo對象裏面,可以直接使用
String userName = userInfo.getUserName();
int age = userInfo.getAge();
model.addAttribute("userNameGot", userName);
model.addAttribute("ageGot", age);
return "registerSuccess.ftl";
}

控制器會掃描與@ModelAttribute的value值相同的實體對象,這裡value = "register",而提交的表單的name="register"兩者相同,所以提交的表單信息被綁定到了@ModelAttribute後面聲明的UserInfo對象中。

表單中的各個字段和實體類對象的各個字段會按照字段名一一匹配,比如表單userName匹配UserInfo對象中的userName。在上例中表單的兩個字段被綁定到了userInfo對象的兩個字段中,我們在進行業務處理的時候可以直接使用,通過這種方法我們就得到了表單的信息。

運行結果:

complete!

SpringMVC常用注解實例詳解2:@ModelAttribute的更多相关文章

  1. SpringMVC常用注解實例詳解3:@ResponseBody

    我的開發環境框架:        springmvc+spring+freemarker開發工具: springsource-tool-suite-2.9.0JDK版本: 1.6.0_29tomcat ...

  2. SpringMVC常用注解實例詳解1:@Controller,@RequestMapping,@RequestParam,@PathVariable

    我的開發環境 框架:        springmvc+spring+freemarker 開發工具: springsource-tool-suite-2.9.0 JDK版本: 1.6.0_29 to ...

  3. SpringMVC 常用注解 详解

    SpringMVC 常用注解 详解 SpringMVC 常用注解 1.@RequestMapping                                      路径映射 2.@Requ ...

  4. 转:springmvc常用注解标签详解

    Spring5:@Autowired注解.@Resource注解和@Service注解 - IT·达人 - 博客园--这篇顺序渐进,讲得超级好--此人博客很不错http://www.cnblogs.c ...

  5. springmvc常用注解与类型转换

    springmvc常用注解与类型转换 一:前置 spring -servlet.xml 注入 <!-- 启用spring mvc 注解 --> <context:annotation ...

  6. SpringMVC常用注解@Controller,@Service,@repository,@Component

    SpringMVC常用注解@Controller,@Service,@repository,@Component controller层使用@controller注解 @Controller 用于标记 ...

  7. 一 : springmvc常用注解

    springmvc常用注解详解1.@Controller在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层 ...

  8. Spring 和 SpringMVC 常用注解和配置(@Autowired、@Resource、@Component、@Repository、@Service、@Controller的区别)

    Spring 常用注解 总结内容 一.Spring部分 1.声明bean的注解 2.注入bean的注解 3.java配置类相关注解 4.切面(AOP)相关注解 5.事务注解 6.@Bean的属性支持 ...

  9. SpringMVC常用注解,返回方式,路径匹配形式,验证

    常用注解元素 @Controller 标注在Bean的类定义处 @RequestMapping 真正让Bean具备 Spring MVC Controller 功能的是 @RequestMapping ...

随机推荐

  1. Loadrunner ---集合点设置

    测试场景,实现用户登录的200并发: 1.录制登录退出脚本,且登录退出放aciton中 2.在登录的地方设置集合点 设置集合点有如下4中方式: 1)在要插入集合点的地方,右击鼠标按如下图操作:

  2. Linux secure boot(安全启动)时添加Nvidia显卡驱动

    开启Secure boot情况下,在Fedora 21下安装Nvidia 显卡驱动的方法. Nvidia显卡驱动可以从官网上下载最新版>> 点击进入 下载后添加可执行权限: #chmod ...

  3. CMFCPropertyGridProperty SetValue 出错处理

    对CMFCPropertyGridProperty SetValue时容易报错,这种情况一般是Property和value的类型不匹配造成的. 在创建property的时候,指定了数据类型,如果set ...

  4. 简单的html和css

    整体图太大了,看不太清楚,下面是分开的图 第一张: 第二张:

  5. 四、解决MyEclipse控制台输出中文乱码的问题

    问题描述:       在Java程序中,在MyEclipse开发环境下,通过标准输入输入中文,并把输入的中文信息从标准输出显示出来,这时中文出现乱码情况.解决方法:解决方法需要两个步骤(本文测试环境 ...

  6. ANDROID开发之问题积累及解决方案(一)

    一.activity跳转及传值 当进行activity之间的跳转时我们会遇到这样的问题.首先熟悉下activity之间跳转.Activity跳转与传值,主要是通过Intent类来连接多个Activit ...

  7. MAGENTA: Meta-Analysis Gene-set Enrichment of variaNT Associations

    MAGENTA是一款计算工具,利用全基因组遗传数据,计算预先设定的涉及生物过程或者功能性基因集在遗传相关性的富集程度.开发的目的是分析基因型不是现成的数据集,比如大型的全基因组关联荟萃分析.在以下两种 ...

  8. docker--buildbot安装

    curl -L https://github.com/docker/compose/releases/download/1.8.0/docker-compose-`uname -s`-`uname - ...

  9. HTML5离线篇收藏--- cache manifest

    自从翻译了<解读 HTML5:建议.技巧和技术>,就一直没有时间去看 HTML5 相关的东西.上周一次偶然的工作间隙折腾了下 Cache Manifest .当时直接拿博客当测试环境,虽然 ...

  10. final阶段140字评论1

    1.约跑app         此次演讲增加了摄像头演示的功能,所以界面可以看得更清楚,演示的比上次完整,流畅,约跑这个项目感觉对于我们颇有使用价值,大家现在都热爱跑                 ...