ServletAPI
- 原生ServletApi
@RequestMapping(value ="/testServlet")
public String testServlet(HttpServletRequest request,HttpServletResponse resp) {
System.out.print("request"+request+"resp"+resp);
return "success";
}
MVC 的 Handler 方法可以接受
哪些 ServletAPI 类型的参数
• HttpServletRequest
• HttpServletResponse
• HttpSession
• java.security.Principal
• Locale
• InputStream
• OutputStream
• Reader
• Writer
处理模型数据
– ModelAndView 处理方法返回值类型为 ModelAndView
时, 方法体即可通过该对象添加模型数据
– Map 及 Model: 入参为
org.springframework.ui.Model、org.springframework.ui.
ModelMap 或 java.uti.Map 时,处理方法返回时,Map
中的数据会自动添加到模型中。
– @SessionAttributes: 将模型中的某个属性暂存到
HttpSession 中,以便多个请求之间可以共享这个属性
– @ModelAttribute: 方法入参标注该注解后, 入参的对象
就会放到数据模型中
- ModelAndView
//处理模型数据ModelAndView
@RequestMapping(value = "/testModelAndView")
public ModelAndView testmodelAndView() {
String viewName = "success";
ModelAndView modelAndView = new ModelAndView(viewName);
modelAndView.addObject("time",new Date());
return modelAndView;
}
//返回success页面
time: ${requestScope.time }
- Map 及 Model
//处理模型数据Map
@RequestMapping("/testMap")
public String testMap(Map<String,Object> map) {
map.put("names", Arrays.asList("Tom", "Jerry", "Mike"));
return "success";
}
//返回success页面
names: ${requestScope.names }
3.@SessionAttributes
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes(Map<String, Object> map){
User user = new User("Tom", "123456", "tom@atguigu.com", 15);
map.put("user", user);
map.put("school", "atguigu");
return SUCCESS;
}
//处理模型数据ModelAttribute
@RequestMapping("/testModelAttribute")
public String testModelAttribute(User user){
System.out.println("修改: " + user);
return “success”;
}
- @ModelAttribute
/**
* 1. 有 @ModelAttribute 标记的方法, 会在每个目标方法执行之前被 SpringMVC 调用!
* 2. @ModelAttribute 注解也可以来修饰目标方法 POJO 类型的入参, 其 value 属性值有如下的作用:
* 1). SpringMVC 会使用 value 属性值在 implicitModel 中查找对应的对象, 若存在则会直接传入到目标方法的入参中.
* 2). SpringMVC 会一 value 为 key, POJO 类型的对象为 value, 存入到 request 中.
*/
//处理模型数据ModelAttribute
@RequestMapping("/testModelAttribute")
public String testModelAttribute(User user){
System.out.println("修改: " + user);
return "success";
}
@ModelAttribute
public void getUser(@RequestParam(value="id",required=false) Integer id,
Map<String, Object> map){
System.out.println("modelAttribute method");
if(id != null){
//模拟从数据库中获取对象
User user = new User(1, "Tom", "123456", "tom@yyt.com", 12);
System.out.println("从数据库中获取一个对象: " + user);
map.put("user", user);
}
}
jsp
<form action="springmvc/testModelAttribute" method="Post">
<input type="hidden" name="id" value="1"/>
username: <input type="text" name="username" value="Tom"/>
<br>
email: <input type="text" name="email" value="tom@yyt.com"/>
<br>
age: <input type="text" name="age" value="12"/>
<br>
<input type="submit" value="Submit"/>
</form>
输出结果
modelAttribute method
从数据库中获取一个对象: User [id=1, username=Tom, password=123456, email=tom@yyt.com, age=12]
修改: User [id=1, username=Tom, password=123456, email=tom@yyt.com, age=13]