SpringMVC-02

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: 方法入参标注该注解后, 入参的对象
就会放到数据模型中

  1. 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 }
  1. 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”;
}

  1. @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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值