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请求传递普通参数

Android 对象属性备注别名 对象名.属性名_java

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服务器,发送请求

成功接收到参数

Android 对象属性备注别名 对象名.属性名_postman_02

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

否则接收不到参数


Android 对象属性备注别名 对象名.属性名_Android 对象属性备注别名_03

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请求传递普通参数

Android 对象属性备注别名 对象名.属性名_开发语言_04

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 启动服务器,发送请求,打印接收到的参数

Android 对象属性备注别名 对象名.属性名_开发语言_05

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

Android 对象属性备注别名 对象名.属性名_请求参数_06

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发送请求,后台打印结果

Android 对象属性备注别名 对象名.属性名_请求参数_07

注意事项:请求参数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属性参数

Android 对象属性备注别名 对象名.属性名_开发语言_08

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

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

Android 对象属性备注别名 对象名.属性名_请求参数_09

6.数组类型参数

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

6.1 postman请求URL以及参数定义

Android 对象属性备注别名 对象名.属性名_开发语言_10

6.2 后台java代码的controller方法

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

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

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

Android 对象属性备注别名 对象名.属性名_请求参数_11

7. 集合类型参数

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

Android 对象属性备注别名 对象名.属性名_Android 对象属性备注别名_12

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

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

Android 对象属性备注别名 对象名.属性名_postman_13