1. @RequestMapping

  • @RequestMapping注解用于映射url到控制器类或一个特定的处理程序方法。可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

1.1 只注解在方法上面

@Controller
public class TestController {@RequestMapping("/h1")public String test(){return "test";}
}

访问路径:http://localhost:8080 / 项目名 / h1


1.2 同时注解类与方法

@Controller
@RequestMapping("/admin")
public class TestController {@RequestMapping("/h1")public String test(){return "test";}
}

访问路径:http://localhost:8080 / 项目名/ admin /h1 , 需要先指定类的路径再指定方法的路径;


2. RestFul 风格

2.1 概念

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


2.2 功能

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

2.2.1 传统方式操作资源 :

通过不同的参数来实现不同的效果!方法单一,post 和 get

http://127.0.0.1/item/queryItem.action?id=1 查询,GEThttp://127.0.0.1/item/saveItem.action 新增,POSThttp://127.0.0.1/item/updateItem.action 更新,POSThttp://127.0.0.1/item/deleteItem.action?id=1 删除,GET或POST

2.2.2 使用RestFul操作资源

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

http://127.0.0.1/item/1 查询,GEThttp://127.0.0.1/item 新增,POSThttp://127.0.0.1/item 更新,PUThttp://127.0.0.1/item/1 删除,DELETE

2.3 测试

2.3.1新建一个类 RestFulController

import org.springframework.stereotype.Controller;@Controller
public class RestFulController {}

2.3.2 在Spring MVC中可以使用 @PathVariable 注解,让方法参数的值对应绑定到一个URI模板变量上。

RestFulController.java

package com.tian.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;@Controller
public class RestFulController {//    映射访问路径@RequestMapping("/commit/{p1}/{p2}")public String index(@PathVariable int p1, @PathVariable int p2, Model model) {int result = p1 + p2;//Spring MVC会自动实例化一个Model对象用于向视图中传值model.addAttribute("msg", "结果为: " + result);//返回视图位置return "test";}
}

2.3.3 编写前端test.jsp,注意在WEB-INF/jsp目录下编写,对应我们的视图解析器

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
${msg}
</body>
</html>

2.3.4 启动TomCat测试


2.3.5 小结:使用路径变量的好处

  • 使路径变得更加简洁;
  • 获得参数更加方便,框架会自动进行类型转换。
  • 通过路径变量的类型可以约束访问参数,如果类型不一样,则访问不到对应的请求方法,如这里访问是的路径是/commit/1/a,则路径与方法不匹配,而不会是参数转换失败。
  • 更加安全

2.3.6 我们来修改下对应的参数类型,再次测试

int-->String

package com.tian.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;@Controller
public class RestFulController {//    映射访问路径@RequestMapping("/commit/{p1}/{p2}")public String index(@PathVariable String p1, @PathVariable String p2, Model model) {String result = p1 + p2;//Spring MVC会自动实例化一个Model对象用于向视图中传值model.addAttribute("msg", "结果为: " + result);//返回视图位置return "test";}
}

运行结果:


2.3.6 使用method属性指定请求类型

用于约束请求的类型,可以收窄请求范围。指定请求谓词的类型如GET, POST, HEAD, OPTIONS, PUT, PATCH, DELETE, TRACE等


2.3.6.1 增加一个方法(参数value 和path等同)

    //映射访问路径,必须是POST请求@RequestMapping(value = "/hello",method = {RequestMethod.POST})public String index2(Model model){model.addAttribute("msg", "hello!");return "test";}

2.3.6.2 我们使用浏览器地址栏进行访问默认是Get请求,会报错405:


2.3.6.3 如果将POST修改为GET则正常了;


2.3.6.4 小结

Spring MVC 的 @RequestMapping 注解能够处理 HTTP 请求的方法, 比如 GET, PUT, POST, DELETE 以及 PATCH。

如果不配置method, 则以任何请求形式 如: RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT, RequestMethod.PATCH, RequestMethod.DELETE都可以访问得到。

所有的地址栏请求默认都会是 HTTP GET 类型的。


2.3.6.5 方法级别的注解变体有如下几个:组合注解

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping

@GetMapping 是一个组合注解,平时使用的会比较多!它所扮演的是 @RequestMapping(method =RequestMethod.GET) 的一个快捷方式。


3. 小黄鸭调试法

场景一:我们都有过向别人(甚至可能向完全不会编程的人)提问及解释编程问题的经历,但是很多时候就在我们解释的过程中自己却想到了问题的解决方案,然后对方却一脸茫然。

场景二:你的同行跑来问你一个问题,但是当他自己把问题说完,或说到一半的时候就想出答案走了,留下一脸茫然的你。

其实上面两种场景现象就是所谓的小黄鸭调试法(Rubber Duck Debuging),又称橡皮鸭调试法,它是我们软件工程中最常使用调试方法之一。

此概念据说来自《程序员修炼之道》书中的一个故事,传说程序大师随身携带一只小黄鸭,在调试代码的时候会在桌上放上这只小黄鸭,然后详细地向鸭子解释每行代码,然后很快就将问题定位修复了。

