springMVC中自定义类型转换器

àì夳堔傛蜴生んèń 2022-02-16 15:27 370阅读 0赞

虽然springMVC中自带类型转换器,但是有的时候我们需要自己去定义类型转换器来解决特殊的事情,比如一个jsp页面中的字符串转为一个Student类
话不多说,上代码:
首先新建一个学生类Student,里面有三个属性id、name、age

  1. package com.lin;
  2. public class Student {
  3. private Integer id;
  4. private String name;
  5. private Integer age;
  6. //省略set和get方法
  7. @Override
  8. public String toString() {
  9. return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
  10. }
  11. }

然后就开始编写类型转换器

  1. 编写一个类MyConverter,此类需要继承Converter类

    1. package com.lin;
    2. //注意:是org.springframework.core.convert.converter包下的
    3. import org.springframework.core.convert.converter.Converter;
    4. //Converter<String, Student> 泛型的知识 -----这里的意思就是将String类型转换为Student类型
    5. public class MyConverter implements Converter<String, Student>{
    6. //重写父类方法
    7. @Override
    8. public Student convert(String arg0) {
    9. //接受的String类型的数据为id-name-age,对应着Student类中的参数,-为分割符
    10. String[] str = arg0.split("-");
    11. int id = Integer.parseInt(str[0]);
    12. String name = str[1];
    13. int age = Integer.parseInt(str[2]);
    14. Student stu = new Student();
    15. stu.setId(id);
    16. stu.setName(name);
    17. stu.setAge(age);
    18. return stu;
    19. }
    20. }
  2. 在springMVC配置页面中配置
    1、将编写好的MyConverter类添加到springloc容器

    1. <bean id="myConverter" class="com.lin.MyConverter"></bean>

    2、将MyConverter再添加到ConversionServiceFactoryBean工厂中(注意:converters字段是个set集合,需要spring知识)

    1. <bean id="converterServer" class="org.springframework.context.support.ConversionServiceFactoryBean">
    2. <property name="converters">
    3. <set>
    4. <ref bean="myConverter"/>
    5. </set>
    6. </property>
    7. </bean>

    3、在mvc:annotation-driven中注册

    1. <mvc:annotation-driven conversion-service="converterServer"></mvc:annotation-driven>

    完整的就是

    1. <bean id="myConverter" class="com.lin.MyConverter"></bean>
    2. <bean id="converterServer" class="org.springframework.context.support.ConversionServiceFactoryBean">
    3. <property name="converters">
    4. <set>
    5. <ref bean="myConverter"/>
    6. </set>
    7. </property>
    8. </bean>
    9. <mvc:annotation-driven conversion-service="converterServer"></mvc:annotation-driven>

编写好转换器后就可以开始测试了

  1. 新建一个one.jsp文件

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"
    2. pageEncoding="UTF-8"%>
    3. <!DOCTYPE html>
    4. <html>
    5. <head>
    6. <meta charset="UTF-8">
    7. <title>Insert title here</title>
    8. </head>
    9. <body>
    10. <form action="mv12" method="POST">
    11. <input type="text" name="person">
    12. <input type="submit" value="提交">
    13. </form>
    14. </body>
    15. </html>
  2. 定义一个@RequestMapping(“mv12”)注释的方法(这个是springMVC基础的东西 就不说了 应该都懂)

    1. @RequestMapping("mv12")
    2. public String mv12(@RequestParam("person") Student stu) {
    3. System.out.println(stu);
    4. //这里返回的页面不管它 我们直接输出上面的那个对象就可以了
    5. return "ok";
    6. }
  3. 访问one.jsp页面,输入1-lin-21 (1是id,lin是name,21是age - 是分隔符 看最上面的类)
    在这里插入图片描述
  4. 控制台输出
    在这里插入图片描述

在jsp页面中,我们传递给后台的数据是String类型,但是我们输出了Student对象,说明String类型被转换成了Student类型,具体的步骤就是上面几步了。

发表评论

表情:
评论列表 (有 0 条评论,370人围观)

还没有评论,来说两句吧...

相关阅读