SSM框架学习-REST内容、案例及快速开发

news2025/1/24 14:44:39

1. REST简介

在这里插入图片描述

当访问行为不同时(例如insert、delete等等),REST风格描述形式的路径是相同的,那如何区分?

在这里插入图片描述

所以,通过路径+请求方式,我们就可以区分对资源进行了何种操作;
而REST风格对资源进行访问成为RESTful

2. RESTful入门案例

  1. 设定HTTP请求动作(GET、POST等等)
  2. 假设有参数,要设定请求参数(路径变量),在路径中设置占位符,写形参,并且要用@PathVariable注释标注,绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应

以下是上述五种查询方式的示例代码,了解看懂即可,在快速开发中有简化版本

    //设置当前请求方法为GET,表示REST风格中的查询操作
    @RequestMapping(value = "/users",method = RequestMethod.GET)
    @ResponseBody
    public String getAll(){
        System.out.println("user getAll...");
        return "{'module':'user getAll'}";
    }
    //设置当前请求方法为GET,表示REST风格中的查询操作
    //@PathVariable注解用于设置路径变量(路径参数),要求路径上设置对应的占位符,并且占位符名称与方法形参名称相同
    @RequestMapping(value = "/users/{id}" ,method = RequestMethod.GET)
    @ResponseBody
    public String getById(@PathVariable Integer id){
        System.out.println("user getById..."+id);
        return "{'module':'user getById'}";
    }
    //设置当前请求方法为POST,表示REST风格中的添加操作
    @RequestMapping(value = "/users",method = RequestMethod.POST)
    @ResponseBody
    public String save(){
        System.out.println("user save...");
        return "{'module':'user save'}";
    }
    //设置当前请求方法为PUT,表示REST风格中的修改操作
    @RequestMapping(value = "/users",method = RequestMethod.PUT)
    @ResponseBody
    public String update(@RequestBody User user){
        System.out.println("user update..."+user);
        return "{'module':'user update'}";
    }
    //设置当前请求方法为DELETE,表示REST风格中的删除操作
    //@PathVariable注解用于设置路径变量(路径参数),要求路径上设置对应的占位符,并且占位符名称与方法形参名称相同
    @RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
    @ResponseBody
    public String delete(@PathVariable Integer id){
        System.out.println("user delete..." + id);
        return "{'module':'user delete'}";
    }

在这里插入图片描述

3. REST快速开发

快速开发的简化版本

//@Controller
//@ResponseBody配置在类上可以简化配置,表示设置当前每个方法的返回值都作为响应体
//@ResponseBody
@RestController     //使用@RestController注解替换@Controller与@ResponseBody注解,简化书写
@RequestMapping("/books")
public class BookController {

//    @RequestMapping( method = RequestMethod.POST)
    @PostMapping        //使用@PostMapping简化Post请求方法对应的映射配置
    public String save(@RequestBody Book book){
        System.out.println("book save..." + book);
        return "{'module':'book save'}";
    }

//    @RequestMapping(value = "/{id}" ,method = RequestMethod.DELETE)
    @DeleteMapping("/{id}")     //使用@DeleteMapping简化DELETE请求方法对应的映射配置
    public String delete(@PathVariable Integer id){
        System.out.println("book delete..." + id);
        return "{'module':'book delete'}";
    }

//    @RequestMapping(method = RequestMethod.PUT)
    @PutMapping         //使用@PutMapping简化Put请求方法对应的映射配置
    public String update(@RequestBody Book book){
        System.out.println("book update..."+book);
        return "{'module':'book update'}";
    }

//    @RequestMapping(value = "/{id}" ,method = RequestMethod.GET)
    @GetMapping("/{id}")    //使用@GetMapping简化GET请求方法对应的映射配置
    public String getById(@PathVariable Integer id){
        System.out.println("book getById..."+id);
        return "{'module':'book getById'}";
    }

//    @RequestMapping(method = RequestMethod.GET)
    @GetMapping             //使用@GetMapping简化GET请求方法对应的映射配置
    public String getAll(){
        System.out.println("book getAll...");
        return "{'module':'book getAll'}";
    }
}

