SpringMVC(6) —— RestFul风格


概念

    Restful就是一个资源定位及资源操作的风格,不是标准也不是协议,只是一种风格
    基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制


功能

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

传统方式操作资源 :通过不同的参数来实现不同的效果!方法单一,post 和 get

  • ​ http://127.0.0.1/item/queryItem.action?id=1 查询,GET
  • http://127.0.0.1/item/saveItem.action 新增,POST
  • http://127.0.0.1/item/updateItem.action 更新,POST
  • http://127.0.0.1/item/deleteItem.action?id=1 删除,GET或POST
    在这里插入图片描述

使用RESTful操作资源 :可以通过不同的请求方式来实现不同的效果!如下:请求地址一样,但是功能可以不同!

  • http://127.0.0.1/item/1 查询,GET
  • http://127.0.0.1/item 新增,POST
  • http://127.0.0.1/item 更新,PUT
  • http://127.0.0.1/item/1 删除,DELETE
    在这里插入图片描述

代码实现1 —— 实现"/"传递参数

  • 创建一个新的controller程序
    package com.thhh.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    @Controller
    @RequestMapping("restful")
    public class RestFulController {
        @RequestMapping("t01")
        public String test01(int a,int b,Model model){
            model.addAttribute("msg","原始的URL风格");
            return "hello";
        }
        @RequestMapping("t02/{a}/{b}")
        public String test02(@PathVariable int a, @PathVariable int b, Model model){
            model.addAttribute("msg","RestFul的URL风格");
            return "hello";
        }
    
    }
    

在这里插入图片描述
在这里插入图片描述

  • 测试
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

上面的操作已经实现了"/"传递参数,但是并没有实现一开始我们说的,相同的URL执行的是不同的 方法/操作


代码实现2 —— 实现URL复用

    在代码实现1中我们使用 @RequestMapping(“t02/{b}/{a}”) + test02(@PathVariable int a, @PathVariable int b, Model model) 的方式实现了"/"传递参数
    代码实现2旨在实现URL的复用效果
    用法

1.使用@RequestMapping实现

在这里插入图片描述
在这里插入图片描述

  • 测试
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
        通过上面的方式我们就可以实现URL复用的效果了,但是上面这么写还是有点麻烦,所以springMVC中提供了几个注解的变体

2.使用@RequestMapping注解变体实现

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping

    即我们在使用的时候直接使用上面的注解变体,可以实现默认指定请求方法的作用,我们只需要编写URL和URL中的参数即可实现restful风格的URL请求

  • 测试
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    新建一个jsp页面,指定表单使用post方式提交
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <form action="restful/t02/3/4" method="post">
        <input type="submit">
    </form>
    </body>
    </html>
    
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

代码解析

在这里插入图片描述
【补充上图】并且参数值的获取是按照变量名称对应传递的,和顺序无关
在这里插入图片描述
在这里插入图片描述


小结

使用RestFul风格的好处

  • 使路径变得更加简洁,所有的变量通过"/"分割【简洁】

  • 获得参数更加方便,框架会自动进行类型转换,即按照变量名称一一对应转型和赋值【高效】

  • 通过路径变量的类型可以约束访问参数,如果类型不一样,则访问不到对应的请求方法
    在这里插入图片描述
    在这里插入图片描述

  • URL中不会暴露程序中使用的变量【安全】


调试

小黄鸭调试法

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值