意思就是遇到问题的时候,自己给自己解释每行代码的意思,帮自己理清思路。



SpringMVC--RequestMapping说明RestFul 风格小黄鸭调试法相关推荐

  1. 小黄鸭调试法:拯救那些开发心里“无力回天”的bug

    一. 故事背景 曾经某一年的春节期间,有11只鸭子突然让大家操碎了心......原来是春节期间,某网友家养了6只鸭子,每天上午9点半左右,邻居家的5只鸭子都会准时地在他家门口等候,雷打不动. 这些鸭子 ...

  2. 小黄鸭c语言编程,小黄鸭调试法

    前言 原作者:程序员的那些事 没有找到原文链接,查看了 程序员的那些事 的公众号,显示原文已经被删除 正文 花了一下午(或一天)在试图解决某个 Bug,后来才知道解决方案很简单,当时就是没有想到. 有 ...

  3. 小黄鸭调试法,每个程序员都要知道的

    花了一下午(或一天)在试图解决某个 Bug,后来才知道解决方案很简单,当时就是没有想到. 有个同事正好路过,看到你愁眉苦脸的,问你"怎么了呀?" "噢,是这样的.我遇到了 ...

  4. 软件调试方法--小黄鸭调试法

    小黄鸭调试法(Rubber Duck debugging)是一种调试bug的方法,就是在调试,纠错或者测试的过程中不断的对一只小黄鸭(玩具)描述代码行的作用,以期找到灵感排查错误的方法. 当然,小黄鸭 ...

  5. 神奇的「小黄鸭调试法」

    大家好,欢迎来到 Crossin的编程教室 ! 在程序员界流传着一个神秘debug方法,叫做"小黄鸭调试法"(Rubber DuckDebugging). 没错,就是这个小黄鸭. ...

  6. 严肃不搞笑的小黄鸭调试法

    下面,让我来为你介绍一个程序调试大法--"橡皮鸭程序调试法",这个方法在调试界是很出众的,实施起来相当方便和简易,几乎可以随时随地地实验,几乎不需要借助任何的软件和硬件的支持,你甚 ...

  7. Bug总是找不到?试试小黄鸭调试法吧

  8. ❤️《小黄鸭调试法》程序员必备技能!!!❤️

    小黄鸭调试法 场景一:我们都有过向别人(甚至可能向完全不会编程的人)提问及解释编程问题的经历,但是很多时候就在我们解释的过程中自己却想到了问题的解决方案,然后对方却一脸茫然. 场景二:你的同行跑来问你 ...

  9. 还只会用小黄鸭解压?看来你不是一个时髦的程序员!

    互联网时代的我们每天都承受着各种压力 尤其是每天坐在电脑前敲敲打打的你, 上一秒或许还开心得像个两百斤的胖子 下一秒可能就被BUG和加班折磨的头大 压力是不是很大,需要疏解一下? 是老梗没错了 舒缓压 ...

最新文章

  1. 用 float 存储金额,老板说损失从工资里扣!
  2. 标杆课程采访补充问题
  3. hdu 多校数论 GuGuFishtion
  4. golang string 加号连接性能慢_面试必备:浅析C#性能优化的若干种方法
  5. 怎么从转移特性曲线上看dibl_「科普向」这篇让你快速搞懂IGBT的静态特性
  6. Mysql中的转义字符
  7. 面试重点:设计模式(三)——工厂方法
  8. 养老不用愁,这种机器人可以让老年人自主地进行日常生活
  9. 利用Socketserver实现简单的文件上传
  10. 最新微信公众平台JS逆向分析
  11. 度量分析之报告信息的四个层次:数据,信息,分析,措施
  12. CocoaPods 简易教程 Alamofire请求数据 Swift
  13. bim计算机管理室内设计,BIM室内设计分析
  14. 迷宫问题的三种实现算法
  15. ThinkPad系统重装步骤
  16. unity批量设置图片为etc2格式或者astc格式
  17. 微信小程序如何快速达到1000UV流量主开通要求
  18. Impdp Terminates With Error ORA-39126, LPX-00225
  19. 首页被绑定为www.7939.com的手工解除方法
  20. 腾讯秋招--微信支付面经

热门文章

  1. 火狐浏览器Firefox 如何使用iMacros 自动填写网页表单
  2. PMP考试难不难通过率怎样?
  3. 计算机实际应用ppt,全国创新杯说课大赛计算机应用基础类一等奖作品:幼儿园教师实际工作任务说课课件.ppt...
  4. 洛谷1594 护卫队_区间dp_题解
  5. 0717 抽象类/接口/异常/==-equals()/搜索字符串/包装类型(统计字符数)/hashCode()/StringBuffer/pingSQL/2018年美式日历
  6. 亚信安全助手怎么卸载
  7. EMC存储 CLARiiON or VNX 恢复登录密码
  8. (电路)第一章 电路模型与电路定律
  9. FIDO UAF Extension
  10. matlab 符号的值,matlab solve 符号 转换为值