Kite的学习历程之SpringMVC配置类型转换器

Kite学习框架的第十二天

1. 配置类型转换器

产生的需求,在springMVC中可以把字符串类型转换为Interage,Double, Date等类型,但是当我们输入的类型不匹配时就不能进行转换

1.1 首先创建一个类型转换工具包,添加SpringToDate类

该类应该继承Converter
实现其重载方法convert()
在该方法中执行数据的转换:
我们这里定义是把String对应的日期格式,转换为日期的数据类型

package cn.kitey.utils;


import org.springframework.core.convert.converter.Converter;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 把字符串转换为日期
 */
public class StringToDate implements Converter<String, Date> {

    /**
     *
     * @param source 传入的要转换的字符串
     * @return
     */
    @Override
    public Date convert(String source) {
        //进行判断
        if(source == null){
            throw new RuntimeException("您输入的数据为空");
        }
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        //把字符串转为时间类型
        try {
            return df.parse(source);
        } catch (Exception e) {
           throw new RuntimeException("数据转换失败!");
        }



    }
}


1.2 在springmvc.xml中配置自定义类型转换器


  <!--配置自定义类型转换器-->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <bean class="cn.kitey.utils.StringToDate"></bean>
            </set>
        </property>
    </bean>

同时需要在SpringMVC框架支持中添加支持

  <!--开启SpringMVC框架注解的支持-->
    <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>


1.3 这时我们可以创建一个User实体类进行数据的封装

其中包含了Dae数据类型


package cn.kitey.domain;

import java.util.Date;

public class User {
    private Integer id;
    private Integer age;

    private Date date;

    public User() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", age=" + age +
                ", date=" + date +
                '}';
    }
}

1.4 创建一个params.jsp页面,进行数据的输入

<%--
  Created by IntelliJ IDEA.
  User: 小风筝
  Date: 2020/6/18
  Time: 11:31
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>params</title>
</head>
<body>



<form action="params/saverUser" method="post">
    用户账号:<input type="text" name="id"/><br/>
    用户年龄:<input type="text" name="age"/><br/>
    用户生日:<input type="text" name="date"/><br/ >
    <input type="submit" value="提交">
</form>

</body>
</html>


1.5 创建一个ParamController控制类进行数据的接收,与映射

@RequestMapping(path = “/params”):使用了两重定义
这个方法***saveUser(User user)*** 接收了数据,并进行打印,而且转发网页到success.jsp

package cn.kitey.controller;


import cn.kitey.domain.Account;
import cn.kitey.domain.Iter;
import cn.kitey.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping(path = "/params")
public class ParamController {

    @RequestMapping(path = "/saverUser")
    public String saveUser(User user){
        System.out.println("SaveUser执行了");
        System.out.println(user);
        return "success";
    }
}


运行结果截图
数据输入:
Kite的学习历程之SpringMVC配置类型转换器_第1张图片
数据打印
Kite的学习历程之SpringMVC配置类型转换器_第2张图片

2 .结局post请求乱码问题

在wen.xml中进行配置进而解决中文乱码问题
我们这里是采用了配置过滤器的方法

 <!--配置解决中文乱码的的过滤器-->
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <!--解决中文乱码的问题-->
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>

  </filter>

  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*
  


进行该配置后,就可以解决中文乱码问题;

中间还学习了RequestMapping的标签的知识
//method:请的方法 当为method = {RequestMethod.POST Request method ‘GET’ not supported
//params:用于指定限制请求参数条件。支持简单的表达式,要求请求参数的key value 与配置信息必须一样
//headers = {“Accept”} 表示发送的请求必须包含该请求头
@RequestMapping( path = “/testRequestMapping” , params = {“username=kite”}, headers = {“Accept”})
还有获取jsp页面的数据内容,进行封装的详解!
这里就不做太多的讲述了
书海无涯苦作舟!书海有路勤为劲! 不知道对不对了,反正加油吧!
2020/6/18/12:51

你可能感兴趣的:(每天的学习笔记)