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.mzph.cn/news/185665.shtml

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

相关文章

虚拟机安装centos7系统后网络配置

一.桥接网络和nat网络的区别1,桥接模式(如果外部访问虚拟机,最好选这个) 通过使用物理机网卡 具有单独ip,但是需要手动配置。 在bridged模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它…

跨境在线客服系统:打破国界的沟通壁垒

跨境在线客服系统在如今全球化的时代中扮演着重要的角色。随着电子商务的兴起,越来越多的企业将目光投向了国际市场。然而,跨境交流带来了语言、文化、时区等各种难题,给客服工作带来了巨大的挑战,而跨境在线客服系统成为了解决这…

力扣题:字符的统计-11.30

力扣题-11.30 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:49. 字母异位词分组 解题思想:将单词进行排序之后通过哈希表进行返回 class Solution(object):def groupAnagrams(self, strs):""":type strs: List[str]:…

Node.js+Express+Nodemon+Socket.IO构建Web实时通信

陈拓 2023/11/23-2023/11/27 1. 简介 Websocket WebSocket是一种在单个TCP连接上提供全双工通讯的协议。特别适合需要持续数据交换的服务,例如在线游戏、实时交易系统等。 Websocket与Ajax之间的区别 Ajax代表异步JavaScript和XML。它被用作一组Web开发技术&…

如何在Docker环境下安装Firefox浏览器并结合内网穿透工具实现公网访问

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器,由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…

从薛定谔的猫——量子理论基础

在介绍量子理论基础之前,先介绍一下薛定谔的猫的故事,这个故事可能大多数朋友并不陌生,下面首先回顾一下: 薛定谔的猫是一个在量子力学中用来说明量子叠加态和测量结果的思维实验。这个思维实验最早由物理学家Erwin Schrdinger在1…

深眸科技|AI+机器视觉加速进入工业制造,成为提升智能制造必选项

随着人工智能技术的飞速发展,AI视觉与机器视觉技术正在加速进入工业制造中。机器视觉技术赋予机器新活力与新智慧,不仅让机器实现精密工作的完成,还让其能够代替部分脑力活动,具有更高的智慧与能力。 深眸科技CEO周礼表示&#x…

基数排序及利用数组简化解题

红豆不堪看,满眼相思泪 本文主要是帮助大家熟练掌握利用数组进行有关判断的题目,看完本文后在之后的刷题中都可以利用这种思想,当然举例中的题目利用该种方法可能不是最优解,但绝对是你看到题目不用思考太多就可以做出来的方法&am…

容器有挂载目录的时候,容器反向生成为镜像,挂载的内容不会保留。只有实打实拷贝进容器的反向生成镜像才会保留。

无容器目录挂载 1、也就是说宿主机未与容器进行路径映射,故我们可以直接使用指令: docker commit 容器名称/容器ID 像名:标签号,把容器保存为镜像; (其中镜像名和标签号是我们随机取的,新镜像名以及我们的标签号!) 2、我们在不能判断容器与宿…

mysql mybatis分页查询 大数据量 非常慢

查阅了很多博客和资料,这篇文章以思路为准,详细代码不细说,都是非常简单的方法,一看就明白。具体实现稍微百度一下就能出来。仅供参考。 如题:单表数据已经达到4千万条数据,通过mybatis的分页查询效率非常低…

Netfilter中的NAT

目录 前瞻 SNAT和DNAT SNAT DNAT 实验 前瞻 NAT: (network address translation),支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链 NAT分为SNAT和DNAT SNAT:支持POSTROUTING, INPUT&…

ant design vue3 处理 ant-card-head ant-tabs靠左边对齐之has选择器不生效

火狐浏览器是不支持has的。 解决方法:通过position来解决。

Spring Cloud 配置 Nacos

一,下载Nacos 下载地址:https://github.com/alibaba/nacos/releases 二,启动Nacos 安装Nacos的bin目录下, 执行:startup.cmd -m standalone 然后打开上图红框的地址 三,配置服务 1 配置Nacos 创建命名…

「Bomkus 博士的试炼」排行榜规则更新

亲爱的玩家们 为了回应我们从社区收到的宝贵反馈,我们希望与大家分享我们为防止在「Bomkus 博士的试炼」排行榜中作弊而采取的措施的最新进展,并就这一主题提供更多说明。 除了在活动开始前采取的反作弊措施外,我们还根据观察到的和报告的行为…

python之pyqt专栏9-鼠标事件

目录 需求 UI界面 代码实现 代码解析: Label初始化设置 重写鼠标按下事件 重写鼠标释放事件 重写鼠标移动事件 运行结果 需求 当鼠标进入窗口时,点击鼠标左键,出现一个label并在显示光标在窗口的坐标;按住左键不释放拖动…

AntDB“超融合+流式实时数仓”——打造分布式数据库新纪元

(一) 前言 据统计,在信息化时代的今天,人们一天所接触到的信息量,是古人一辈子所能接收到的信息量的总和。当今社会中除了信息量“多”以外,人们对信息处理的“效率”和“速度”的要求也越来越高。譬如&a…

网络基础--win10双网卡设置成访问不同的网络

1、背景 我日常中大部分时间都是使用外网的网卡进行办公,只有在连接公司服务器时才需要使用内网。由于我的电脑存在两张网卡,分别用于连接不同的网络(常见情况是一张访问公司内网,一张访问公司外网),但是在…

Small Data Transmission(一) overview

在R16之前,RRC Inactive 不支持数据传输,UE在RRC inactive状态有data要传输时,就要通过RRC resume过程,转换到RRC connected mode才能进行数据传输。 有时候UE要传输的数据包可能会很小,且发送频率也很低,如果每次发送数据都要进行上述过程,就会增加不必要的功耗和信令…

力扣日记11.28-【二叉树篇】二叉树的最小深度

力扣日记:【二叉树篇】二叉树的最小深度 日期:2023.11.28 参考:代码随想录、力扣 111. 二叉树的最小深度 题目描述 难度:简单 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点…

TDA4VM EVM开发板调试笔记

文章目录 1. 前言2. 官网资料导读3. 安装 Linux SDK4. 制作SD 启动卡5. 验证启动1. 前言 TDA4作为一般经典的车规级SOC芯片,基于它的低阶智驾方案目前成为各家智驾方案公司的量产首选,这也使得基于TDA4的开发需求陡增,开发和使用TDA4既要熟悉Linux驱应用开发,还要熟悉传统…