SpringMVC—RequestMapping注解

一、RequestMapping注解

@RequestMapping注解:是Spring MVC框架中的一个控制器映射注解,用于将请求映射到相应的处理方法上,具体来说,他可以将指定URL的请求绑定到一个特定的方法或类上,从而实现对请求的处理和响应。

1.RequestMapping的value属性

package com.pon;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class Order {@RequestMapping(value = {"/e","/b"})public String o(){return "index";}
}

多个vlue属性在同一RequestMapping上,可以作为同一地址·。

控制类:

package com.pon;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class Order {@RequestMapping(value = {"/e","/b"})public String o(){return "index";}
}

index.html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>你好</h1>
</body>
</html>

 

1)Ant风格的value

3)value使用占位符

URL使用RESTFul风格:

package com.pon;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class Order {@RequestMapping(value = {"/e","/b"})public String o(){return "index";}@RequestMapping(value = "/login/{username}/{password}")//value的占位符public String log(@PathVariable("username")String username,@PathVariable("password")String password){System.out.println("用户名"+username+"密码"+password);return "index";}
}

处理器端:

2.RequestMapping的method属性

超链接发送的请求方式为get请求。

在controller包下的Hello类:

package com.pon.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;@Controller
public class Hello {@RequestMapping("/")public String first(){return "first";}//请求映射只支持post请求@RequestMapping(value = {"/ljx"},method = {RequestMethod.POST})public String hello(){return "hi";}
}

first.xml:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>首页</h1>
<a th:href="@{/ljx}">Hello界面</a>
</body>
</html>

hi.xml:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>你好 MVC</h1>
</body>
</html>

@RequestMapping的派生注解

验证GetMapping()

在controller包下的Hello类:

@Controller
public class Hello {@RequestMapping("/")public String first(){return "first";}@RequestMapping(value = {"/ljx"},method = {RequestMethod.POST})public String hello(){return "hi";}@GetMapping("/get")public String getMapping(){return "hi";}
}

first.xml:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>首页</h1>
<a th:href="@{/lix}">Hello界面</a>
<a th:href="@{/get}">Get界面</a>
</body>
</html>

hi.xml:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>你好 MVC</h1>
</body>
</html>

3.RequestMapping的params属性

params在requestmapping中赋值和method在同一位置。

4.RequestMapping的headers属性

二、SpringMvc获取请求参数 

1通过ServletAPI获取

testContorller类下:

package com.pon.controller;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController {@RequestMapping("/parama")public String test(HttpServletRequest request){String s= request.getParameter("username");String r= request.getParameter("password");System.out.println("name="+s+",password="+r);return "test";}
}

 先访问首页的first.html:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>首页</h1>
<form th:action="@{/format}"><input type="submit" value="表单"><br>
</form>
<a th:href="@{/parama(username='admin',password=123456)}">获取请求参数</a>
</body>
</html>

test.html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>获取到请求参数</h1>
</body>
</html>

 

2通过控制器方法的形参获取请求参数

 testContorller类下:

@Controller
public class TestController {
@RequestMapping("/testparam")public String testparam( String username,  String password){System.out.println("username"+username+"password"+password);return "hi";}
}

first.html页面中调用/testparam路径:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>首页</h1>
<form th:action="@{/format}"><input type="submit" value="表单"><br>
</form>
<a th:href="@{/parama(username='admin',password=123456)}">获取请求参数</a>
<a th:href="@{/testparam(username='adminmm',password=1234)}">控制器方法获取请求参数</a>
</body>
</html>

hi.html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>你好 MVC</h1>
</body>
</html>

3@RequestParam

当HTML中的属性名与获取请求参数中的名字不一样,需要使用@RequestParam。

例如:

在控制器类中:

@Controller
public class TestController {
@RequestMapping("/testparam")public String testparam( String username,  String password){System.out.println("username:"+username+",password:"+password);return "hi";}
}

首页first.html界面:

<a th:href="@{/testparam(usern='adminmm',password=1234)}">控制器方法获取请求参数</a><br>

当参数不一样时,页面可以正常访问,但控制台获取不到参数。

解决方案,在控制类的构造函数上,添加@RequestParam注解,其他参数不变。

