springMVC RestFul接口设计模式详解,包括前后端设计详解。@GetMapping、@PostMapping、@PutMapping@DeleteMapping@PathVariable

目录

    • 1、 什么是RestFul接口设计模式
    • 2、使用该接口设计模式后端还需要配置什么
    • 3、使用该接口设计模式前端需要注意什么
    • 4、Controller具体实现方式

1、 什么是RestFul接口设计模式

RestFul这是一种springmvc接口的设计模式,用来区别不同类型的请求,来匹配控制器处理映射。
例如请求URL为 /test /那么中根据Get、put、post等请求方式,就可以具体映射到对应的控制器方法。

2、使用该接口设计模式后端还需要配置什么

后端使用RestFul设计风格,除了一些必备的MVC配置,还需要使用一个过滤器,叫HiddenHttpMethodResolver,配置上之后,前台传入的带有特殊标识的请求,才会被识别并将请求方式成功设置为对应的Method。
··原因参见下面前端设计注意点。

<!--配置请求方式过滤器-->
    <filter>
        <filter-name>hiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>hiddenHttpMethodFilter</filter-name>
<!--      浏览器解析的  /*  就是拦截所有的请求-->

        /*
    

3、使用该接口设计模式前端需要注意什么

在前端设计中,一般使用jsp,或者HTML。用表单来提交请求。
···但是我们发现,表单默认提交方式有两种method={GET,POST},不指定默认为get。如果指定为其他的例如 PUT、DELETE、等请求方式,向后台发送请求发现method会被默认设置为get。

····至此,我们就需要在后台设置HiddenHTTPMethodFilter过滤器来帮我们处理这件事。
···而前端需要做的就是在提交表单中设置一个隐藏的行,提交内容包括三个参数:

··name=“_method” 这一个参数是固定的,参数值也必须是 _method;
``value=“实际的请求方式” PUT/Delete/…
···type=“hidden”------》这个是用来隐藏当前行,因为没必要让用户看到这一步操作
设置这三个
用例如下面代码第二行所示

<form action="/test1">
    <input type="hidden" name="_method" value="DELETE">
    用户名:<input type="text" name="username">
    <input type="submit" value="提交">
</form>

除了GET和POST,其他的请求方式都需要通过这样提交。

4、Controller具体实现方式

基于RestFul模式,springmvc提供了一些注解来辨识方法的请求方式,而不是再在@RequestMapping中指定请求方式。
springMVC RestFul接口设计模式详解,包括前后端设计详解。@GetMapping、@PostMapping、@PutMapping@DeleteMapping@PathVariable_第1张图片
使用这些注解就可以代替@RequestMapping注解,并且直接显式的指定了请求匹配的请求方式。参数只需要写URL即可。

下面是四种常见的控制器方法
如果对内部其他注解不清楚,以及注解对应参数的意思不理解,可以移步到我的MVC常见注解详解中学习哦~

springmvc常见注解详解

//使用了Rest方式写URL,即不使用?作为占位符,直接在  /  后   以 { } 添加参数即可。
//不过这种方式要对形参进行绑定就需要使用到@PathVariable注解。其次指定请求方式
    @RequestMapping(value = "/test1/{username}",method ={RequestMethod.DELETE} )
    public String test8( @PathVariable(value = "username") String name){
        return "success";
    }

//这是使用了上面说的便捷注解,不需要再指定method属性了。
    @DeleteMapping (value = "/test1/{username}")
    public String test9( @PathVariable(value = "username") String name){
        return "success";
    }
//这种方式就是原来的方式,将请求参数的绑定直接放在了形参上,使用@RequestParam注解进行绑定入参。不理解可以上上面的CSDN学习。
    @RequestMapping(value = "/test8",method ={RequestMethod.DELETE} )
    public String test11( @RequestParam(value = "username") String name){
        return "success";
    }
    //这里没有使用@RequestParam注解的原因就是传入参数名和形参名一致,就可以自动入参。
    @RequestMapping(value = "/test8",method ={RequestMethod.DELETE} )
    public String test12(String username){
        return "success";
    }

注:本文章适合有一定基础的同学学习。不理解可以看我的其他文章来快速了解springmvc的快速搭建,配置文件配置,常见注解学习等。

你可能感兴趣的:(springmvc,restful,设计模式,java)