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

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

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

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

实例

1.在这里创建文件,命名为Test:
2.复现-返回一个页面:

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

创建test界面(随便写点什么):
Test文件中编写:
运行:

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

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

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

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

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

java 复制代码
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文件中的):

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

重启服务器:

将入参携带在请求中:

2.请求携带两个入参

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

java 复制代码
 //两个及以上不同类型入参
    @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文件中的):

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

重启服务器:

将入参携带在请求中:

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

4.杂糅传参

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

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

重启服务器:

将入参携带在请求中:

5.用form表单的形式提交

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

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

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文件中添加:

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

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

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

二、不常用的注解

1.RequestParam注解

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

  2. 属性

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

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

  5. 代码如下:

java 复制代码
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";
    }
}
相关推荐
hero.fei15 分钟前
RoaringBitmap在SpringBoot中的使用以及与BitSet对比
java·spring boot·spring
Traving Yu17 分钟前
Spring源码与框架原理
java·后端·spring
tsyjjOvO40 分钟前
【Spring Data Redis 从入门到实战】一站式掌握 Redis 操作与封装
redis·spring
一定要AK9 小时前
Spring 入门核心笔记
java·笔记·spring
凯尔萨厮9 小时前
创建SpringWeb项目(Spring2.0)
spring·mvc·mybatis
凯尔萨厮15 小时前
Spring学习笔记(基于配置文件)
spring
bobasyu15 小时前
Claude Code 源码笔记 -- queryLoop
java·笔记·spring
计算机学姐15 小时前
基于SpringBoot的高校竞赛管理系统
java·spring boot·后端·spring·信息可视化·tomcat·mybatis
砍材农夫15 小时前
spring-ai 第七模型介绍-向量模型
java·人工智能·spring
我叫张土豆16 小时前
Spring AI 集成 MCP 服务踩坑实录:SSE 与 Streamable HTTP 协议的兼容性深度剖析
人工智能·spring·http