作用:
在方法上,表示当前方法付会在控制器执行前执行,有无返回值的方法都可以修饰
在参数上,获取指定的数据给参数赋值
属性:
value:用于获取数据的key,key可以是实体类的属性名称,也可以是map结构的key
应用场景:
当表单提交的数据不是完整的实体类的数据时,保证没有提交数据的字段使用数据库对象原来的数据
先写一个model控制类
package com.lwh.controller;
import com.lwh.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Map;
@Controller
public class ModelContoller {
@RequestMapping("/user/model")
public String test1(){
System.out.println("test1----");
return "success";
}
@ModelAttribute
public void modelTest(){
System.out.println("model执行了-----");
}
@ModelAttribute
public void showUser(String uname, Map<String, User> map){
System.out.println("showUser执行了");
User user =new User(11,"jj",12);
map.put("ccc",user);
}
@RequestMapping("/user/testModel")
public String testModel(@ModelAttribute("ccc") User user){
System.out.println(user);
return "success";
}
}
再写一个jsp调用
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>springMVc入门测试</h2>
<h3><a href="/user/hello">hello</a></h3>
<a href="testRequestParams?name=haha">点击</a>
<a href="/user/model" >model方法上</a>
<a href="/user/testModel">testModel属性上</a>
</body>
</html>