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

SpringMVC(三)请求

目录

一、RequestMapping注解

1.RequestMapping的属性

实例

1.在这里创建文件,命名为Test:

2.复现-返回一个页面:

创建test界面(随便写点什么):

Test文件中编写:

​编辑 运行:

3.不返回界面,返回字符串:

编辑Test文件:​编辑

实现这两个小功能后的完整的Test:

2.RequestMapping的请求参数绑定

3.入参情况

1.请求携带一个参数:

2.请求携带两个入参

 3.(两个及以上)可以以对象的形式传参

4.杂糅传参

 5.用form表单的形式提交

二、不常用的注解

1.RequestParam注解


经过前面对SpringMVC的配置和原理的讲解,接着进行SpringMVC请求的相关讲解。

一、RequestMapping注解

RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系

RequestMapping注解可以作用在方法和类上

1. 作用在类上:第一级的访问目录

2. 作用在方法上:第二级的访问目录

3. 细节:路径可以不编写 / 表示应用的根目录开始

1.RequestMapping的属性

1. path 指定请求路径的url

2. value value属性和path属性是一样的

3. mthod 指定该方法的请求方式(通常是GET和POST请求,默认GET请求)

现在以实例的形式进行讲解:

实例

1.在这里创建文件,命名为Test:

2.复现-返回一个页面:

在里面写一个方法test1--表示返回一个名为test的界面(既然这里return用了,那么就要保证html中当真存在这么一个方法--去创建)

创建test界面(随便写点什么):

Test文件中编写:
 运行:

注意这里项目名称后的一级请求/二级请求,返回test.html界面内容(中文乱码,正常)

3.不返回界面,返回字符串:
编辑Test文件:

更改后端就要重启服务器:

同样步骤得到(这里显示的就是String字符串而非界面了):

实现这两个小功能后的完整的Test:

package controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller //首先先打上注解-创建对象并且标明这里是Controller层
@RequestMapping(path="/test") //一级请求路径(写不写/都无所谓)
public class Test {/*** /role/save* method="当前方法允许请求方式能访问"* params="请求路径上传参数"* @return*///打开页面的请求对应@RequestMapping(path="/t1",method={RequestMethod.GET}) //二级请求路径//这里指定了方法为GET(默认是GET),除此之外还有POST等等public String test1(){return "test";}//返回字符串@ResponseBody@RequestMapping(path="/t2")public String test2(){return "hello!";}}

2.RequestMapping的请求参数绑定

(1). 绑定机制

1. 表单提交的数据都是k=v格式的 username=haha&password=123

2. SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的

3. 要求:提交表单的name和参数的名称是相同的

(2). 支持的数据类型

1. 基本数据类型和字符串类型

2. 实体类型(JavaBean)

3. 集合数据类型(List、map集合等)

基本数据类型和字符串类型

1. 提交表单的name和参数的名称是相同的

2. 区分大小写

实体类型(JavaBean)

1. 提交表单的name和JavaBean中的属性名称需要一致

2. 如果一个JavaBean类中包含其他的引用类型,那么表单的name属性需要编写成:对象.属性 例如:address.name

给集合属性数据封装

1. JSP页面编写方式:list[0].属性

3.入参情况

1.请求携带一个参数:

这里给出一个例子(同样这个例子是写在Test文件中的):

//一个入参时@ResponseBody@RequestMapping(path="/t3",method={RequestMethod.GET}) //二级请求路径public String test3(String name){return name;}

重启服务器:

 将入参携带在请求中:

2.请求携带两个入参

这里给出一个例子(同样这个例子是写在Test文件中的):

 //两个及以上不同类型入参@ResponseBody@RequestMapping(path="/t4",method={RequestMethod.GET}) //二级请求路径public String test4(String name,Integer age,char sex){return "name="+name+"age="+age+"sex="+sex;}

重启服务器:

将入参携带在请求中:

 3.(两个及以上)可以以对象的形式传参

创建User类(生成get和set方法):

这里给出一个例子(同样这个例子是写在Test文件中的):

//对象的形式传参@ResponseBody@RequestMapping(path="/t5",method={RequestMethod.GET}) //二级请求路径public String test5(User user){return user.toString();}

重启服务器:

 将入参携带在请求中:

这里就会遵循对象的原则(只传一个时,其他默认为空)

4.杂糅传参

这里给出一个例子(同样这个例子是写在Test文件中的):

//杂糅着用@ResponseBody@RequestMapping(path="/t6",method={RequestMethod.GET}) //二级请求路径public String test7(User user,String father){return user.toString()+father;}

重启服务器:

 将入参携带在请求中:

 5.用form表单的形式提交

前面我们的传参都是通过请求携带的,现在我们来实现通过Form表单来实现入参:

首先修改想要return的前端界面test.html:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>我是一个复现界面的例子,我是界面!</h1>
<!--加上表单-->
<form action="/StringMVCTestTwice/test/t5" method="get"><input type="text" name="name"/><br/><input type="text" name="age"/><br/><input type="text" name="sex"/><br/><input type="submit"/>
</form>
<!--表单结束-->
</body>
</html>

并在Test文件中添加:

//form的形式传参@RequestMapping(path="/t7",method={RequestMethod.GET}) //二级请求路径public String test7(User user){return "test";}

随后重启服务器去调用这个请求:

点击提交(就会自动识别跳转到 t5请求):

二、不常用的注解

1.RequestParam注解

1. 作用:把请求中的指定名称的参数传递给控制器中的形参赋值

2. 属性

1. value:请求参数中的名称

2. required:请求参数中是否必须提供此参数,默认值是true,必须提供

3. 代码如下:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;@Controller
@RequestMapping("/dept")
public class DeptController {@RequestMapping("/save")public String save(@RequestParam(value = "username",required = false) String name){System.out.println(name);return "suc";}
}
http://www.lryc.cn/news/516057.html

相关文章:

  • Node.js应用程序遇到了内存溢出的问题
  • 如何构建云原生时空大数据平台?
  • 二极管钳位电路分享
  • 腾讯云智能结构化 OCR:驱动多行业数字化转型的核心引擎
  • 19.3、Unix Linux安全分析与防护
  • JVM对象内存结构
  • 联邦学习和大模型相结合: 数据隐私,提升训练效率,架构优化
  • 命令别名和命令历史
  • 打造三甲医院人工智能矩阵新引擎(二):医学影像大模型篇--“火眼金睛”TransUNet
  • Scade pragma: separate_io
  • IWOA-GRU和GRU时间序列预测(改进的鲸鱼算法优化门控循环单元)
  • “知识图谱AI教学辅助系统:点亮智慧学习的新灯塔
  • 产品 防尘防水IP等级 划分与实验方法
  • 【微服务】1、引入;注册中心;OpenFeign
  • 01、Docker学习,第一天:简单入门与安装
  • C++STL中iomanip的使用与细节
  • 3.C语言变量的基础概念与使用
  • Go语言中的逃逸分析:深入浅出
  • 【FlutterDart】 拖动改变 widget 的窗口尺寸大小GestureDetector~简单实现(10 /100)
  • 【论文笔记】LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models
  • 数据挖掘——朴素贝叶斯分类
  • unity中的UI系统---GUI
  • 鸿蒙Flutter实战:15-Flutter引擎Impeller鸿蒙化、性能优化与未来
  • C语言冒泡排序教程简介
  • Fabric链码部署测试
  • k620老显卡,装cuda.等。
  • 网站常用功能模块-鉴权
  • 直接插入排序、折半插入排序、2路插入排序、希尔排序
  • FQ-GAN代码解析
  • 如何恢复已删除的 Telegram 消息 [iOSamp;Android]