SpringMVC请求


文章目录

  • SpringMVC请求
  • 一、RequestMapping注解
  • 1、RequestMapping的属性
  • 2、RequestMapping的请求参数绑定
  • 二、RequestParam注解
  • 三、RequestBody注解
  • 四、RestFul风格
  • 1、@PathVariable注解
  • 2、使用method属性指定请求类型


一、RequestMapping注解

RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系

RequestMapping注解可以作用在方法和类上

  1. 作用在类上:第一级的访问目录
  2. 作用在方法上:第二级的访问目录
  3. 细节:路径可以不编写 / 表示应用的根目录开始

1、RequestMapping的属性

  1. path 指定请求路径的url
  2. value value属性和path属性是一样的
  3. mthod 指定该方法的请求方式
@Controller
@RequestMapping(path = "/role") // 一级请求路径
public class RoleController {
    /**
     * /role/save
     * method="当前方法允许请求方式能访问"
     * params="请求路径上传参数"
     * @return
     */
   @RequestMapping(path = "/save",method = {RequestMethod.GET})
    public String save(){
        System.out.println("保存角色...");
        return "suc";
    }

    @RequestMapping(value = "/delete")
    public String delete(){
        System.out.println("删除角色...");
        return "suc";
    }
}

2、RequestMapping的请求参数绑定

(1). 绑定机制

  1. 表单提交的数据都是k=v格式的 username=haha&password=123
  2. SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的
  3. 要求:提交表单的name和参数的名称是相同的

(2). 支持的数据类型

  1. 基本数据类型和字符串类型
  2. 实体类型(JavaBean)
  3. 集合数据类型(List、map集合等)

基本数据类型和字符串类型

  1. 提交表单的name和参数的名称是相同的
  2. 区分大小写

实体类型(JavaBean)

  1. 提交表单的name和JavaBean中的属性名称需要一致
  2. 如果一个JavaBean类中包含其他的引用类型,那么表单的name属性需要编写成:对象.属性 例如:address.name
  3. 给集合属性数据封装
  4. JSP页面编写方式:list[0].属性

二、RequestParam注解

  1. 作用:把请求中的指定名称的参数传递给控制器中的形参赋值
  2. 属性
    value:请求参数中的名称
    required:请求参数中是否必须提供此参数,默认值是true,必须提供
  3. 代码如下
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping("/dept")
public class DeptController {
    @RequestMapping("/save")
    public String save(@RequestParam(value = "username",required = false) String name){
        System.out.println(name);
        return "suc";
    }
}

三、RequestBody注解

  1. 作用:用于获取请求体的内容(注意:get方法不可以):将前端的json对象转换成javabean实体对象
  2. 属性
    required:是否必须有请求体,默认值是true
  3. 代码如下
@RequestMapping("/save2")
    public String save2(@RequestBody Student student){
        System.out.println(body);
        return "suc";
    }

四、RestFul风格

1、@PathVariable注解

url:

http://localhost:8080/SpringMVC/rest/commit.do/1/1

controller接收:用占位符的形式截取

//映射访问路径
@RequestMapping("/commit.do/{p1}/{p2}")
public String index(@PathVariable int p1, @PathVariable String p2, Model model){
    String result = p1+p2;
    //Spring MVC会自动实例化一个Model对象用于向视图中传值
    model.addAttribute("msg", "结果:"+result);
    //返回视图位置
    return "suc";
}

2、使用method属性指定请求类型

用于约束请求的类型,可以收窄请求范围。指定请求谓词的类型如GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE等