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

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.lryc.cn/news/375963.html

相关文章:

  • Java线程池基本概念
  • 智能车联网安全发展形势、挑战
  • AWS概述
  • MySQL常见面试题自测
  • c语言回顾-函数递归
  • 消息队列-RabbitMQ-延时队列实现
  • 【热门开源项目推荐】满足不同程序员的需求与关注点
  • 一文理清GO语言日志库实现开发项目中的日志功能(rotatelogs/zap分析)
  • 【Go语言精进之路】构建高效Go程序:了解string实现原理并高效使用
  • HDFS 常见命令
  • 示例:WPF中应用Grid的SharedSizeGroup设置整齐的布局
  • React的form表单自定义校验规则
  • 一种新的一维时间序列信号盲解卷积算法(以旋转机械故障诊断为例,MATLAB环境)
  • 618电商是社区网站入局的好时机吗?
  • 不知道密码,一样能卸载瑞星esm防病毒终端安全防护系统
  • Chromium 开发指南2024 Mac篇-安装和配置depot_tools工具(三)
  • 微信小程序-路由和页面跳转API
  • PWR电源控制
  • 【记录46】【案例】echarts 柱状图
  • Github2024-06-12 开源项目日报 Top10
  • 茶艺师服务师傅小程序APP源码(APP+小程序+公众号+H5)
  • 【正则表达式】入门
  • 制造业为什么需要ERP企业管理软件?
  • JavaScript Prototype
  • Web Works API 和 Promise 的对比和区别
  • jeecg快速启动(附带本地运行可用版本下载)
  • 【PPT教程】一键重置幻灯片背景的方法,新建幻灯片带默认背景
  • NVIDIA新模型Nemotron-4:98%的训练数据是合成生成的,你敢信?
  • 深度神经网络——什么是NLP(自然语言处理)?
  • 05-5.5.1 哈夫曼树