SpringMVC 请求对象+接收参数+请求作用域

SpringMVC 请求对象+接收参数+请求作用域

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

使用方式

  1. 在控制器中创建请求作用域
    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;
    }
  2. 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");
    }