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请求传递普通参数
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服务器,发送请求
成功接收到参数
2.4当请求参数名与形参变量名不同,使用@RequestParam绑定参数关系
否则接收不到参数
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请求传递普通参数
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 启动服务器,发送请求,打印接收到的参数
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
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发送请求,后台打印结果
注意事项:请求参数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属性参数
注意事项:请求参数key的名称要和POJO中属性的名称一致,否则无法封装。
4.4 postman发送请求,后台打印结果
6.数组类型参数
数组参数:请求参数名与形参对象属性名相同且请求参数为多个,定义数组类型即可接收参数
6.1 postman请求URL以及参数定义
6.2 后台java代码的controller方法
@ResponseBody
@RequestMapping("/acceptArrayParammeters")
public String acceptArrayParammeters(String[] hobbies){
System.out.println("接收到的数组是:"+ Arrays.toString(hobbies));
return "Hello SpringMvc";
}
6. post发送请求,后台打印结果
7. 集合类型参数
集合保存普通参数:请求参数名与形参集合对象名相同且请求参数为多个,@RequestParam绑定参数关系
@ResponseBody
@RequestMapping("/acceptListParammeters")
public String acceptListParammeters(@RequestParam("hobbies") List<String> hobbies){
System.out.println("接收到的集合是:"+ (hobbies));
return "Hello SpringMvc";
}