@Controller
public class TestController {
@RequestMapping("/testparam")public String testparam(@RequestParam("usern")String username, String password){System.out.println("username:"+username+",password:"+password);return "hi";}
}

4@RequsetHeader

请求头信息其实就是:localhost:8080

5@CookieValue

6通过实体类形参获取请求参数 

在首页first.html中定义一个表单:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>首页</h1>
<form th:action="@{/pojo}" method="post">用户名:<input type="text" name="username"><br>密码  :<input type="password" name="password"><br>性别:<input type="radio" name="sex" value="男">男<input type="radio" name="sex" value="女">女<br>年龄:<input type="text" name="age"><br><input type="submit" value="实体类请求参数">
</form>
</body>
</html>

根据表单的属性创建一个实体类对象User:

package com.pon.pojo;
public class User {private String username;private String password;private String sex;private Integer age;public User() {}public User(String username, String password, String sex, Integer age) {this.username = username;this.password = password;this.sex = sex;this.age = age;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "User{" +"username='" + username + '\'' +", password='" + password + '\'' +", sex='" + sex + '\'' +", age=" + age +'}';}
}

在控制类中写访问页面的路径:

@Controller
public class TestController {@RequestMapping("/pojo")public String Pojo(User user){System.out.println(user);return "hi";}
}

hi.xml:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>success</h1>
</body>
</html>

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

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

相关文章

汇编语言实验三 顺序结构程序设计

编写一个32为加法程序&#xff0c;将已经定义好的双字变量X、Y相加之和存放到变量Z中&#xff08;不考虑溢出&#xff09;。 .model small,c .stack 200 .data x dd 22223333H y dd 44445555H z dd ? ;Z最终值为66668888H .code .startup mov ax,word ptr x ;ptr用来指示操作…

leetcode498 对角线遍历

题目 给你一个大小为 m x n 的矩阵 mat &#xff0c;请以对角线遍历的顺序&#xff0c;用一个数组返回这个矩阵中的所有元素。 示例 输入&#xff1a;mat [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,4,7,5,3,6,8,9] 解析 本题目主要考察的就是模拟法&#xff0c;首…

【C语言】解决C语言报错:Null Pointer Dereference

文章目录 简介什么是Null Pointer DereferenceNull Pointer Dereference的常见原因如何检测和调试Null Pointer Dereference解决Null Pointer Dereference的最佳实践详细实例解析示例1&#xff1a;未初始化的指针示例2&#xff1a;释放内存后未将指针置为NULL示例3&#xff1a;…

9.回文数字

给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数 是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xff0c;121 是回文&#xff0c;而…

洛谷:P5705【深基2.例7】数字反转

1. 题目链接 https://www.luogu.com.cn/problem/P5705 【深基2.例7】数字反转 2. 题目描述 输入一个大于等于100&#xff0c;小于1000的小数点后一位的浮点数&#xff0c;要求把这个数翻转过来 输入&#xff1a;一行一个浮点数 输出&#xff1a;一行一个浮点数 3. 我的思考 …

从素人到音乐大师,AI降低创作门槛的背后思考

AI在音乐领域的应用无疑为创作带来了革命性的变化&#xff0c;既创造了新的可能性&#xff0c;也引发了对其潜在影响的深刻讨论。 创造方面&#xff1a; 降低门槛与激发创新&#xff1a;AI音乐大模型使得音乐创作不再是专业人士的专属领地&#xff0c;普通人也能利用AI技术快…

MacOS - 启动台(LaunchPad)缺少应用软件图标

问题描述 MacOS 有时会遇到已安装的软件在启动台&#xff08;LaunchPad&#xff09;中找不到的 bug&#xff0c;这种情况在新安装软件时易出现。 原因分析 首先去访达&#xff08;Finder&#xff09;中的“应用程序”文件夹确认是否已安装某软件&#xff08;LaunchPad 中图标…

next是什么???

大家都知道最近出了一个很火的框架&#xff0c;Next.js框架。很多大公司&#xff08;例如&#xff1a;Tencent腾讯&#xff0c;docker&#xff0c;Uber&#xff09;的项目都在使用这个Next.js框架。那Next.js到底是一个什么框架呢&#xff1f;Next.js有什么优点呢&#xff1f;今…

