栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

SpringMVC类型转换器Converter

Java 更新时间:发布时间: 百科书网 趣学号
SpringMVC类型转换器Converter

在SpringMVC框架中需要收集用户请求参数,并将请求参数传递给应用的控制器组件,所有的请求参数都只能是字符串数据类型,SpringMVC框架必须将这些字符串转换成相应的数据类型。 一般JSP+Servlet需要开发者自己在Servlet中进行类型转换,并将其封装成对象,比较繁琐,对于SpringMVC框架而言,他必须将请求参数转换成值对象中各属性对应的数据类型,SpringMVC的Convert是一个可以将一种数据类型转换成另一种数据类型的接口,一般开发者在实际应用中使用框架内置的类型转换器就可以,但有时需要编写具有特定功能的类型转换器

  • 注意:在使用内置转换器时候,请求参数输入值和接收参数的类型要一致,否则会报错。

下面演示一下自定义Converter类型转换器。
1-创建web应用,并导入相关jar包。
2-在index.jsp页面创建输入信息采集视图,该视图点击提交按钮后,映射到相应的控制器处理。

<%--
  Created by IntelliJ IDEA.
  User: nuist__NJUPT
  Date: 2021/9/29
  Time: 8:40
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


  
    $Title$
  
  
  
请输入商品信息(格式为apple,110.58,200)

3-创建pojo包,在该包中创建GoodsMeal类,用于传递参数到controller

public class GoodsMeal {
    private String goodsName ;
    private double goodsPrice ;
    private int goodsNumber ;

    public String getGoodsName() {
        return goodsName;
    }

    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }

    public double getGoodsPrice() {
        return goodsPrice;
    }

    public void setGoodsPrice(double goodsPrice) {
        this.goodsPrice = goodsPrice;
    }

    public int getGoodsNumber() {
        return goodsNumber;
    }

    public void setGoodsNumber(int goodsNumber) {
        this.goodsNumber = goodsNumber;
    }
}

4-创建controller包,在该包中创建控制器类
ConverterController,用于接收请求参数,并将相应参数转换对应的类型。

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import pojo.GoodsMeal;

@Controller
@RequestMapping("/my")
public class ConverterController {
    @RequestMapping("/converter")
    public String myConverter(GoodsMeal gm, Model model){
        model.addAttribute("goodsMeal", gm) ;
        return "showGoods" ;
    }
}

5-创建converter包,在改包中创建自定义类型装换器,完成类型转换。

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

//源类型String类型,目标类型GoodsMeal
public class GoodsConverter implements Converter {
    @Override
    public GoodsMeal convert(String s) {
        GoodsMeal goodsMeal = new GoodsMeal() ;
        String [] values = s.split(",") ;
        if(values != null && values.length == 3){
            goodsMeal.setGoodsName(values[0]) ;
            goodsMeal.setGoodsPrice(Double.parseDouble(values[1])) ;
            goodsMeal.setGoodsNumber(Integer.parseInt(values[2])) ;
            return goodsMeal ;
        }else{
            throw new IllegalArgumentException("格式转换错误") ;
        }
    }
}

6-在web.xml配置DispatcherServlet,用于总的控制



    
    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            WEB-INF/springmvc-servlet.xml
        
        
        1
    
    
        springmvc
        
        /
    


7-在WEB-INF拆创建配置文件springmvc-servlet.xml,在该配置文件中扫描controller包,使注解生效,注册自定义类型转换器同时启动转换器,注册视图解析器。




    
    
    
    
    
        
            
                
            
        
    
    
    
    
    



    
    
        
        
        
        
    




8-在WEB-INF下创建jsp目录,在该目录中创建信息显示页面showGoods.jsp,在该页面中通过EL表达式取出model中的goodsMeal的信息。

<%--
  Created by IntelliJ IDEA.
  User: nuist__NJUPT
  Date: 2021/9/29
  Time: 9:23
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


您创建的商品信息如下:
商品的名称为:${goodsMeal.goodsName} 商品的价格为:${goodsMeal.goodsPrice} 商品的数量为:${goodsMeal.goodsNumber}

工作过程:首先通过index.jsp页面输入信息,点击提交,客户端请求提交到DispatcherServlet,由DispatcherServlet找到Requestmapping映射到指定的控制器,该控制器调用自定义类型转换类转换完成后,返回ModelAndView,视图解析器解析后,进入主页面,主页面通过EL表达式取出model对象中goodsMeal的值。

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/275820.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号