springmvc实验(三)——请求映射

【知识要点】

  1. 方法映射概念
    所谓的方法映射就是将前端发送的请求地址和后端提供的服务方法进行关联。在springMVC框架中主要使用@Controller和@RequestMapping两个注解符,实现请求和方法精准匹配。
  2. 注解符@Controller
    Spring中包含了一个Controller接口,但是实现Controller接口只能处理一个单一的请求,使用起来非常不灵活。使用@Controller注解,可以标记类的实例是一个SpringMVC控制器对象,并可以支持同时处理多个请求动作,相对于实现变得更加简单,更加灵活,分发处理器会扫描使用了该注解类的方法
  3. 注解符@RequestMapping
    SpringMVC中使用@RequestMapping来映射请求,也就是通过它来指定控制器可以处理哪些URL请求。注解符@RequestMapping可以使用到方法上,也可以使用到类上。注解符@RequestMapping使用在方法上,与URL中最后一个反斜杠后值与方法建立映射关系,注解在方法上时@RequestMapping很多属性,常用属性如下表所示,使用这些属性规定匹配规则。注解在类上,代表该类中所有方法都将映射为相对于类级别的请求,该控制器所处理的所有请求都被映射到value属性值所指定的路径下,起到窄化路径的作用
    在这里插入图片描述
    4)方法映射的组合注解
    Spring框架的4.3版本中,引入了新的组合注解,来帮助简化常用的HTTP方法的映射,并更好的表达被注解方法的语义,如下表所示。
    在这里插入图片描述

【实验目的】

  • 了解注解符@Controller
  • 熟悉springMVC请求映射过程
  • 熟悉组合注解的使用
  • 掌握@RequestMapping的使用

【实验内容】

  1. 编写前端控制器StudentController
  2. 注解符@Controller的使用
  3. 验证注解符@RequestMapping及其属性的使用

【实验步骤】

1. 创建SpringMVC工程demo2

2. 代码编写

在com.bjwl.controller包中添加学生控制类(StudentController),其代码如下所示

@Controller  
@RequestMapping("student")  
public class StudentController {  @RequestMapping("list")  public void getAllStudent(HttpServletResponse response) throws IOException {  response.setContentType("text/html;charset=utf-8");  response.getWriter().write("测试注解符@RequestMapping中value");  }  
} 

代码的第1行使用注解符@Controller标注该类的实例是一个控制器对象;第2行在类上使用@RequestMapping注解,进行路径窄化表示请求路径必须包括student;第4行在方法使用@RequestMapping注解,请求url中最后一部分值与注解符value中的值进行匹配,从而建立请求与方法的映射关系

3. 验证@RequestMapping属性

  1. 验证method属性,下述代码中请求方法只能使用post方法,代码如下所示
@RequestMapping(value="list2",method = {RequestMethod.POST})  
public void InsertStudent(HttpServletResponse response) throws IOException {  response.setContentType("text/html;charset=utf-8");  response.getWriter().write("测试注解符@RequestMapping中method的使用");  
}  
  1. 验证params属性,示例代码中匹配请求参数必须包含username和password,且username的值不能是李四,代码如下所示
@RequestMapping(value = "verify3",params = {"username!=李四","password"})  
public void handle3(HttpServletRequest request,  HttpServletResponse response) throws Exception {  response.setContentType("text/html;charset=utf-8");  response.getWriter().write("测试注解符@RequestMapping中paramsshuxing ");  
} 
  1. 验证consumes和produces。示例代码中匹配的方法仅处理请求Content-Type为application/json类型的请求,produces标识代表返回的内容类型为application/json;代码如下所示
@RequestMapping(value = "verify5",consumes="application/json", produces="application/json")  
public void handle5(HttpServletRequest request,  HttpServletResponse response) throws Exception {  response.setContentType("application/json;charset=utf-8");  response.getWriter().write("验证consumes和produces");  
}

4) 验证headers属性。使用headers可以更精确的映射请求,指定request中必须包含某些指定的header值,才能让该方法处理请求,代码如下所示。

@RequestMapping(value = "verify6",headers = "Content-Type=application/json;charset=utf-8")  
public void handle6(HttpServletRequest request,  HttpServletResponse response) throws Exception {  response.setContentType("application/json;charset=utf-8");  response.getWriter().write("验证headers属性");  
}  

4. 组合注解的使用

