SSM框架|SpringMVC获得请求数据类型

目录

SpringMVC获得请求数据
获得请求参数
基本数据类型
获得POJO类型参数
获得数组类型参数
获得集合类型参数
静态资源访问的开启

SpringMVC获得请求数据 获得请求参数 客户端请求参数的格式是:name=value&name=value.....
服务器端要获得请求的参数,有时还需要进行数据的封装,SpringMVC可以接受如下类型的参数:

  • 基本数据类型
  • pojo类型 参数
  • 数据类型参数
  • 集合类型参数
基本数据类型
//配置类,使用注解把这个类放到容器中 @Controller @RequestMapping(value="https://www.it610.com/user") public class userController { @RequestMapping("/quick11") @ResponseBody public void save11(String username,int age){ System.out.println(username); System.out.println(age); } }

这个方法不进行页面跳转和回写数据@ResponseBody和void)
然后在网页访问书写参数
SSM框架|SpringMVC获得请求数据类型
文章图片

就可以看到控制台打印出张三 18,这就是基本数据类型
获得POJO类型参数
Controller中的业务方法的pojo参数的属性名与请求参数的name一直,参数值会自动映射匹配
如:
SSM框架|SpringMVC获得请求数据类型
文章图片

上图中的username和age属于User之中的,SpringMVC就会自动将这些值加进User去
pojo包下的User类
package com.pojo; public class User { private int age; private String username; public User() {} public User(int age, String username) { this.age = age; this.username = username; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Override public String toString() { return "User{" + "age=" + age + ", username='" + username + '\'' + '}'; } }

//配置类,使用注解把这个类放到容器中 @Controller @RequestMapping(value="https://www.it610.com/user") public class userController { @RequestMapping("/quick12") @ResponseBody public void save12(User user){ System.out.println(user); } }

SSM框架|SpringMVC获得请求数据类型
文章图片

控制台可以看到
SSM框架|SpringMVC获得请求数据类型
文章图片

获得数组类型参数
Controller的业务方法数组名称与请求参数的name一致,参数值救赎自动映射配置。
//配置类,使用注解把这个类放到容器中 @Controller @RequestMapping(value="https://www.it610.com/user") public class userController { @RequestMapping("/quick13") @ResponseBody public void save13(String[] strs){ //数组直接打印是地址,为了更清楚看到,用Arrays,asList(作为集合打印) System.out.println(Arrays.asList(strs)); } }

网址搜素输入
SSM框架|SpringMVC获得请求数据类型
文章图片

控制台显示
SSM框架|SpringMVC获得请求数据类型
文章图片

获得集合类型参数
获得集合参数时,要将集合参数包装到pojo对象才可以
所以我们在pojo包下创建一个vo对象
package com.pojo; import java.util.List; public class VO { private List userList; public VO(List userList) { this.userList = userList; }public List getUserList() { return userList; }public void setUserList(List userList) { this.userList = userList; }@Override public String toString() { return "VO{" + "userList=" + userList + '}'; } }

userController类下
//配置类,使用注解把这个类放到容器中 @Controller @RequestMapping(value="https://www.it610.com/user") public class userController { @RequestMapping("/quick14") @ResponseBody public void save14(VO vo){ System.out.println(vo); } }

form.jsp页面下
Insert title here - 锐客网





运行之后在页面输入数据,控制台输出
SSM框架|SpringMVC获得请求数据类型
文章图片

获得集合类型参数
静态资源访问的开启
当使用ajax提交时,可以指定contentType为json形式,那么在方法参数位置使用@RequestBody可以是直接接收结合数据而无需使用POJO进行包装。
创建一个js下的
SSM框架|SpringMVC获得请求数据类型
文章图片


还有ajax.jsp
Insert title here - 锐客网

userController类下
//配置类,使用注解把这个类放到容器中 @Controller @RequestMapping(value="https://www.it610.com/user") public class userController { @RequestMapping("/quick15") @ResponseBody public void save15(@ResponseBody List userList) throws Exception { System.out.println(userList); } }

运行服务器后,发现控制台没有打印数据
SSM框架|SpringMVC获得请求数据类型
文章图片

一般是页面出现了问题,打开开发者工具中查看
SSM框架|SpringMVC获得请求数据类型
文章图片

发现是这个jQuery文件找不到
这是静态资源访问权限的问题,解决方式是在spring-mvc中加入

重启服务器运行之后就可以访问了,在网络中查看访问包的情况,共有三次请求
SSM框架|SpringMVC获得请求数据类型
文章图片

运行之后控制台会打印数组中的数据。
也可以在spring-mvc中配置,只需写入一个即可(常用)

【SSM框架|SpringMVC获得请求数据类型】解释:访问资源时,SpringMVC找对应的匹配地址,如果找不到则交给原始的容器(这原始的容器为tomcat)tomcat可以找有能力访问静态资

    推荐阅读