SpringMVC的请求
客户端发的请求SpringMVC在接收时可以分为:
获取基本类型参数
Controller中的业务方法的参数名称要与实际参数的name一致,参数值回自动映射匹配
直接在controller方法的参数位置声明想要的参数即可,参数名称和request传递来的参数名称必须相同(username和age要对应上)
POJO(简单Java类)类型参数
Controller中的业务方法的POJO参数的属性名和请求参数的name一致,参数值回自动映射匹配
URL里的username,age与User类中的属性名username,age一致,没有就跳过。然后匹配上的属性会通过反射器调用getset方法
SpringMVC会把url传来的参数值自动封装到user对应的属性中
UserController类:
Url:
结果:
数组类型参数
Controller中的业务方法数组名称与请求参数的name一致,参数值会自动映射匹配
UserController类:
URL:
结果:
集合数据类型
集合的POJO封装(几乎不用这种方式)
获得集合参数时,要将几何参数包装到一个POJO中才可以,我们新建一个VO类
UserController类:
新建一个jsp,并通过post方式访问,并给userList集合里的第一个和第二个对象进行封装
访问jsp
返回集合:
异步获得集合类型参数
如果使用json格式提交数据(ajax请求),可以指定contentType为json形式,在controller的方法参数位置使用@RequestBody注解可以把接收到的json转换成对象。直接接收集合数据而无需使用POJO进行封装。
导入js
ajax.jsp
UserController类:
最后在spring-mvc.xml中添加一句话,因为默认js这种静态资源默认是不加载的。
url:
结果:
关于静态资源的处理
SpringMVC的前端控制器路径配置为 / 前端控制器会接收到静态资源的请求
1.让SpringMVC处理静态资源,手动配置一个映射关系,让SpringMVC有映射访问静态资源的能力
mapping:映射,指的是请求的url路径
location:实际访问的资源的位置
意思是url里写mapping后面跟着的位置时,会映射到location后面跟着的位置
2.不让SpringMVC处理静态资源,让Web容器来处理(Tomcat)
SpringMVC请求的乱码问题
参数绑定注解requestParam
Parameter
标注在Controller中方法的参数上,用于指定请求参数和方法的参数名的映射关系
UserController类:
URL:
结果是Van
结果是Aniki
Map
标注的Controller方法的参数是一个map,它会把所有的请求参数都获取出来存入该map中,类似request.getParameterMap()