SpringMVC笔记(三)

作者: linzeliang
  1. Controller

  2. 控制器复制提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现

  3. 控制器负责解析用户的请求并将其转换为一个模型

  4. 在SpringMVC中一个控制器可以包含多个方法

  5. 在SpringMVC中,对于Controller的配置方式有很多种

  6. RequestMapping

@RequestMapping注解:用于映射url到控制器类或一个特定的处理程序的方法

  1. 只加在方法上面,访问路径:localhost/项目名/t1

    @Controller
    public class TestController {
       @RequestMapping("/t1")
       public String test(){
           return "test";
       }
    }
    
  2. 在类上也加,则需要先指定类的路径再指定方法的路径,访问路径:localhost/项目名/test/t1

    @Controller
    @RequestMapping("/test")
    public class TestController {
       @RequestMapping("/t1")
       public String test(){
           return "test";
       }
    }
    
  3. RESTful风格

    3.1 概念

RestFul就是一个资源定位及资源操作的风格,基于这个风格设计的软件可以更加简介,更有层次,更易于实现缓存等机制

3.2 功能

  • 资源:互联网所有的事务都可以被称为资源

  • 资源操作:使用POST、GET、DELETE、PUT,即使用不同方法对资源进行操作

    3.3 传统方式资源操作

  • 通过不同的参数来实现不同的效果,方法单一,即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

    3.4 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

    3.5 使用RESTful

  • 新建一个Controller

    @Controller
    public class RestFulController {
    }
    
  • 再SpringMVC中,可以使用@PathVariable注解,让方法参数的值对应绑定到一个URI模板变量上

    @Controller
    public class RestFulController {
       //映射访问路径
       @RequestMapping("/commit//{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";   
       }
    }
    
  • 进行测试

    3.6 使用路径变量的好处

  • 使路径变得更加简洁

  • 获取参数更方便,框架会自动进行类型转换

  • 通过路径变量的类型可以约束访问参数,如果类型不一样,则访问不到对应的请求方法

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

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

测试:

  1. 增加一个方法

    //映射访问路径,必须是POST请求
    @RequestMapping(value = "/hello", method = )
    public String index2(Model model){
       model.addAttribute("msg", "hello!");
       return "test";
    }
    
  2. 使用浏览器通过GET方式访问,会报405错误

  3. 将POST修改为GET则正常访问

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

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

  6. 方法级别的注解有如下几个:组合注解

    • @GetMapping
    • @PostMapping
    • @PutMapping
    • @DeleteMapping
  7. @PatchMapping

    原文创作:linzeliang

    原文链接:https://www.cnblogs.com/linzeliang1222/p/14716747.html

更多推荐

更多
  • 程序计数器 M78 程序计数器简述特点作用似之处,都是取下一次的指令地址。 * PC Register在JVM里可以翻译成program counter register 程序计数器,在JVM里只存储当前执行的操作码的地址。也算是对CPU里寄存器的一种模拟
  • Java EE 学习 83 上 - SpringMVC - 基本使用方法 【Java EE 学习 83 上】【SpringMVC】【基本使用方法】一、SpringMVC框架概述二、第一个SpringMVC程序三、三种不同的URL处理器映射四、三种不同的控制器五、项目练习源代码地址  1.环境准备  2.需要的
  • Java EE 学习 83 下 - SpringMVC - 使用注解替代已过时的API - SpringMVC、Hibernate整合 - Java EE 学习 83 下SpringMVC使用注解替代已过时的APISpringMVC、Hibernate整合一、SpringMVC中注解的使用二、使用注解接收参数的方法三、重定向的方法四、SpringMVC和Hibernate的
  • 魔改swagger:knife4j的另外一种打开方式 魔改swagger:knife4j的另外一种打开方式一、两种文档聚合模式二、swagger-ui的实现原理三、swagger-register-server四、swagger-spring-boot-starter五、实战六、其它问题原
  • spring mvc请求体偷梁换柱:HandlerMethodArgumentResolver spring mvc请求体偷梁换柱:HandlerMethodArgumentResolver1.切面方法:行不通2.自定义参数解析器:偷梁换柱3.自定义参数解析器遇到的问题第一步:实现HandlerMethodArgumentReso
    狂盗一枝梅

  • 二叉树题解方法 二叉树-题解-方法递归二叉树的递归遍历二叉树的迭代遍历二叉树的统一迭代法二叉树的层序遍历翻转二叉树对称二叉树二叉树的最大深度二叉树的最小深度慢就是快!递归法迭代法递归法迭代法迭代法n叉树的最大深度使用队列使用栈/15056076.htm
  • 字符串题解方法 字符串-题解-方法反转字符串反转字符串II替换空格翻转字符串左旋转字符串实现 strStr()重复的子字符串慢就是快!KMP算法KMP有什么用什么是前缀表时间复杂度分析代码,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题
  • Hash题解方法 Hash-题解-方法有效的字母异位词两个数组的交集快乐数两数之和四数相加II赎金信三数之和慢就是快!m", t = "nagaram" 输出: true 示例 2: 输入: s = "rat", t = "car" 输出: false
  • 链表题解 链表-题解移除链表元素翻转指针两两交换链表中的节点删除链表的倒数第N个节点链表相交环形链表II慢就是快!双指针法递归实现判断链表是否有环bo/2020/2465789-20210910160233590-1213910246.png)
  • 双指针题解 双指针-题解移除元素慢就是快!数组空间,你必须仅使用 O(1) 额外空间并**原地**修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1: 给定 nums = \[3,2,2,3\], ​ va
  • 近期文章

    更多
    文章目录

      推荐作者

      更多