springMVC中自定义类型转换器
虽然springMVC中自带类型转换器,但是有的时候我们需要自己去定义类型转换器来解决特殊的事情,比如一个jsp页面中的字符串转为一个Student类
话不多说,上代码:
首先新建一个学生类Student,里面有三个属性id、name、age
package com.lin;
public class Student {
private Integer id;
private String name;
private Integer age;
//省略set和get方法
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
然后就开始编写类型转换器
编写一个类MyConverter,此类需要继承Converter类
package com.lin;
//注意:是org.springframework.core.convert.converter包下的
import org.springframework.core.convert.converter.Converter;
//Converter<String, Student> 泛型的知识 -----这里的意思就是将String类型转换为Student类型
public class MyConverter implements Converter<String, Student>{
//重写父类方法
@Override
public Student convert(String arg0) {
//接受的String类型的数据为id-name-age,对应着Student类中的参数,-为分割符
String[] str = arg0.split("-");
int id = Integer.parseInt(str[0]);
String name = str[1];
int age = Integer.parseInt(str[2]);
Student stu = new Student();
stu.setId(id);
stu.setName(name);
stu.setAge(age);
return stu;
}
}
在springMVC配置页面中配置
1、将编写好的MyConverter类添加到springloc容器<bean id="myConverter" class="com.lin.MyConverter"></bean>
2、将MyConverter再添加到ConversionServiceFactoryBean工厂中(注意:converters字段是个set集合,需要spring知识)
<bean id="converterServer" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<ref bean="myConverter"/>
</set>
</property>
</bean>
3、在mvc:annotation-driven中注册
<mvc:annotation-driven conversion-service="converterServer"></mvc:annotation-driven>
完整的就是
<bean id="myConverter" class="com.lin.MyConverter"></bean>
<bean id="converterServer" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<ref bean="myConverter"/>
</set>
</property>
</bean>
<mvc:annotation-driven conversion-service="converterServer"></mvc:annotation-driven>
编写好转换器后就可以开始测试了
新建一个one.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="mv12" method="POST">
<input type="text" name="person">
<input type="submit" value="提交">
</form>
</body>
</html>
定义一个@RequestMapping(“mv12”)注释的方法(这个是springMVC基础的东西 就不说了 应该都懂)
@RequestMapping("mv12")
public String mv12(@RequestParam("person") Student stu) {
System.out.println(stu);
//这里返回的页面不管它 我们直接输出上面的那个对象就可以了
return "ok";
}
- 访问one.jsp页面,输入1-lin-21 (1是id,lin是name,21是age - 是分隔符 看最上面的类)
- 控制台输出
在jsp页面中,我们传递给后台的数据是String类型,但是我们输出了Student对象,说明String类型被转换成了Student类型,具体的步骤就是上面几步了。
还没有评论,来说两句吧...