HttpServletRequest 请求对象
请求对象中有客户端请求的所有信息
@RequestParam 接收参数
可以不写,有SpringMVC有默认
将请求数据直接绑定到参数上,默认参数名与请求中的 name 保持一致即可映射,则使用 @RequestParam 注解来绑定参数名
当有多个同名的参数时,可以使用数组接收(不能使用List集合接收)
实体类是根据表单的数据转换而来的
@GetMapping("/请求")
public ModelAndView add(HttpServletRequest request, HttpServletResponse response, User user){
// 方法体
}
路径参数绑定
请求格式:/url地址/{变量},并且使用@ParthVariable注解来映射
@GetMapping("/user/{id}")
public ModelAndView getUser(@PathVariable("id") String uid) {
ModelAndView mav = new ModelAndView("index");
mav.addObject("uid", uid);
return mav;
}
注册自定义转换器
@InitBinder 注解标注的方法会在执行如何 controller 的方法之前先执行,SpringMVC 会传入一个 WebBinder 的参数,使用这个参数可以注册任意的 Formatter,@param binder 数据绑定器,用于注册各种格式化类
@InitBinder
public void regFormatter(WebDataBinder binder){
binder.addCustomFormatter(new DateFormatter("yyyy-mm-dd"));
}
WEB-INF:是存放服务器保护文件的地方,不能直接访问,需要转发内部访问
请求作用域
请求作用域不是Spring MVC特有的,而是Web应用程序开发中通用的概念。请求作用域是HTTP协议和Web应用的核心概念之一,而Spring MVC只是一种在Java中处理Web请求的框架。Spring MVC在处理请求时遵循了HTTP请求-响应模型,并使用了请求作用域,这使得开发者可以更轻松地管理请求和响应的数据。
支持的数据类型有:
Map、Model、ModelMap
使用方式
- 在控制器中创建请求作用域
public ModelAndView test() { ModelAndView mav = new ModelAndView("index"); // 设置请求作用域 mav.addObject("name", "wangl"); // 也可以将向数据保存在一个 map 集合中,再设置到 ModAndView 中 Map<String, Object> map = new HashMap<>(); map.put("name", "wangl"); // 再将 map 设置到 ModAndView 中 mav.addAllObjects(map); return mav; }
- SpringMVC 可以传入支持的数据类型来保存用户需要转发的数据,这些数据一样会保存到请求作用域中
public ModelAndView test2(Map<String, Object> map, Model model, ModelMap modelMap) { map.put("name", "wangl"); map.put("age", 21); model.addAttribute("age", 21); modelMap.put("age", 21); return new ModelAndView("index"); }