SpringMVC-请求参数的绑定
请求参数的绑定说明
绑定机制
- 表单提交的数据都是k=v格式的 username=haha&password=123
- SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的
- 要求:提交表单的name和参数的名称是相同的
示例:
请求URL:hello?username=hehe&pssword=123
后台代码:
1 | "/hello") (value = |
注意:参数名username和password必须和URL传递的参数名一样,不然接收不到参数
支持的数据类型
- 基本数据类型和字符串类型
- 实体类型(JavaBean)
- 集合数据类型(List、map集合等)
基本数据类型和字符串类型
- 提交表单的name和参数的名称是相同的
- 区分大小写
jsp页面代码:注意form表单中的name属性值
1 | <form action="hello" method="post"> |
后台代码:注意方法的参数名
1 | "/hello") (value = |
实体类型(JavaBean)
- 提交的表单的name和JavaBean中的属性名称需要一致
- 如果一个JavaBean类中包含其他引用类型,那么表单的name属性需要编写成:对象.属性,例如:user.uname
示例:
jsp页面代码:注意form表单中的name属性值
1 | <form action="saveAccount" method="post"> |
后台控制类代码:注意方法的参数名
1 | /** |
后台实体代码:
Account类:注意类的属性名
1 | public class Account implements Serializable { |
User类:注意类的属性名
1 | public class User implements Serializable { |
结果:
集合数据类型
与实体类型(JavaBean)基本一致
List封装,使用:list名称[list中序号].list保存对象的属性,参照示例,如:userList[0].uname:
userMap[‘one’].uname:userMap是Account类中Map<String,User>的属性名,uname是Account类中Map对象存储的实体User的属性,one表示userMap存储的User对象对应的key。
Map封装,使用:map名称[map保存对象对应的key].map保存对象的属性,参照示例,如:userMap[‘one’].age:
userMap[‘one’].uname:userMap是Account类中Map<String,User>的属性名,uname是Account类中Map对象存储的实体User的属性,one表示userMap存储的User对象对应的key。
示例:
jsp页面代码:注意form表单中的name属性值
1 | <form action="saveAccount" method="post"> |
后台控制类代码:注意方法的参数名
1 | "/saveAccount") (value = |
后台实体代码:
Account类:
1 | public class Account implements Serializable { |
User类:
1 | public class User implements Serializable { |
jsp页面输入:
结果:
自定义类型转换器
第一步:定义一个类,实现Converter接口,该接口有两个泛型。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20/**
* 将字符串转换为日期
*/
public class StringToDate implements Converter<String, Date> {
// String s 传进来的字符串
public Date convert(String s) {
if (s == null) {
throw new RuntimeException("请您传入数据!");
}
DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");
// 把字符串转换日期
try {
return dateFormat.parse(s);
} catch (ParseException e) {
e.printStackTrace();
throw new RuntimeException("数据类型转换出现错误!");
}
}
}第二步:注册自定义类型转换器,在springmvc配置文件中编写配置
1
2
3
4
5
6
7
8<!--配置自定义类型转换器-->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.ligangit.util.StringToDate"/>
</set>
</property>
</bean>第三步:让自定义类型转换器生效conversion-service
1
2<!--开启SpringMVC框架注解支持-->
<mvc:annotation-driven conversion-service="conversionService"/>获取Servlet原生的API
只需要在控制器的方法参数定义HttpServletRequest和HttpServletResponse对象。
1
2
3
4
5
6
7
8
9
10
11// 原生的ServletAPI
"/testServlet") (value =
public String testServlet(HttpServletRequest request, HttpServletResponse response){
System.out.println("Hello SpringMVC");
System.out.println(request);
HttpSession session = request.getSession();
System.out.println(session);
ServletContext servletContext = session.getServletContext();
System.out.println(servletContext);
return "success";
}
最后更新: 2020年06月30日 22:46