Spring MVC:@RequestMapping
Spring MVC
- @RequestMapping
- 属性
@RequestMapping
@RequestMapping, 是 Spring Web 应用程序中最常用的注解之一,主要用于映射 HTTP 请求 URL 与处理请求的处理器 Controller 方法上。使用 @RequestMapping 注解可以方便地定义处理器 Controller 的方法来处理不同的 HTTP 请求,从而实现 Web 应用程序的路由功能。
@RequestMapping 注解可用于方法级别和类级别
方法级别上使用 @RequestMapping 注解:将请求 URL 与特定的处理器 Controller 方法进行映射
类级别上使用 @RequestMapping 注解:将请求 URL 与整个处理器 Controller 类进行映射
简单示例:
在方法级别上使用 @RequestMapping 注解
//原来案例
package cn.edu.springmvcdemo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class IndexDemo {@RequestMapping("/index")public String index(){return "index"; //返回对应页面文件名}
}
结果如图:
在类级别上使用 @RequestMapping 注解
package cn.edu.springmvcdemo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@RequestMapping("/index") //类级别使用该注解,相当于请求地址上增加一个父目录
@Controller
public class IndexDemo {@RequestMapping("/index") //子目录public String index(){return "index"; //返回对应页面文件名}
}
结果如图(区别在于请求 URL ):
属性
@RequestMapping 注解属性
一、value:指定请求地址
1.可以是相对路径或绝对路径
package cn.edu.springmvcdemo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class IndexDemo {//1.可以指定为具体值@RequestMapping("/index1")public String index1(){return "index"; //返回对应页面文件名}
}
结果如图:
2.可以是 URL Template 模式
package cn.edu.springmvcdemo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class IndexDemo {//2.可以指定为含有变量或正则表达式的一类值(URL Template)@RequestMapping("/index2/{id}")//@PathVariable 注解的 value 值需要与占位符中的变量保持一致public String index2(@PathVariable(value = "id") int ids){System.out.println(ids);return "index";}
}
结果如图:
二、method:指定请求方法
可以是 GET、POST、PUT、DELETE 等 HTTP 方法,默认自动匹配 GET 或 POST 请求
如图:指定请求方法为 GET
三、consumes:指定请求 consumes ,即指定请求所接受的媒体类型(Content-Type)
简单示例:
首先,创建一个 accessing.jsp
<%--Created by IntelliJ IDEA.User: dellDate: 2023/7/18Time: 12:54To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body><h2>访问成功!</h2>
</body>
</html>
然后,在 index.jsp 中添加一个 form 表单
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><body><h2>Hello World</h2><form action="${pageContext.request.contextPath}/consumes" method="post"><input type="text" value="spring mvc"><input type="submit" value="提交"></form></body>
</html>
接着,属性 consumes 指定请求的内容类型为 text/html
package cn.edu.springmvcdemo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;@Controller
public class IndexDemo {//1.可以指定为具体值@RequestMapping("/index1")public String index1(){return "index"; //返回对应页面文件名}//consumes 限制内容类型为 text/html 才接受请求处理,其余的会报错:HTTP状态 415 - 不支持的媒体类型@RequestMapping(value = "/consumes",method = RequestMethod.POST,consumes = "text/html")public String consumes(){System.out.println("访问成功!");return "accessing";}
}
最后,测试结果
1.打开 index.jsp
2.点击提交,跳转到 accessing.jsp
原因:consumes 属性指定接收内容类型为 text/html ,但如图请求头中真正的类型为 application/x-www-form-urlencoded ,与之不匹配,故报错HTTP状态 415 - 不支持的媒体类型
解决:将 consumes = “text/html” 改为 consumes = “application/x-www-form-urlencoded” 或者删除 consumes 属性即可
四、produces:指定请求 produces ,即指定响应的媒体类型(Content-Type)
接着上面的示例,将 consumes 属性改为 produces 属性
结果如图:
注:
- produces 属性指定的响应类型,当请求头的 Accept 的类型中包含即可成功响应
- Accept 中的 /;q=0.8 类型表示可以接收任何类型,权重系数0.8指若前几种类型不能正常接收,则根据响应的数据类型进行自动分析匹配处理
五、params:指定请求参数
可以是查询参数或表单参数,指定参数后必须包含这些参数才接收处理
简单示例:
首先,在 index.jsp 中再添加两个 input 标签,并添加 name 参数和参数值
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><body><h2>Hello World</h2><form action="${pageContext.request.contextPath}/consumes" method="post"><%-- name值为对应的参数 --%><input type="text" name="data" value="" /><input type="text" name="day" value="" /><input type="submit" value="提交"></form></body>
</html>
接着,成功访问跳转的 accessing.jsp 内容如下
<%--Created by IntelliJ IDEA.User: dellDate: 2023/7/18Time: 12:54To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body><h2>访问成功!</h2>
</body>
</html>
然后,属性 params 指定表单参数或参数条件
package cn.edu.springmvcdemo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;@Controller
public class IndexDemo {//1.可以指定为具体值@RequestMapping("/index1")public String index1(){return "index"; //返回对应页面文件名}//params 指定参数必须有 "data","day" ,而且 "day=10" 才能访问成功(条件可以为 = 、 != )@RequestMapping(value = "/consumes",method = RequestMethod.POST,params = {"data","day=10"})public String consumes(){System.out.println("访问成功");return "accessing";}
}
最后,测试结果
1.当 day=1 时,访问失败
2.当 day=10 时,访问成功
六、headers:指定请求头
可以是特定的请求头信息,指定请求头后必须包含这些请求头信息才接收处理
请求头信息( Request Headers )
接着上面的示例,将 params 属性改为 headers 属性,并指定请求头信息(以 Accept-Language: zh-CN,zh;q=0.9 的请求头信息为例)
注:headers 属性值以键值对形式表示,用等号而不是冒号
当信息 zh-CN 改为 en-US 时,访问失败。结果如图:
相关文章:
Spring MVC:@RequestMapping
Spring MVC RequestMapping属性 RequestMapping RequestMapping, 是 Spring Web 应用程序中最常用的注解之一,主要用于映射 HTTP 请求 URL 与处理请求的处理器 Controller 方法上。使用 RequestMapping 注解可以方便地定义处理器 Controller 的方法来处…...
【vue3+ts项目】配置eslint校验代码工具,eslint+prettier+stylelint
1、运行好后自动打开浏览器 package.json中 vite后面加上 --open 2、安装eslint npm i eslint -D3、运行 eslint --init 之后,回答一些问题, 自动创建 .eslintrc 配置文件。 npx eslint --init回答问题如下: 使用eslint仅检查语法&…...
PHP之ZipArchive打包压缩文件
1、Linux 安装 nginx 安装zlib库 2、使用,目前我这边的需求是。 1、材料图片、单据图片,分别压缩打包到“材料.zip”和“单据.zip”。 2、“材料.zip”和“单据.zip”在压缩打包到“订单.zip” 3、支持批量导出多个订单的图片信息所有订单的压缩文件&…...
面试之快速学习C++14
文章参考:https://zhuanlan.zhihu.com/p/588826142?utm_id0 最近学了一会感慨到找工作好难,上周面试了一家医疗公司,准备攒攒经验但是不去,结果三天了没消息,感觉一面都没过… 本来自傲看不上,结果人家也…...
【算法专题突破】双指针 - 快乐数(3)
目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后: 1. 题目解析 题目链接:202. 快乐数 - 力扣(Leetcode) 这道题的题目也很容易理解, 看一下题目给的示例就能很容易明白, 但是要注意一个点&#…...
【javaweb】学习日记Day4 - Maven 依赖管理 Web入门
目录 一、Maven入门 - 管理和构建java项目的工具 1、IDEA如何构建Maven项目 2、Maven 坐标 (1)定义 (2)主要组成 3、IDEA如何导入和删除项目 二、Maven - 依赖管理 1、依赖配置 2、依赖传递 (1)查…...
C++信息学奥赛1144:单词翻转
#include <iostream> #include <string> using namespace std; int main() {string str;// 输入一行字符串getline(cin, str);string arr;for (int i 0; i < str.length(); i){if (str[i] ! ){arr str[i]; // 将非空格字符添加到临时存储的字符串中}else{for…...
qt检查文件夹是否有写权限
Qt 使用如下函数能够判断路径或者文件是否可写: bool QFileInfo::isWritable() const 对于win10系统实测,结果不准确。继续排查,官方文档描述:a)如果未启用 NTFS 权限检查,Windows 上的结果将仅反映文件是…...
LSF 安装目录,快速参考 LSF 命令、守护程序、配置文件、日志文件和重要集群配置参数
样本 UNIX 和 Linux 安装目录 守护程序错误日志文件 守护程序错误日志文件存储在 LSF_LOGDIR 在 lsf.conf 文件中定义的目录中。 LSF 基本系统守护程序日志文件LSF 批处理系统守护程序日志文件pim.log.host_namembatchd.log.host_namembatchd.log.host_namesbatchd.log.host_…...
在Mybatis中写动态sql这些标签:if、where、set、trim、foreach、choose的作用是什么,怎么用?
在 MyBatis 中,您可以使用动态 SQL 标签来构建灵活的 SQL 查询,以根据不同的条件生成不同的查询语句。以下是这些标签的作用和用法: 1. **<if> 标签:** 用于根据某个条件动态地包含或排除 SQL 片段,test:可以写…...
7 Python的模块和包
概述 在上一节,我们介绍了Python的异常处理,包括:异常、异常处理、抛出异常、用户自定义异常等内容。在这一节中,我们将介绍Python的模块和包。Python的模块(Module)和包(Package)是…...
【JavaWeb 篇】使用Servlet、JdbcTemplate和Durid连接池实现用户登录功能与测试
在现代Web应用程序开发中,用户登录功能是基础中的基础。它为用户提供了安全访问系统的途径。本篇博客将引导您通过使用Servlet、Spring框架的JdbcTemplate以及Durid连接池,来构建一个完整的用户登录功能。我们将详细展示每个部分的代码,并解释…...
【Unity3D赛车游戏】【六】如何在Unity中为汽车添加发动机和手动挡变速?
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:Uni…...
【Go 基础篇】切片:Go语言中的灵活数据结构
在Go语言中,切片(Slice)是一种强大且灵活的数据结构,用于管理和操作一系列元素。与数组相比,切片的大小可以动态调整,这使得它成为处理动态数据集合的理想选择。本文将围绕Go语言中切片的引入,介…...
龙芯2K1000LA移植交叉编译环境以及QT
嵌入式大赛结束了,根据这次比赛中记的凌乱的笔记,整理了一份龙芯2K1000LA的环境搭建过程,可能笔记缺少了一部分步骤或者错误,但是大致步骤可以当作参考。 一、交叉编译工具链 下载连接:龙芯 GNU 编译工具链 | 龙芯开…...
javaee spring依赖注入之spel方式
spring依赖注入之spel方式 <dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>4.3.18.RELEASE</version></dependency>package com.test.pojo;import java.util.List; …...
【Java集合学习1】ArrayList集合学习及集合概述分析
JavaArrayList集合学习及集合学习概述 一、Java集合概述 Java 集合, 也叫作容器,主要是由两大接口派生而来:一个是 Collection接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。对于Col…...
TouchGFX之调试
DebugPrinter类是一种在显示屏上打印调试消息的简单方法,无需向屏幕添加控件。 在使用DebugPrinter之前,需要分配一个实例并将其传递给Application类,且DebugPrinter实例必须兼容所使用的LCD类。 该表列出了DebugPrinter类名称: …...
C# winform加载yolov8模型测试(附例程)
第一步:在NuGet中下载Yolov8.Net 第二步:引用 using Yolov8Net; 第三步:加载模型 private IPredictor yolov8 YoloV8Predictor.Create("D:\\0MyWork\\Learn\\vs2022\\yolov_onnx\\best.onnx", mylabel); 第四步:图…...
浙大陈越何钦铭数据结构07-图6 旅游规划
题目: 有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。 输入…...
VUE笔记(七)项目登录
1、安装elementui 在终端执行 vue add element 注册组件 如果要使用哪个组件,大家需要在plugins/element.js中注册该组件 import Vue from vue import { Button } from element-ui Vue.use(Button) 在页面组件中使用 <el-button type"primary"&…...
大语言模型之六- LLM之企业私有化部署
数据安全是每个公司不得不慎重对待的,为了提高生产力,降本增效又不得不接受新技术带来的工具,私有化部署对于公司还是非常有吸引力的。大语言模型这一工具结合公司的数据可以大大提高公司生产率。 私有化LLM需要处理的问题 企业内私有化LLM…...
Python3 列表
Python3 列表 序列是 Python 中最基本的数据结构。 序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。 Python 有 6 个序列的内置类型,但最常见的是列表和元组。 列表都可以进…...
OpenCV基础知识(8)— 图形检测
前言:Hello大家好,我是小哥谈。图形检测是计算机视觉的一项重要功能。通过图形检测可以分析图像中可能存在的形状,然后对这些形状进行描绘,例如搜索并绘制图像的边缘,定位图像的位置,判断图像中有没有直线、…...
Java虚拟机
文章目录 JVM运行时数据区域HotSpot虚拟机对象探秘实战:OutOfMemoryError异常 JVM 运行时数据区域 HotSpot虚拟机对象探秘 实战:OutOfMemoryError异常...
c++学习 之 函数重载注意事项
文章目录 引用作为函数重载的条件函数重载遇到默认参数 引用作为函数重载的条件 #include <iostream> using namespace std; void fun(int &a) {cout << "void fun(int & a)" << endl; }void fun(const int &a) {cout << "…...
2023-08-27 LeetCode每日一题(合并区间)
2023-08-27每日一题 一、题目编号 56. 合并区间二、题目链接 点击跳转到题目位置 三、题目描述 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组&#…...
C#,数值计算——调适数值积分法(adaptive quadrature)的计算方法与源程序
1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 调适数值积分法 /// adaptive quadrature /// </summary> public class Adapt { private double x1 { get; } 0.942882415695480; private …...
微信小程序发布迭代版本后如何提示用户强制更新新版本
在点击小程序发布的时候选择,升级选项 之前用户使用过的再打开小程序页面就会弹出升级弹窗modal...
星际争霸之小霸王之小蜜蜂(七)--消失的子弹
目录 前言 一、删除子弹 二、限制子弹数量 三、继续重构代码 总结 前言 昨天我们已经让子弹飞了起来,但是会面临一个和之前小蜜蜂一样的问题,小蜜蜂的行动应该限制在窗口内,那么子弹也是有相同之处,也需要限制一个移动范围&…...
phpcms仿站教程/网站优化是什么意思
css有两大特性:继承性和层叠性 继承性: 面向对象语言都会存在继承的概念,在面向对象语言中,继承的特点:继承了父类的属性和方法。那么我们现在主要研究css,css就是在设置属性的。不会牵扯到方法的层面。 继…...
优秀的网站建设公司排名/搞一个公司网站得多少钱
服务器端为简体系统。但客户端为繁体操作系统的时候就出问题了。在脚本里这样写,在简体的系统下可以正常,但在客户端为繁体的时候,取到的action的值就不行了(乱码)。不知道为什么?window.open("test.a…...
福田附近公司做网站建设哪家效益快/站长工具app官方下载
java读取文件或是文件流的代码,涵盖了读取jar文件中的文件流,网络文件流等,有些读取方式为了防止编码转换带来的问题,采取了动态byte[]的方式读取,源码如下 : C# 同样也是一样的,只是API对应的不同而已&am…...
怎么计算网站开发费用/深圳网站关键词排名优化
2019独角兽企业重金招聘Python工程师标准>>> 电脑系统平台:OS X EI Capitan 10.11 在以前的旧的QQ版本,QQ的截图的偏好还有一个开机自启动的选项: 现在新的版本,却没有了"开机自动运行"的选项,然…...
wordpress menu插件/长沙关键词优化公司电话
这是一篇讨论Node.js在无需修改任何代码从单核垂直扩展到多核,再水平扩展到多台集群和消息集成的分布式系统,展示了Node.JS在无缝扩展性方面要强于Java。其主要架构是Node.js微服务 消息Messaging 集群Clustering 。翻译如下: 当使用微服务…...
江苏住房和城乡建设厅网站/合肥百度推广排名优化
前言:前篇介绍了mysql的备份方法,但备份不是越多越好,如果磁盘空间不够用,我需要保留近一个周的备份就可以了,那就需要删除备份脚本了,特别注意删除操作比较危险,变量传参要进行二次确认。 下面…...