Linux--08---挂载分区

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.查看系统磁盘分区情况1.lsblk 查看2.fdisk -l 2.挂载未分区磁盘1. 创建分区2. 格式化分区3. 创建挂载点4. 挂载分区5. 更新 /etc/fstab6.验证挂载 3.修改挂载的磁…

并发修改账户余额不一致问题与解决方法悲观锁select…for update

并发修改账户余额不一致问题与解决方法悲观锁select…for update 问题描述&#xff1a; a事务进行增加金额操作&#xff0c;需要操作account表 对余额balance进行加减 并生成操作明细account_operation_detail a事务查询account 余额100 对余额进行进行加10 b事务查询accou…

如何在Android开发中应用SOLID原则

SOLID 原则是面向对象编程的一组设计原则&#xff0c;有助于开发健壮、可维护和可扩展的软件系统。SOLID 是以下五个原则的首字母缩写&#xff1a; 单一职责原则&#xff08;Single Responsibility Principle, SRP&#xff09;开放封闭原则&#xff08;Open/Closed Principle,…

Docker 技术入门与实战:docker安装

1. 引言 在本节中&#xff0c;我们将讨论 Docker 的安装步骤&#xff0c;无论您是在 Linux、Windows 还是 macOS 上&#xff0c;都可以通过简单的步骤完成安装&#xff0c;并验证 Docker 是否成功安装&#xff0c;为后续学习和实践奠定基础。 2. 安装 Docker 在 Linux 上安装…

谱写数字金融大文章,金仓助力金融强国建设

中央金融工作会议提出&#xff0c;“做好科技金融、绿色金融、普惠金融、养老金融、数字金融五篇大文章”&#xff0c;这既是金融领域推进高质量发展的内在要求&#xff0c;也是建设金融强国的有效实现路径。人大金仓积极践行国家战略&#xff0c;贯彻中央金融工作精神&#xf…

2024-Pop!_OS新版本,新桌面环境的消息

原文:A Blog to Satisfy Your Monthly COSMIC Fix(es) - System76 Blog Pop!_OS开发团队正在为他们的发行版开发一个定制桌面。这个新的桌面环境被称为COSMIC&#xff0c;是用Rust语言编写的&#xff0c;超快的COSMIC应用商店几乎已经实现&#xff01;alpha版本只剩下一些次要…

一个跟随随便移动的div盒子(vue版本)

废话不多说&#xff0c;直接上代码&#xff0c;已验证&#xff0c;功能正常 代码来源GPT4o:GPT4o <template><div id"app"><div id"followMe" :style"divStyle">跟随鼠标的Div</div></div> </template> &l…

【浏览器】什么是第三方Cookie?

第三方Cookie是指由您当前访问的网站以外的其他网站设置的Cookie。这些Cookie通常用于跟踪用户的浏览行为和跨网站的广告投放。以下是关于第三方Cookie的详细解释。 什么是Cookie&#xff1f; Cookie是小型数据文件&#xff0c;由网站存储在用户的浏览器中&#xff0c;用于保…

Python_编程基础

Python编程基础 0、简单介绍 解释型语言&#xff1a;一边编译一边运行&#xff0c;不需要进行编译&#xff0c;运行效率比较低 解释器 JavaScript-浏览器 python.exe php.exe 编译型语言&#xff1a;运行前需要进行编译&#xff0c;运行效率比较高 C .c->.exe 组合&…

【自撰写】【国际象棋入门】第5课 常见开局战术组合(一)

第5课 常见开局战术组合&#xff08;一&#xff09; 本次课中&#xff0c;我们简要介绍几种常见的开局战术组合。开局当中&#xff0c;理想的情况是&#xff0c;己方的两只&#xff08;或以上&#xff09;轻子相互配合&#xff0c;或者与己方的兵配合&#xff0c;在完成布局的…

windows下使用Qt的MinGW8.1.0编译grpc

参考连接&#xff1a;https://blog.csdn.net/u014340533/article/details/125528855 1、编译环境 操作系统&#xff1a;windows10 Qt版本&#xff1a;5.15.2 编译器&#xff1a;MinGW8.1.0 CMake&#xff1a;3.23.1 Git&#xff1a;2.39.2 NASM&#xff1a;2.14.02 配置…

Java 打包编译、运行报错

无法访问com.sun.beans.introspect.PropertyInfo-CSDN博客 [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeCon…