当前位置: 首页 > news >正文

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 属性
在这里插入图片描述

结果如图:
在这里插入图片描述
注:

  1. produces 属性指定的响应类型,当请求头的 Accept 的类型中包含即可成功响应
  2. 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 时,访问失败。结果如图:
在这里插入图片描述

http://www.lryc.cn/news/142740.html

相关文章:

  • 【vue3+ts项目】配置eslint校验代码工具,eslint+prettier+stylelint
  • PHP之ZipArchive打包压缩文件
  • 面试之快速学习C++14
  • 【算法专题突破】双指针 - 快乐数(3)
  • 【javaweb】学习日记Day4 - Maven 依赖管理 Web入门
  • C++信息学奥赛1144:单词翻转
  • qt检查文件夹是否有写权限
  • LSF 安装目录,快速参考 LSF 命令、守护程序、配置文件、日志文件和重要集群配置参数
  • 在Mybatis中写动态sql这些标签:if、where、set、trim、foreach、choose的作用是什么,怎么用?
  • 7 Python的模块和包
  • 【JavaWeb 篇】使用Servlet、JdbcTemplate和Durid连接池实现用户登录功能与测试
  • 【Unity3D赛车游戏】【六】如何在Unity中为汽车添加发动机和手动挡变速?
  • 【Go 基础篇】切片:Go语言中的灵活数据结构
  • 龙芯2K1000LA移植交叉编译环境以及QT
  • javaee spring依赖注入之spel方式
  • 【Java集合学习1】ArrayList集合学习及集合概述分析
  • TouchGFX之调试
  • C# winform加载yolov8模型测试(附例程)
  • 浙大陈越何钦铭数据结构07-图6 旅游规划
  • VUE笔记(七)项目登录
  • 大语言模型之六- LLM之企业私有化部署
  • Python3 列表
  • OpenCV基础知识(8)— 图形检测
  • Java虚拟机
  • c++学习 之 函数重载注意事项
  • 2023-08-27 LeetCode每日一题(合并区间)
  • C#,数值计算——调适数值积分法(adaptive quadrature)的计算方法与源程序
  • 微信小程序发布迭代版本后如何提示用户强制更新新版本
  • 星际争霸之小霸王之小蜜蜂(七)--消失的子弹
  • Hadoop入门机安装hadoop