• SpringMVC


    RestFul风格

    ResFul?

    • 一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制

    URL定义

    • 资源:互联网所有的事物都可以被抽象为资源
    • 资源操作:使用POST(添加)、DELETE(删除)、PUT(修改)、GET(查询),使用不同方法对资源进行操作。

    @PathVariable

    • 该注解用来映射请求URL中绑定的占位符。通过@PathVariable可以将URL中占位符的参数绑定到controller处理方法的参数中
    • 请求http://localhost:8081/springmvc_2/test1/张三/123456
    @Controller
    public class MyController {
        @RequestMapping("test1/{n}/{p}")
        public String test1(@PathVariable("n") String name,@PathVariable("p") String pwd){
            System.out.println(name);
            System.out.println(pwd);
            return null;
        }
    }
    

    image-20210303224947658

    • @RequestParam与@PathVariable的异同:

    • 相同点:都是用来获取请求参数的;

    • 不同点:

      • @PathVariable主要用于接收http://host:port/path/{参数值}数据
      • @RequestParam主要用于接收http://host:port/path?参数名=参数值数据

    RestFul风格代码

    • 用于接收不同请求的方法
      • value :就是访问路径
      • method :访问请求方式
    @RequestMapping(value = "test2/{n}/{p}",method = RequestMethod.POST)
    public String test2(@PathVariable("n") String name,@PathVariable("p") String pwd){
        System.out.println(name);
        System.out.println(pwd);
        return null;
    }
    @RequestMapping(value = "test2",method = RequestMethod.GET)
    public String test3(){
        System.out.println("==========");
        return null;
    }
    @RequestMapping(value = "test2/{id}",method = RequestMethod.PUT)
    public String test4(@PathVariable("id") Integer id){
        System.out.println(id);
        return null;
    }
    @RequestMapping(value = "test2",method = RequestMethod.DELETE)
    public String test5(@RequestParam("id") Integer id){
        System.out.println(id);
        return null;
    }
    
    • 发送请求
    <form action="test2/张三/123" method="post">
        <input type="submit" value="POST请求"/>
    </form>
    <br/><br/>
    <form action="test2" method="get">
        <input type="submit" value="GET请求"/>
    </form>
    <br><br>
    <form action="test2/110" method="post">
        <input type="hidden" name="_method" value="PUT"/>
        <input type="submit" value="PUT请求">
    </form>
    <br/><br/>
    <form action="test2?id=120" method="post">
        <input type="hidden" name="_method" value="DELETE"/>
        <input type="submit" value="DELETE请求">
    </form>
    

    put和delete请求需要借助post请求来发送,并且在hidden类型的input中要带上一个令牌_method=请求方式

    • 在上面两步操作之后,还有一个极为重要的东西,需要在web.xml中配置一个过滤器,将post转化为PUT或者DELETE请求
    <!-- 配置HiddenHttpMethodFilter:可以把POST请求转为DELETE或POST请求 -->
    <filter>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    

    如何区分两个相同访问路径的请求

    • 只要参数不同就可以了,使用params来区分参数
    <form action="test2" method="get">
        <input type="submit" value="GET请求"/>
    </form>
    <br><br>
    <a href="test2?id=3">GET</a>
    
    @RequestMapping(value = "test2",method = RequestMethod.GET)
    public String test3(){
        System.out.println("==========");
        return null;
    }
    @RequestMapping(value = "test2",method = RequestMethod.GET,params = "id")
    public String test6(Integer id){
        System.out.println("查询2  id="+id);
        return null;
    }
    

    不经风雨,怎见彩虹?
  • 相关阅读:
    LG4377 「USACO2018OPEN」Talent Show 分数规划+背包
    LG4111/LOJ2122 「HEOI2015」小Z的房间 矩阵树定理
    LG5104 红包发红包 概率与期望
    LG2375/LOJ2246 「NOI2014」动物园 KMP改造
    LG4824 「USACO2015FEB」(Silver)Censoring KMP+栈
    20191004 「HZOJ NOIP2019 Round #9」20191004模拟
    LG5357 「模板」AC自动机(二次加强版) AC自动机+fail树
    LG3812 「模板」线性基 线性基
    数据结构
    git
  • 原文地址:https://www.cnblogs.com/MLYR/p/14487044.html
Copyright © 2020-2023  润新知