简介
服务器获取请求参数,有时还需数据封装。
SpringMVC可以接受如下类型参数:
基本类型参数
POJO类型参数
数组类型参数
集合类型参数
获得基本类型参数
Controller中的业务方法的参数名称与请求参数name一致。参数值会自动映射匹配
@RequestMapping("save6") @ResponseBody // responseBody 代表不进行页面跳转。直接响应数据 public void save6(String userName,int age ){ System.out.println("userName: "+userName+" age:"+age); }
获得POJO参数
Controller中业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配
http://127.0.0.1:8080/Spring04_03/user/save6?username=zhangsan&age=19
@RequestMapping("save7") @ResponseBody public void save7(User user){ System.out.println(user); }
获得数组类型参数
Controller中的业务方法的数组名称与请求参数name一致。参数值会自动映射匹配
@RequestMapping("save8") @ResponseBody public void save8(String[] strs){ for (int i = 0; i < strs.length; i++) { System.out.println(strs[i]); } }
获得集合类型参数
RestFul风格
获取静态资源
因为SpringMVC的特性
DispatcherServlet进行urlpattern / 匹配所有请求路径。匹配后根据@Controller内的方法映射找到对应资源。
而静态资源没有在@Controller内没有配置,所以会找不到
需要<mvc:default-servlet-handler/>:找不到的静态资源由tomcat查找
@RequestParam:当请求参数名与Controller业务方法参数名称不一致时。需要通过@RequestParam注解显示的绑定
参数:
value:与请求参数名称相同
required:此指定参数是否必须包含。默认为true。提交时没有该参数报错。可改为false
defaultVaule:默认值赋值
public void save10(@RequestParam("userName") String name, int age ){ System.out.println("name: "+name+" age:"+age); }
post请求乱码问题
因为没有filter设置:request.srtCharacterEncoding("utf-8"),所以post请求乱码
<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
加入Spring内置的encodingFilter即可