目录
Springmvc中,接收页面提交的数据是通过方法形参来接收:
-
处理器适配器调用springmvc使用反射将前端提交的参数传递给controller方法的形参
-
springmvc接收的参数都是String类型,所以spirngmvc提供了很多converter(转换器)在特殊情况下需要自定义converter,如对日期数据
一、接收前端的基本数据类型的参数
(1)接收单个数据
①index.jsp
<a href="/account/findAccount7?name=tom">接收单个参数</a><br>
②controller
// 接收单个参数
@RequestMapping("/findAccount7")
public String findAccount7(String name,Model model){
model.addAttribute("msg", name);
return "success";
}
③结果
(2)接收多个数据
①index.jsp
<a href="/account/findAccount8/name=tom&money=100">接收多个参数</a><br>
③结果
二、接收前端的pojo参数
(1)pojo
①
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Account {
private Integer id;
private String name;
private Float money;
private Address address;
}
②
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Address {
private String provinceName;
private String cityName;
}
(2)在index.jsp里面添加表单
<form action="account/saveAccount" method="post">
账户名称:<input type="text" name="name"><br/>
账户金额:<input type="text" name="money"><br/>
账户省份:<input type="text" name="address.provinceName"><br/>
账户城市:<input type="text" name="address.cityName"><br/>
<input type="submit" value="保存">
</form>
(3)controller
// 接收对象
@RequestMapping("findAccount9")
public String findAccount9(Account account,Model model){
model.addAttribute("msg",account);
return "success";
}
(4)结果
乱码先不解决
三、请求参数乱码问题
可以看出当输入中文时,会出现乱码问题
3.1POST请求方式解决乱码问题
(1)在web.xml里面设置编码过滤器
<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>
(2)结果
3.2 get请求方式解决乱码问题
(1)index.jsp
<a href="/account/findAccount7?name=杨逍">接收单个参数</a><br>
(2)controller
// 接收单个参数
@RequestMapping("/findAccount7")
public String findAccount7(String name, Model model) {
model.addAttribute("msg", name);
return "success";
}
(3)结果
(4)解决
tomcat对GET和POST请求处理方式是不同的,GET请求的编码问题,要改tomcat的 配置信息,如下:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/</path>
<!--按UTF-8进行编码-->
<uriEncoding>UTF-8</uriEncoding>
</configuration>
</plugin>
(5)最终结果