4. 案例:基于RESTful页面数据交互

问题一:启动服务器时,访问http://localhost/pages/books.html出现404

这是因为被SpringMVC拦截了,SpringMVC认为这个URL是一个配置;
ServletContainersInitConfig中做了处理进行了拦截操作;
在这里插入图片描述

所以这些静态资源交给Tomcat处理,不给SpringMVC处理,所以创建另一个配置类SpringMVCSupport
最后在配置类的包扫描中加入该路径,@ComponentScan注释自动扫描指定的包以查找bean定义,并将其注册到IoC容器中供应用程序使用。

@Configuration
public class SpringMvcSupport extends WebMvcConfigurationSupport {
    //设置静态资源访问过滤,当前类需要设置为配置类,并被扫描加载
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        //当访问/pages/????时候,从/pages目录下查找内容
        registry.addResourceHandler("/pages/**").addResourceLocations("/pages/");
        registry.addResourceHandler("/js/**").addResourceLocations("/js/");
        registry.addResourceHandler("/css/**").addResourceLocations("/css/");
        registry.addResourceHandler("/plugins/**").addResourceLocations("/plugins/");
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/572830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[PyTorch][chapter 35][经典卷积神经网络-1 ]

前言: ILSVRC(ImageNet Large Scale Visual Recognition Challenge)是近年来机器视觉领域最受追捧也是最具权威的学术竞赛之一,代表了图像领域的最高水平。 ImageNet数据集是ILSVRC竞赛使用的是数据集,由斯坦福大学李…

太强啦!!!ChatGPT 能上传文件了,能执行 Python 代码啦!

ChatGPT又出试验型新模式,不少网友陆续收到代码解释器Alpha测试资格。 ​ 简单来说,这个模式提供两个功能:执行Python代码,接受文件上传下载。 为什么是这两个功能的组合? 可以看目前最火的一条测试结果&#xff0c…

MySQL——锁:概述、全局锁、表级锁、表锁(读锁、写锁)、元数据锁、意向锁、行级锁、行锁、间隙锁临键锁

5.锁 5.1 概述 ​ **锁是计算机协调多个进程或线程并发访问某一资源的机制。**在数据库中,除传统的计算资源(CPU、 RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必…

Linux---用户切换命令(su命令、sudo命令、exit命令)

1. su命令 root用户拥有最大的系统操作权限,而普通用户在许多地方的权限是受限的。 普通用户的权限,一般在其HOME目录内是不受限的。 一旦出了HOME目录,大多数地方,普通用户仅有只读和执行权限,无修改权限。 su 是…

chatgpt国内镜像有什么优势?Gpt有什么强大的功能

chatgpt国内镜像有什么优势?其实这个是很多人都想知道的问题,小编觉得有必要给大家说一下,毕竟这个东西有优点也有缺点,下面我们一起来看看吧。 一.chatgpt国内镜像的优势 1.网络延迟更低 使用国内的ChatGPT镜像,可…

多目标遗传算法NSGA-II改进策略

上篇写道了关于多目标遗传算法NSGA-II原理详解及算法代码实现,本文将继续在这篇文章的基础上更深一步的向前探索,探索方向为: 基于NSGA-II算法的固有缺点,着重对其算法提出改进策略,并予以代码实现。同样,本…

医药公司药品品种分析

分析一家医药公司药品管线品种首先要罗列出该制药企业的上市品种及在研品种,然后再逐一分析之。 一般医药公司药品管线品种分析需要从多个角度进行解析,如:市场规模,市场占有率、政策法规、基药目录、国家/省市医保目录、新农合目…

【智慧排水】智慧排水监测系统助力城市抗洪排涝建设

随着城市的发展和生活水平的提高,城市排水系统面临着各种挑战和难题。虽然国家已经大力建设和改造雨污分流系统,以解决城市排水问题,但在实际应用中仍然存在着诸多难题,如雨污混接、偷排漏排、管道堵塞淤积、管道溢流和内涝等问题…

一文看懂GPT风口,都有哪些创业机会?

新时代的淘金者,低附加价值的创业要谨慎,高附加价值、低技术门槛创业也要谨慎,主干道边上的创业也要谨慎。不少朋友看完不淡定了,干什么都谨慎,回家躺平好了,我有个朋友,靠ChatGPT,半…

功率信号源的使用方法有哪些

功率信号源是一种常见的电子设备,主要用于产生各种功率信号,例如直流信号、正弦信号等。功率信号源广泛应用于工业、科研、医疗等领域,例如电机驱动、电子仪器仪表、医疗设备等。本文将详细介绍功率信号源的使用方法和注意事项。 图&#xff…

【Java基础篇】逻辑控制

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏:Java.SE,本专栏主要讲解运算符,程序逻辑控制,方法的使用&…

springcloud-alibaba (04)GatewayFilter 自定义全局过滤器-认证和授权

GatewayFilter 自定义全局过滤器 内置的过滤器已经可以完成大部分的功能,但是对于企业开发的一些业务功能处理,还是需要我们自己编写过滤器来实现的,那么我们一起通过代码的形式自定义一个过滤器,去完成统一的权限校验。 开发中的…

这 30 多种免费和开源的 Kubernetes 监控工具,性能和可靠性尽在掌控之中!

Kubernetes 是当今最受欢迎和广泛使用的容器编排和管理平台之一。它提供了高度可扩展的架构,使得在分布式环境中部署、管理和扩展应用程序变得更加容易。然而,随着应用程序数量和规模的增长,对于有效监控和管理 Kubernetes 环境变得至关重要。…

Cenots7安装Docker centos安装Docker centos7安装Docker

Cenots7安装Docker centos安装Docker centos7安装Docker 在CentOS 7上安装Docker,可以按照以下步骤进行操作:1、(可选)更新系统软件包2、安装Docker依赖3、添加Docker稳定版仓库4、安装Docker5、启动Docker服务6、设置Docker开机自启7、验证Docker安装是…

UDP 的报文结构和注意事项知识点总结

目录 1. UDP报文结构(★) 2. 注意事项(★) 1. UDP报文结构(★) 一个UDP数据报由UDP报头和UDP正文部分组成,如图: 1) 源端口标识的是数据发送方的主机上某个程序,目的端口标识的是数据接收方的主机上某个程序,比如我在宿舍要去二食堂吃炸酱面(在食堂第八个窗口).我的宿舍在11栋…

LeetCode算法心得——字典序最小回文串

大家好,我是晴天学长,这是一道常见的回文串的判断的变形题!💪💪💪 1 )字典序最小回文串 2) .算法思路 双指针判断一次,做一次修改是回文串,直接输出 3).代码…

案例22:基于Springboot+vue的患者交流系统设计与实现开题报告

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

【分布式篇】什么是CAP定理?

要求 理解 CAP 定理 知道常见的一致性级别 CAP 定理 Consistency 一致性:访问分布式系统中任意节点,总能返回一致的结果 Every read receives the most recent write or an error Availability 可用性:分布式系统总能向客户端返回响应 Ev…

IoT Studio快速搭建前端

打开阿里云平台 阿里云-计算,为了无法计算的价值 (aliyun.com) 打开物联网平台 然后点击右边的控制台打开物联网平台物联网平台 (aliyun.com) 创建项目和关联产品 备注一个项目可能包括多个产品 开启空调设备模拟调试(通过代码书写实现效果&#xff0…

白帽黑客最常用的十款工具,你知道几款?

1 Nmap nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络…