3. 请求

1. 请求映射路径

@RequestMapping注解

  • 名称:@RequestMapping
  • 类型:方法注解 类注解
  • 位置:SpringMVC控制器方法定义上方
  • 作用:设置当前控制器方法请求访问路径,如果设置在类上统一设置当前控制器方法请求访问路径前缀
  • 范例
@Controller
//类上方配置的请求映射与方法上面配置的请求映射连接在一起,形成完整的请求映射路径
@RequestMapping("/user")
public class UserController {
    //请求路径映射
    @RequestMapping("/save") //此时save方法的访问路径是:/user/save
    @ResponseBody
    public String save(){
        System.out.println("user save ...");
        return "{'module':'user save'}";
    }
}

2.GET请求传递普通参数

普通参数:url地址传参,地址参数名与形参变量名相同,定义形参即可接收参数

2.1 postman发送get请求传递普通参数

image-20221223135916431

2.2 后台的Controller的方法定义与URL地址参数名相同的形参变量名接收

如果postman发送请求时携带多个参数,则在方法的参数列表定义一样个数的参数接收即可

package com.zhang.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class AcceptParametersController {

    @RequestMapping("/acceptCommonParammeters")
    @ResponseBody
    public String acceptCommonParammeters(String name){
        
        System.out.println("接收到的普通参数是:"+name);
        return "Hello SpringMvc";

    }
}

2.3 启动tomcat服务器,发送请求

成功接收到参数

image-20221223140444577

2.4当请求参数名与形参变量名不同,使用@RequestParam绑定参数关系

否则接收不到参数

image-20221223145225317

java代码

//普通参数:请求参数名与形参名不同时,使用@RequestParam注解关联请求参数名称与形参名称之间的关系
    @ResponseBody
    @RequestMapping("/differentNamesParammeters")
    public String differentNamesParammeters(@RequestParam("username") String name, int age){
        System.out.println("姓名:"+name+",年龄:"+age);
        return "Hello SpringMvc";
    }

2.5 解决GET请求中文乱码问题。

  • 如果传递的参数是中文,会出现接收到的参数出现了中文乱码问题。
  • 原因:tomcat 8.5版本之后GET请求就不再出现中文乱码问题,但是现在使用的是tomcat7插件,所以会出现GET请求中文乱码问题。
  • 解决:在pom.xml添加tomcat7插件处配置UTF-8字符集,解决GET请求中文乱码问题。
<build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <port>80</port><!--tomcat端口号-->
          <path>/</path> <!--虚拟目录-->
          <uriEncoding>UTF-8</uriEncoding><!--访问路径编解码字符集-->
        </configuration>
      </plugin>
    </plugins>
  </build>

3. POST请求传递普通参数

普通参数:form表单post请求传参,表单参数名与形参变量名相同,定义形参即可接收参数

3.1 postman发送post请求传递普通参数

image-20221223141332220

3.2 后台代码的Controller定义方法形参接收

package com.zhang.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class AcceptParametersController {

    @RequestMapping("/acceptCommonParammeters")
    @ResponseBody
    public String acceptCommonParammeters(String name,int age){

        System.out.println("姓名:"+name+",年龄:"+age);
        return "Hello SpringMvc";

    }
}

3.3 启动服务器,发送请求,打印接收到的参数

image-20221223141713326

3.4 POST请求中文乱码处理

在加载SpringMVC配置的配置类中指定字符过滤器。

public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    protected Class<?>[] getRootConfigClasses() {
        return new Class[0];
    }

    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    //乱码处理
    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        return new Filter[]{filter};
    }
}

4. POJO类型参数

POJO参数:请求参数名与形参对象属性名相同,定义POJO类型形参即可接收参数

4.1 postman请求url

image-20221223150258115

4.2 student

package com.zhang.config.pojo;

import lombok.Data;

@Data
public class Student {

    private String name;
    private int age;
}

4.3 Controller方法

   //POJO参数:请求参数与形参对象中的属性对应即可完成参数传递
   @ResponseBody
    @RequestMapping("/acceptPojoParammeters")
    public String  acceptPojoParammeters(Student student){

        System.out.println("接收到的学生对象接收参数:"+student);
        return "Hello SpringMvc";
    }

4.4 postman发送请求,后台打印结果

image-20221223150607326

注意事项:请求参数key的名称要和POJO中属性的名称一致,否则无法封装。

5. 嵌套POJO类型参数

POJO对象中包含POJO对象

4.1 Student

package com.zhang.config.pojo;

import lombok.Data;

@Data
public class Student {

    private String name;
    private int age;
    private Address address;
}

4.2 Address

package com.zhang.config.pojo;

import lombok.Data;

@Data
public class Address {
    private String province;
    private String city;
}

4.3 嵌套POJO参数:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数

image-20221223151708008

注意事项:请求参数key的名称要和POJO中属性的名称一致,否则无法封装。

4.4 postman发送请求,后台打印结果

image-20221223151804700

6.数组类型参数

数组参数:请求参数名与形参对象属性名相同且请求参数为多个,定义数组类型即可接收参数

6.1 postman请求URL以及参数定义

image-20221223152737356

6.2 后台java代码的controller方法


    @ResponseBody
    @RequestMapping("/acceptArrayParammeters")
    public String  acceptArrayParammeters(String[] hobbies){

        System.out.println("接收到的数组是:"+ Arrays.toString(hobbies));
        return "Hello SpringMvc";
    }

6. post发送请求,后台打印结果

image-20221223152952117

7. 集合类型参数

集合保存普通参数:请求参数名与形参集合对象名相同且请求参数为多个,@RequestParam绑定参数关系

image-20221223153427698


    @ResponseBody
    @RequestMapping("/acceptListParammeters")
    public String  acceptListParammeters(@RequestParam("hobbies") List<String> hobbies){

        System.out.println("接收到的集合是:"+ (hobbies));
        return "Hello SpringMvc";
    }

image-20221223153500131

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖分你俩颗~~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值