业务场景:
一张表结构为:用户id,姓名,年龄。用户提交表单修改数据时候只是修改姓名的时候,后台要先从数据库获取原始数据到实体,然后修改用户名,最后保存数据库。
原始数据 [uid=123, uname=说易事, age=25]
修改数据库的数据 [uid=123, uname=ZhangSan, age=25]
代码片段:
提交的表单:
Markup
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<h2>Hello World !</h2>
<form action="home/update">
uid:<input type="text" name="uid" value="123"/>
<br/>
uname:<input type="text" name="uname" value="ZhangSan"/>
<br/>
<input type="submit" value="修改">
</form>
<br/>
</body>
</html>
控制器:
Java
package com.shuoeasy.springmvc;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@RequestMapping("/home")
@Controller
public class Home {
/**
* 第一步:先获取数据库的数据(这里不是直接给页面请求的,提供给springmvc使用而已)
* 被@ModelAttribute注释的方法会在此controller每个方法执行前被执行
* @param uid
* @param map
*/
@ModelAttribute
private void getUser(@RequestParam(value="uid",required=false) Integer uid,
Map<String,Object> map){
if(uid != null){
// 模拟从数据库获取数据
User u = new User();
u.setUid(123);
u.setUname("说易事");
u.setAge(25);
map.put("user", u);
System.out.println("数据库数据 User=" + u);
}
}
/**
* 第二步:修改用户信息,真正请求的地址
* 路径 : home/update
*/
@RequestMapping("/update")
public String showPage(User user){
System.out.println("整理后数据 User=" + user);
// 写入数据库代码略
return "home_index";
}
}
控制台输出啊:
数据库数据 User=User [uid=123, uname=说易事, age=25] 整理后数据 User=User [uid=123, uname=ZhangSan, age=25]