以下仅验证@PostMapping和@PutMapping注解,示例代码如下。

    @PostMapping("insert")public void insert(HttpServletResponse response) throws IOException {response.setContentType("application/json;charset=utf-8");response.getWriter().write("验证@PostMapping,新增成功");}@PutMapping("update")public void update(HttpServletResponse response) throws IOException {response.setContentType("application/json;charset=utf-8");response.getWriter().write("验证@PutMapping,修改成功");}

修改请求方法类型,返回404
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java学习笔记】75 - 算法优化入门 - 马踏棋盘问题

一、意义 1.算法是程序的灵魂,为什么有些程序可以在海量数据计算时,依然保持高速计算? 2.拿老韩实际工作经历来说,在Unix下开发服务器程序,功能是要支持上千万人同时在线,在上线前, 做内测,一…

【C++】Makefile

宏定义含义举例CPPFLAGSC 预编译的选项CPPFLAGS(r’-DRILL_USE_BTHREAD1’)CFLAGSC 编译器的选项CFLAGS(’ -g -Ofast -pipe -W -Wall -fPIC’)CXXFLAGSC 编译器的选项CXXFLAGS(’ -g -Ofast -pipe -W -Wall -Werror -fPIC -DRAPIDJSON_HAS_STDSTRING -stdc17’ ) 写在最后&…

react-route-dom 实现简单的嵌套路由

最终效果 点击 to test1 点击to test2 > to test21 点击to test2 > to test22 代码如下 path: "page",element: <父组件 />,children: [{ path: "test1", element: <Test1 /> },{path: "test2",element: <Test2 />…

详解API开发【电商平台API封装商品详情SKU数据接口开发】

1、电商API开发 RESTful API的设计 RESTful API是一种通过HTTP协议发送和接收数据的API设计风格。它基于一些简单的原则&#xff0c;如使用HTTP动词来操作资源、使用URI来标识资源、使用HTTP状态码来表示操作结果等等。在本文中&#xff0c;我们将探讨如何设计一个符合RESTfu…

【华为数通HCIP | 网络工程师】821刷题日记-IS-IS(2)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

【排序】希尔排序(C语言实现)

文章目录 前言1. 希尔排序的思想2. 希尔排序的一些小优化 前言 本章将详细介绍希尔排序的思想及实现&#xff0c;由于希尔排序是在插入排序的思想上进行升华&#xff0c;所以如果不知道插入排序或者不熟悉的可以先看看这篇文章&#xff1a;《简单排序》中的直接插入排序。 1. 希…

大数据Hadoop-HDFS_架构、读写流程

大数据Hadoop-HDFS 基本系统架构 HDFS架构包含三个部分&#xff1a;NameNode&#xff0c;DataNode&#xff0c;Client。 NameNode&#xff1a;NameNode用于存储、生成文件系统的元数据。运行一个实例。 DataNode&#xff1a;DataNode用于存储实际的数据&#xff0c;将自己管理…

【Unity实战】按物品掉落率,随机掉落战利品物品系统(附项目源码)

文章目录 前言开始参考源码完结 前言 当开发游戏时&#xff0c;一个常见的需求是实现一个物品随机掉落系统。这个系统可以让玩家在击败敌人或完成任务后获得随机的物品奖励&#xff0c;增加游戏的可玩性和乐趣。 在Unity中&#xff0c;我们可以通过编写代码来实现这样的战利品…

leetcode 611. 有效三角形的个数(优质解法)

代码&#xff1a; class Solution {public int triangleNumber(int[] nums) {Arrays.sort(nums);int lengthnums.length;int n0; //三元组的个数//c 代表三角形最长的那条边for (int clength-1;c>2;c--){int left0;int rightc-1;while (left<right){if(nums[left]nums[r…

Linux基础项目开发1:量产工具——输入系统(三)

前言&#xff1a; 前面我们已经实现了显示系统&#xff0c;现在我们来实现输入系统&#xff0c;与显示系统类似&#xff0c;下面让我们一起来对输入系统进行学习搭建吧 目录 一、数据结构抽象 1. 数据本身 2. 设备本身&#xff1a; 3. input_manager.h 二、触摸屏编程 to…

Azure Machine Learning - 创建Azure AI搜索索引

目录 一、先决条件检查空间 二、创建和加载索引启动向导连接到 数据源跳过认知技能配置配置索引配置索引器 三、监视索引器进度四、检查搜索索引结果五、添加或更改字段六、使用搜索浏览器查询七、运行更多示例查询八、清理资源 在本文中&#xff0c;你将使用导入数据向导和由虚…

动态规划:解决复杂问题的利器(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…