springMvc5 - 自定义数据转换器

来源: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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_1403034144

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值