需要用户在页面表单中输入信息来创建商品信息。当输入“bianchengbang,18,1.85”时表示在程序中自动创建一个 new User,并将“bianchengbang”值自动赋给 name 属性,将“18”值自动赋给 age 属性,将“1.85”值自动赋给 height 属性。
如果想实现上述应用,需要做以下 5 件事:
- 创建实体类。
- 创建控制器类。
- 创建自定义类型转换器类。
- 注册类型转换器。
- 创建相关视图。
- 创建实体类
public class User {
private String name;
private Integer age;
private Double height;
/**省略setter和getter方法*/
}
- 创建控制器类
@Controller
public class UserController {
@RequestMapping("/addUser")
public String addUser() {
return "addUser";
}
}
创建 ConverterController 控制器⭐
@Controller
public class ConverterController {
@RequestMapping("/converter")
public String myConverter(@RequestParam("user") User user, Model model) {
model.addAttribute("user", user);
return "showUser";
}
}
- 创建自定义类型转换器
@Component
public class UserConverter implements Converter<String, User> {
@Override
public User convert(String source) {
// 创建User实例
User user = new User();
// 以“,”分隔
String stringvalues[] = source.split(",");
if (stringvalues != null && stringvalues.length == 3) {
// 为user实例赋值
user.setName(stringvalues[0]);
user.setAge(Integer.parseInt(stringvalues[1]));
user.setHeight(Double.parseDouble(stringvalues[2]));
return user;
} else {
throw new IllegalArgumentException(String.format("类型转换失败, 需要格式'编程帮, 18,1.85',但格式是[% s ] ", source));
}
}
}
- 配置转换器
springmvc-servlet.xml 文件
<mvc:annotation-driven conversion-service="conversionService" />
<!--注册类型转换器UserConverter -->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="net.biancheng.converter.UserConverter" />
</list>
</property>
</bean>
- 创建相关视图
创建添加用户页面 addUser.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>添加用户</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/converter"
method="post">
请输入用户信息(格式为编程帮, 18,1.85):
<input type="text" name="user" />
<br>
<input type="submit" value="提交" />
</form>
</body>
</html>
创建显示用户页面 showUser.jsp⭐
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件上传</title>
</head>
<body>
您创建的用户信息如下:
<br/>
<!-- 使用EL表达式取出model中的user信息 -->
用户名:${user.name } <br/>
年龄:${user.age } <br/>
身高:${user.height }
</body>
</html>