一篇文章带你掌握主流服务层框架——SpringMVC( 五 )

我们的GET方式直接在网页后用?和&来书写传递参数:

一篇文章带你掌握主流服务层框架——SpringMVC

文章插图
我们的POST方式只能在下方的body中书写参数:
一篇文章带你掌握主流服务层框架——SpringMVC

文章插图
然后我们需要注意到的是这里的中文同样会出现乱码行为
这次我们选择在ServletContainersInitConfig中处理数据:
// 下述代码基本属于我们创建项目的固定代码package com.itheima.config;import org.springframework.web.filter.CharacterEncodingFilter;import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;import javax.servlet.Filter;public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {protected Class<?>[] getRootConfigClasses() {return new Class[0]{SpringConfig.class};}protected Class<?>[] getServletConfigClasses() {return new Class[]{SpringMvcConfig.class};}protected String[] getServletMappings() {return new String[]{"/"};}//乱码处理@Overrideprotected Filter[] getServletFilters() {// CharacterEncodingFilter 属于处理中文编码的过滤器,我们直接创建即可(一次性操作)CharacterEncodingFilter filter = new CharacterEncodingFilter();filter.setEncoding("UTF-8");return new Filter[]{filter};}}按参数方式我们按参数来分类主要分为五种:
  • 普通参数
  • POJO类
  • 嵌套式POJO类
  • 数组参数
  • 集合参数
我们下面来一一介绍
普通参数普通参数:请求参数和形参变量名相同时,自动匹配
package com.itheima.controller;import com.itheima.domain.User;import org.springframework.format.annotation.DateTimeFormat;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import java.util.Arrays;import java.util.Date;import java.util.List;//请求参数@Controllerpublic class UserController {//普通参数:请求参数与形参名称对应即可完成参数传递@RequestMapping("/commonParam")@ResponseBodypublic String commonParam(String name ,int age){System.out.println("普通参数传递 name ==> "+name);System.out.println("普通参数传递 age ==> "+age);return "{'module':'common param'}";}}Postman操作:
一篇文章带你掌握主流服务层框架——SpringMVC

文章插图
这里需要注意:当请求参数名与形参名不同时 , 使用@RequestParam注解关联请求参数名称与形参名称之间的关系
package com.itheima.controller;import com.itheima.domain.User;import org.springframework.format.annotation.DateTimeFormat;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import java.util.Arrays;import java.util.Date;import java.util.List;//请求参数@Controllerpublic class UserController {//普通参数:请求参数名与形参名不同时,使用@RequestParam注解关联请求参数名称与形参名称之间的关系@RequestMapping("/commonParamDifferentName")@ResponseBodypublic String commonParamDifferentName(@RequestParam("name") String userName , int age){System.out.println("普通参数传递 userName ==> "+userName);System.out.println("普通参数传递 age ==> "+age);return "{'module':'common param different name'}";}}Postman操作:
一篇文章带你掌握主流服务层框架——SpringMVC

文章插图
@RequestParam:绑定请求参数与处理器方法形参间的关系
包含有两个参数
required:是否为必传参数
defaultValue:参数默认值
POJO参数POJO参数:请求参数名与形参对象属性名相同 , 定义POJO类型形参即可接收参数
package com.itheima.controller;import com.itheima.domain.User;import org.springframework.format.annotation.DateTimeFormat;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import java.util.Arrays;import java.util.Date;import java.util.List;//请求参数@Controllerpublic class UserController {//POJO参数:请求参数与形参对象中的属性对应即可完成参数传递@RequestMapping("/pojoParam")@ResponseBodypublic String pojoParam(User user){System.out.println("pojo参数传递 user ==> "+user);return "{'module':'pojo param'}";}}

推荐阅读