【springMVC框架 学习】Restful风格 详解
2021-01-16 04:18
标签:let inf pack 知识点 不同的 展示 访问 chm 不同方法 Restful就是一个资源定位及资源操作的风格 现在,本人对上文中的两个名词做下解释: RestFul 风格 与 普通风格 的区别: 在@RequestMapping注解中,增加如下参数: 在被该注解标识的方法中,就可以通过@PathVariable注解来注入相应的参数: 例如: 那么,当我们访问如下路径 localhost:8080/query/youzg/666 时, 因此,浏览器就会显示如下界面: 例如: 注意: 在上文中,本人说了 RestFul 风格 可以处理不同的资源操作 请求 这就是因为网页的制作者可能使用了 @RequestMapping注解 的 method属性 首先,本人来展示下 @RequestMapping注解 的源码: 那么,本人再来展示下RequestMethod枚举 的部分源码: 例如: (注意: 通过 @RequestMapping注解 中的 method属性 来指定目标请求方式 springMVC框架为了简化我们的操作, 本人就拿 @DeleteMapping注解 作为例子,来讲解这6个注解: @DeleteMapping注解 == @RequestMapping(method = RequestMethod.DELETE) 下面,本人来展示下部分源码: @RequestMapping还存在一个url风格的问题 不过这种风格使用较少,所以本人在此处不进行过多的解释! 【springMVC框架 学习】Restful风格 详解 标签:let inf pack 知识点 不同的 展示 访问 chm 不同方法 原文地址:https://www.cnblogs.com/codderYouzg/p/12928180.html基本知识点:
概念:
不是标准也不是协议,只是一种风格
基于这个风格 设计的软件可以更简洁,更有层次,更易于实现缓存等机制名词解释:
互联网所有的事物都可以被抽象为资源
使用 POST、DELETE、PUT、GET,等不同方法对资源进行操作
(分别对应数据的 添加、 删除、修改、查询)区别:
localhost:8080/hello/name=youzg&comment=666
localhost:8080/hello/youzg/666语法:
使用@RequestMapping注解:
@RequestMapping("/访问的路径名/{参数名1}/{参数名2}")
通过@PathVariable注解来注入相应的参数:
直接使用@PathVariable注解标记该参数即可package edu.youzg.about_spring_mvc.controllor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @Author: Youzg
* @CreateTime: 2020-05-13 10:41
* @Description: 带你深究Java的本质!
*/
@Controller
public class RestfulController {
@RequestMapping("/query/{name}/{age}")
public String query(@PathVariable String name, @PathVariable int age, Model model) {
String res = name + ":" + age;
model.addAttribute("inf", res);
return "info";
}
}
youzg和666将作为上面的方法中的name和age参数传入并执行该方法
2. 若参数名称 与 请求参数 不同名,
使用@PathVariable注解的value属性来指定要进行注入的请求参数@RequestMapping("/hello/{uid}")
public String hello(@PathVariable("uid") Integer id){
System.out.println("hello springMVC"+id);
return "index";
}
@PathVariable指定的请求参数,
必须在@RequestMapping中的value属性中存在
否则无法获取!
(POST、DELETE、PUT、GET等)
那么,在特定的情况下,可能会出现这样的情况:
同样是访问了一个网址(譬如:),
但是,回显的页面却是不一样的
来为某方法指定要处理的请求类型:指定 请求类型:
法一 —— 使用@RequestMapping注解 的 method属性:
能够看到:method属性的类型为 RequestMethod枚举
可以看到,RequestMethod枚举一共提供了8种请求方式的枚举,
分别用于处理8种请求方式package edu.youzg.about_spring_mvc.controllor;
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.bind.annotation.RequestMethod;
/**
* @Author: Youzg
* @CreateTime: 2020-05-13 10:41
* @Description: 带你深究Java的本质!
*/
@Controller
public class RestfulController {
@RequestMapping(value = "/query/{name}/{age}", method = RequestMethod.GET)
public String query(@PathVariable String name, @PathVariable int age, Model model) {
System.out.println("query进来了");
String res = name + ":" + age;
model.addAttribute("inf", res);
return "info";
}
}
虽然我们能够在此处配置某方法的请求类型,
但是 所有的地址栏请求 默认 按照 Get方式 请求服务器 !)
法二 —— 使用@RequestMapping注解 的 5种衍生注解:
提供了5个@RequestMapping注解的子注解:
可以理解为 @RequestMapping(method =RequestMethod.DELETE) 的 快捷方式!
url风格:
还支持ant配置@RequestMapping("/user/?") // 匹配类似: /user/a /user/b
@RequestMapping("/user/*") // 匹配类似:/user/abc /user/abaddd
@RequestMapping("/user/**/save") // 匹配类似:/user/a/b/c/save user/a/save
文章标题:【springMVC框架 学习】Restful风格 详解
文章链接:http://soscw.com/index.php/essay/42555.html