springMvc数据格式化使用

1、简介

  • 数据转换器作用:对象转换对象

    请求数据------》数据转换器------》对象
    
  • 其实数据格式化就是数据转换器的一种

    • 数据格式化特点:
      • 输入字符串数据类型-------》数据格式化------》对象
      • 对象------》数据格式化----------》字符串

2、用法

  • 只要继承Formatter接口,即可实现数据格式化处理

  • 注意:Formatter则只能进行String与任意Object对象的转换,它提供 解析 与 格式化 两种功能

  • 应用场景

在这里插入图片描述

  • 如何实现

    • 定义javabean

      package com.cn.home.domain;
      
      import java.io.Serializable;
      import java.util.Date;
      
      /**
       * @Author Lin_Home
       * @Date 2020/10/29 9:29
       * @Version 1.0
       */
      public class User implements Serializable {
          private String username;
          private Integer age;
          private Date birth;
      
          public User() {
          }
      
          public User(String username, Integer age, Date birth) {
              this.username = username;
              this.age = age;
              this.birth = birth;
          }
      
          public String getUsername() {
              return username;
          }
      
          public void setUsername(String username) {
              this.username = username;
          }
      
          public Integer getAge() {
              return age;
          }
      
          public void setAge(Integer age) {
              this.age = age;
          }
      
          public Date getBirth() {
              return birth;
          }
      
          public void setBirth(Date birth) {
              this.birth = birth;
          }
      
          @Override
          public String toString() {
              return "User{" +
                      "username='" + username + '\'' +
                      ", age=" + age +
                      ", birth=" + birth +
                      '}';
          }
      }
      
      
    • 实现handler

      package com.cn.home.controller;
      
      import com.cn.home.domain.User;
      import org.springframework.stereotype.Controller;
      import org.springframework.ui.Model;
      import org.springframework.web.bind.annotation.RequestMapping;
      
      /**
       * @Author Lin_Home
       * @Date 2020/10/29 9:32
       * @Version 1.0
       */
      
      @Controller
      public class UserController {
          @RequestMapping("/toForm")
          public String toFrom(Model model) {
              User user = new User();
              user.setUsername("张三");
              user.setAge(30);
              //它会在表单的输入框打印:xxxx-xx-xx
              user.setBirth(new java.util.Date());
              model.addAttribute("command", user);
              return "form";
          }
      
      
          @RequestMapping("/save")
          public String save(User user) {
              System.out.println(user);
              return "success";
          }
      
      }
      
      
    • 编写jsp的标签form

      <%--
        Created by IntelliJ IDEA.
        User: cheng
        Date: 2020/10/21
        Time: 10:23
        To change this template use File | Settings | File Templates.
      --%>
      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
      <html>
      <head>
          <title>Title</title>
      </head>
      <body>
      <form:form action="${pageContext.servletContext.contextPath}/save">
          用户名:<form:input path="username" /><br/>
          年龄:<form:input path="age" /><br/>
          出生年月:<form:input path="birth" /><br/>
          <input type="submit" value="保存"/>
      </form:form>
      </body>
      </html>
      
      
    • 自定义formater的类

      package com.cn.home.utils;
      
      import org.springframework.format.Formatter;
      
      import java.text.ParseException;
      import java.text.SimpleDateFormat;
      import java.util.Date;
      import java.util.Locale;
      
      /**
       * @Author Lin_Home
       * @Date 2020/10/29 9:38
       * @Version 1.0
       */
      
      
      /*Converter可以将一种类型转换成另一种类型,是任意Object之间的类型转换。
        Formatter则只能进行String与任意Object对象的转换,它提供 解析 与 格式化 两种功能。*/
      
      public class DateFormatter implements Formatter<Date> {
          //将字符串----------》解释--------》Date对象
          @Override
          public Date parse(String s, Locale locale) throws ParseException {
              SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
              return sf.parse(s);
          }
      
          //将Date对象--------->解释-------->打印输出
          @Override
          public String print(Date date, Locale locale) {
              SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
              return sf.format(date);
          }
      }
      
      
    • 配置spring-config.xml文件,注解格式化对象

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:mvc="http://www.springframework.org/schema/mvc"
             xmlns:context="http://www.springframework.org/schema/context"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
              http://www.springframework.org/schema/mvc
              http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
              http://www.springframework.org/schema/context
              http://www.springframework.org/schema/context/spring-context-4.3.xsd">
      
          <context:component-scan base-package="com.cn.home"/>
      
          <!--
          1、注解映射器及适配器的实现
          2、消息转换器的配置实现(默认jackjson)
          3、数据转换
          4、数据格式化处理
          -->
          <mvc:annotation-driven />
          <!--允许直接访问静态资源(js/html/img/css)-->
          <mvc:default-servlet-handler />
      
      
      
          <!-- 格式化 -->
          <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
              <property name="formatters">
                  <list>
                      <bean class="com.cn.home.utils.DateFormatter" />
                  </list>
              </property>
          </bean>
      
      
          <!-- 视图解析器  -->
          <bean id="viewResolver"
                class="org.springframework.web.servlet.view.InternalResourceViewResolver">
              <!-- 前缀 -->
              <property name="prefix">
                  <value>/WEB-INF/jsp/</value>
              </property>
              <!-- 后缀 -->
              <property name="suffix">
                  <value>.jsp</value>
              </property>
          </bean>
      
      
      </beans>
      

3、通过注解实现数据格式化处理

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值