来源:https://www.bilibili.com/video/BV1GE411d7KE?p=7
上一节:https://blog.csdn.net/qq_40893824/article/details/107229346
下一节:https://blog.csdn.net/qq_40893824/article/details/107282922
数据转换器:客户端 HTTP 请求中的参数 转为 业务方法中定义的形参
HandlerApdter 提供通用的转换:String 转 int,String 转 double,表单数据的封装
特殊的业务场景下,HandlerAdapter 无法转换
String 转 Date
1 southwind 中,创包 Conveter,其内创建 转换类 DateConverter,加入代码:
package com.southwind.Conveter;
import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateConverter implements Converter<String, Date> {
private String pattern;
public DateConverter(String pattern){
this.pattern = pattern;
}
@Override
public Date convert(String source) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(this.pattern);
Date date = null;
try{
date = simpleDateFormat.parse(source);//parse 解析
}catch (ParseException e){
e.printStackTrace();
}
return date;
}
}
2 resources/ springmvc.xml 中,加入代码:
这一步就是自定义转换
<!-- 自定义转换器 -->
<bean id="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.southwind.Conveter.DateConverter">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd"></constructor-arg>
</bean>
</list>
</property>
</bean>
3 controller 中,新建实现类 controller,加入代码:
package com.southwind.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
@RestController
@RequestMapping("/converter")
public class ConverterHandler {
@RequestMapping("/date")
public String date(Date date){
return date.toString();
}
}
4 webapp 中,新建 addDate.jsp,加入代码:
<form action="/converter/date" method="post">
日期:<input type="text" name="date" />(yyyy-MM-dd)<br/><!-- name 对应方法名 -->
<input type="submit" value="提交">
</form>
5 重启 tomcat,进入 http://localhost:8080/addDate.jsp
String 转 Student
1 entity 中,新建实体类,加入代码:
package com.southwind.entity;
import lombok.Data;
@Data
public class Student {
private long id;
private String name;
private int age;
}
2 Conveter 中,新建转换类 StudentConverter,加入代码:
package com.southwind.Conveter;
import com.southwind.entity.Student;
import org.springframework.core.convert.converter.Converter;
public class StudentConverter implements Converter<String, Student> {
@Override
public Student convert(String source) {
String[] args =source.split("-");
Student student = new Student();
student.setId(Long.parseLong(args[0]));
student.setName(args[1]);
student.setAge(Integer.parseInt(args[2]));
return student;
}
}
3 resources/ springmvc.xml 中,加入代码:<bean class="com.southwind.Conveter.StudentConverter"></bean>
4 ConverterHandler 中,添加代码:
@RequestMapping("/student")
public String student(Student student){
return student.toString();
}
5 webapp 中,新建 addStudent.jsp,加入代码:
<form action="/converter/student" method="post">
学生信息:<input type="text" name="student" />(id-name-age)<br/>
<input type="submit" value="提交">
</form>
6 重启 tomcat,进入 http://localhost:8080/addStudent.jsp
上一节:https://blog.csdn.net/qq_40893824/article/details/107229346
下一节:https://blog.csdn.net/qq_40893824/article/details/107282922