• SpingMVC类型转换


    框架内部做了类型转换工作,将String转换成Int,但是默认类型转换器并不是可以将用户提交的String转换为用户需要的类型,此时就需要自定义类型转换器了

    下边我自定义一个日期类型的转换器  才认识能否将前台输入的string在后台转换成date类型  并且输出到控制台

    定义一个控制器类  参数和前台jsp页面上的参数进行自动装配

    @Controller
    public class FirstController 
        @RequestMapping("/first")
        public String doFirst(String username, int age, Date birthday){
            System.out.println(username);
            System.out.println(age);
            System.out.println(birthday);
            return "suecssful";
        }
    }

    定义一个转换器

    //Converter是一个泛型接口  s带原始类型  t代表目标类型 所以这里是String和date
    public
    class TypeDate implements Converter<String,Date> { public Date convert(String str) { SimpleDateFormat sdf = getDate(str); try { return sdf.parse(str); } catch (ParseException e) { e.printStackTrace(); } return null; } public SimpleDateFormat getDate(String str) {
    SimpleDateFormat sdf
    =null;
    //通过正则去和前台输入的格式进行匹配 只要符合正则表达式的规则 就可以转换
    if(Pattern.matches("^\d{4}-\d{2}-\d{2}$",str)){ sdf=new SimpleDateFormat("yyyy-MM-dd"); } if(Pattern.matches("^\d{4}/\d{2}/\d{2}$",str)){ sdf=new SimpleDateFormat("yyyy/MM/dd"); } if(Pattern.matches("^\d{4}\d{2}\d{2}$",str)){ sdf=new SimpleDateFormat("yyyyMMdd"); } return sdf; } }

    xml配置文件的书写

      <context:component-scan base-package="day13"></context:component-scan>
    
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
        <!--定义一个转换器-->
        <bean id="myDateType" class="day13.TypeDate"></bean>
        <!--注册一个转换器服务-->
        <bean id="conversionService2" class="org.springframework.context.support.ConversionServiceFactoryBean">
            <property name="converters" ref="myDateType"></property>
        </bean>
        <!--注解驱动管理一个转换服务-->
        <mvc:annotation-driven conversion-service="conversionService2"></mvc:annotation-driven>

    前台页面的定置:

    <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <form action="/first" method="post">
        姓名:<input name="username" value="${username}"><br>
        年龄:<input name="age"><br>
        出生日期:<input name="birthday"><br>
        <input type="submit" value="提交">
    </form>
    </body>
    </html>

    配置完成!  控制台打印date类型的日期 

  • 相关阅读:
    史上最全常用正则表达式大全
    JAVA中不要用e.printStackTrace()
    JAVA中不要用e.printStackTrace()
    为什么尽量不用e.printStackTrace
    java返回集合为null还是空集合以及空集合的三种写法
    IntelliJ IDEA使用技巧——常用快捷键Mac篇
    [php] 使用laravel-modules模块化开发
    [php] 解决laravel: production.ERROR: No application encryption key has been specified
    [gitlab] 解决:remote: Ask a project Owner or Maintainer to create a default branch:
    [composer] composer 安装配置laravel 8
  • 原文地址:https://www.cnblogs.com/1234AAA/p/8681145.html
Copyright © 2020-2023  润新知