SpringMVC学习(5):自己设置数据转换器

  • 时间:2019-01-19 18:37 作者:Jex000 来源:Jex000 阅读:108
  • 扫一扫,手机访问
摘要:前言在前面的章节我们学习过使用SpringMVC框架进行web开发,前台页面传输的数据会由HandlerAdapter组件自动封装到业务方法的参数中。在http表单中的所有请求参数都是String类型的,假如业务参数是String或者者int类型,HandlerAdapter会自动完成数据转换,但是如

前言

在前面的章节我们学习过使用SpringMVC框架进行web开发,前台页面传输的数据会由HandlerAdapter组件自动封装到业务方法的参数中。

在http表单中的所有请求参数都是String类型的,假如业务参数是String或者者int类型,HandlerAdapter会自动完成数据转换,但是假如参数是其余数据类型,比方Date类型,HandlerAdapter是不会将String类型转换为Date类型的,我们需要实现Converter接口来协助SpringMVC完成数据类型的转换。

实现

1、创立DateConverter转换器

import org.springframework.core.convert.converter.Converter;public class DateConverter implements Converter<String,Date>{    private String pattern;    public DateConverter(String pattern){        this.pattern = pattern;    }    public Date convert(String source) {        // TODO Auto-generated method stub        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);        try {            return simpleDateFormat.parse(source);        } catch (ParseException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return null;    }}

DateConverter转换器实现了org.springframework.core.convert.converter.Converter接口,将String类型的数值转换为Date类型。

2、配置springmvc.xml中的conversionService bean

 <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">      <property name="converters">          <list>              <!-- 日期转换器 -->              <bean class="com.jex.utils.DateConverter">                 <constructor-arg type="java.lang.String" value="yyyy-MM-dd"/>              </bean>          </list>     </property> </bean> <mvc:annotation-driven conversion-service="conversionService"/>

注意:bean的类名称必需是org.springframework.context.support.ConversionServiceFactoryBean。bean必需包含一个converters属性,它将列出在应用程序中用到的所有定制Converter。将我们自己设置的DateConverter增加到converters中,通过有参构造函数创立DateConverter。同时annotation-driven元素的conversion-service属性赋bean名称。

3、创立业务方法

    @RequestMapping(value="/testDateConverter")    @ResponseBody    public String testDateConverter(Date date){        return date.toString();    }

4、创立addDate.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"></head><body>    <form action="testDateConverter" method="post">        请输入日期:<input type="text" name="date"/>(yyyy-MM-dd)<br/>        <input type="submit" value="提交"/>    </form></body></html>

5、运行

image
image

除了Date类型的转换,我们还可以自己设置其它的数据格式,比方注册一个user,通过转换器将前台页面输入的"id-name-age"形式的String类型的数据直接转换为user对象。

1、创立User实体类

public class User {    private int id;    private String name;    private int age;        public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    @Override    public String toString() {        return "User [id=" + id + ", name=" + name + ", age=" + age + "]";    }    }

2、创立UserConverter转换器

import org.springframework.core.convert.converter.Converter;public class UserConverter implements Converter<String,User>{    public User convert(String source) {        // TODO Auto-generated method stub        String[] args = source.split("-");        User user = new User();        user.setId(Integer.parseInt(args[0]));        user.setName(args[1]);        user.setAge(Integer.parseInt(args[2]));        return user;    }}

3、配置springmvc.xml中的conversionService bean

 <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">      <property name="converters">          <list>              <!-- 日期转换器 -->              <bean class="com.jex.utils.DateConverter">                  <constructor-arg type="java.lang.String" value="yyyy-MM-dd"/>              </bean>              <!--User转换器 -->              <bean class="com.jex.utils.UserConverter"></bean>          </list>      </property> </bean> <mvc:annotation-driven conversion-service="conversionService"/>

4、创立业务方法

    @RequestMapping(value="/testUserConverter")    @ResponseBody    public String testUserConverter(User user){        return user.toString();    }

5、创立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"></head><body>    <form action="testUserConverter" method="post">        客户信息:<input type="text" name="student"/><font style="font-size:13px">(id-name-age)</font><br/>        <input type="submit" value="提交"/>    </form></body></html>

6、运行

image

image

源码

链接:
https://pan.baidu.com/s/191wnUwW0a8AOeZnhOSWH5A
提取码:1v5q


image
  • 全部评论(0)
最新发布的资讯信息
【系统环境|windows】字节跳动前台面试题解析:盛最多水的容器(2021-03-20 21:27)
【系统环境|windows】DevOps敏捷60问,肯定有你想理解的问题(2021-03-20 21:27)
【系统环境|windows】字节跳动最爱考的前台面试题:JavaScript 基础(2021-03-20 21:27)
【系统环境|windows】JavaScript 的 switch 条件语句(2021-03-20 21:27)
【系统环境|windows】解决 XML 数据应用实践(2021-03-20 21:26)
【系统环境|windows】20个编写现代CSS代码的建议(2021-03-20 21:26)
【系统环境|windows】《vue 3.0探险记》- 运行报错:Error:To install them, you can run: npm install --save core-js/modules/es.arra...(2021-03-20 21:24)
【系统环境|windows】浅谈前台可视化编辑器的实现(2021-03-20 21:24)
【系统环境|windows】产品经理入门迁移学习指南(2021-03-20 21:23)
【系统环境|windows】初识webRTC(2021-03-20 21:23)
手机二维码手机访问领取大礼包
返回顶部