• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • SpriingMVC 04 類型轉換器---自定義類型轉換器

    標簽: Spring成長之路  spring  mvc  web.xml

    創建一個添加商品信息的應用程序,通過使用自定義類型的轉換器實現功能

    1.目錄結構

    在這里插入圖片描述

    2.注解控制器的應用

    2.1 web.xml文件 , 導入jar 包(這里不在提醒)

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns="http://xmlns.jcp.org/xml/ns/javaee"
            xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
            id="WebApp_ID" version="3.1">
    
        <!--部署DispatcherServlet-->
        <servlet>
            <servlet-name>DispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>DispatcherServlet</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    </web-app>
    
    
    

    2.2 DispatcherServlet-servlet.xml 文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!--suppress SpringFacetInspection -->
    <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"
           xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
    		http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    		http://www.springframework.org/schema/mvc
    		http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
    		http://www.springframework.org/schema/context
    		http://www.springframework.org/schema/context/spring-context-3.2.xsd
    		http://www.springframework.org/schema/aop
    		http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
    		http://www.springframework.org/schema/tx
    		http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
    
        <!--    配置數據類型自定義轉換器-->
        <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
            <property name="converters">
                <list>
                    <bean class="com.beyond.dhl.controller.DHLGoodsConverter" />
                </list>
            </property>
        </bean>
        <mvc:annotation-driven conversion-service="conversionService" />
    
    
        <!--注解 配置控制器 -->
        <!-- 1. 配置掃描包-->
        <context:component-scan base-package="com.beyond.dhl"/>
    
        <!-- 2. 使用注解 配置處理映射-->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
        <!-- 3. 配置適配器-->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
        <!--4.配置  資源視圖解析器   (對本地視圖的路徑解析處理)-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
            <!--設置前綴-->
            <property name="prefix" value="/WEB-INF/jsp/"></property>
            <!--設置后綴-->
            <property name="suffix" value=".jsp"></property>
        </bean>
    
    
    </beans>
    
    

    建議將 這個自定義轉換器代碼 放到 掃描器的上面, 我這里之前因為這給報了500,說是找不到 這個自定義轉換器

    在這里插入圖片描述

    2.3 Controller 文件

    package com.beyond.dhl.controller;
    
    
    import com.beyond.dhl.domain.DHLGoodsModel;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    
    
    @Controller
    @RequestMapping("/my")
    public class ZDYGoodsController {
    
        @RequestMapping("/converter")
    //使用@RequestParam("goods")接收請求參數,然后調用自定義類型轉換器GoodsConverter將字符串值轉換為GoodsMode1的對象gm
    
        public String myConverter (@RequestParam( "goods") DHLGoodsModel gm, Model model){
            System.out.println("商品名稱:"+gm.getGoodsname());
            System.out.println("商品數量:"+gm.getGoodsnumber());
            System.out.println("商品數量:"+gm.getGoodsprice());
    
            return "showGoods";
        }
    
    }
    
    

    2.4 自定義轉換器

    package com.beyond.dhl.controller;
    
    
    import com.beyond.dhl.domain.DHLGoodsModel;
    import org.springframework.core.convert.converter.Converter;
    
    public class DHLGoodsConverter implements Converter<String, DHLGoodsModel> {
    
        @Override
        public DHLGoodsModel convert(String source) {
    
            //創建一個Goods實例
            DHLGoodsModel goods = new DHLGoodsModel();
            //以","進行分割
            String[] strings = source.split(",");
            if (strings != null && strings.length ==3){
                //為goods賦值
                goods.setGoodsname(strings[0]);
                goods.setGoodsprice(Double.parseDouble(strings[1]));
                goods.setGoodsnumber(Integer.parseInt(strings[2]));
                return goods;
            }
            else {
                throw new IllegalArgumentException(String.format("類型轉化失敗,"+"需要格式'apple,10.58,200',您輸入的格式為[%s]",source));
            }
    
        }
    }
    
    

    2.5 實體類文件

    package com.beyond.dhl.domain;
    
    
    
    
    public class DHLGoodsModel {
        private int goodsnumber;
        private String goodsname;
        private double goodsprice;
    
        public DHLGoodsModel() {
        }
    
        public DHLGoodsModel(int goodsnumber, String goodsname, double goodsprice) {
            this.goodsnumber = goodsnumber;
            this.goodsname = goodsname;
            this.goodsprice = goodsprice;
        }
    
        @Override
        public String toString() {
            return "DHLGoodsModel{" +
                    "goodsnumber=" + goodsnumber +
                    ", goodsname='" + goodsname + '\'' +
                    ", goodsprice=" + goodsprice +
                    '}';
        }
    
        public int getGoodsnumber() {
            return goodsnumber;
        }
    
        public void setGoodsnumber(int goodsnumber) {
            this.goodsnumber = 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;
        }
    }
    
    

    3.編寫首頁 index.jsp頁面 和 showGoods.jsp頁面

    index.jsp頁面

    <%--
      Created by IntelliJ IDEA.
      User: DHL
      Date: 2020/4/15
      Time: 18:58
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
             pageEncoding="UTF-8"%>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    
    <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>My JSP 'index.jsp' starting page</title>
    </head>
    <body>
    <form action="my/converter" method="post" id="自定義">
      輸入商品信息格式:(格式為: apple,10.58,200) </br>
      <input name="goods"><br>
      <input type="submit" value="提交">
    
      <br>
      <br>
    </form>
    
    </body>
    </html>
    
    

    showGoods.jsp頁面

    <%--
      Created by IntelliJ IDEA.
      User: DHL
      Date: 2020/4/28
      Time: 20:31
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>展示</title>
    </head>
    <body>
    您已經成功創建商品信息.
    </body>
    </html>
    
    

    4.結果集:

    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述

    版權聲明:本文為Beyond_Nothing原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/Beyond_Nothing/article/details/105824488

    智能推薦

    (SpringMVC)自定義類型轉換器

    文章目錄 一、問題引出 二、自定義類型轉換器 一、問題引出 可以看到這里輸入日期是字符串格式,但是封裝數據User 中需要的是 Date 類型,所以這就造成出錯 二、自定義類型轉換器 (1)定義一個類,實現 Converter 接口,該接口有兩個泛型。 (2)在 spring 配置文件中配置類型轉換器 spring 配置類型轉換器的機制是,將自定義的轉換器注冊到類型轉換服務中去 (3)運行結果:...

    struts2自定義類型轉換器

    為什么需要類型轉換器 當在表單中輸入填入日期時, 格式有很多,比如可以輸入1990年1月1日, 也可以填1990-01-01等多種方法, 這時候使用自定義類型的轉換器可以將格式進行轉化, 變為Action類可讀的格式 類型轉換器的種類 1. 基于OGNL的類型轉換器 要創建基于ognl的類型轉換器, 必須實現DefaultTypeConverter 并重寫convertValue方法 在入口的js...

    SpringMVC_10_自定義類型轉換器

    1.創建一個User對象,生成setter,getter和toString方法 2.重新寫表單 3.在ParamController類中加上saveUser方法 4.重新部署項目 輸入XXXX/XX/XX這樣的日期格式,可以執行成功 但是輸入XXXX-XX-XX就會執行失敗 如果想要XXXX-XX-XX的格式也能被轉換成功的話,就需要自定義數據類型轉換器 5.1編寫一個類,實現Converter接...

    mybatis實踐-自定義Mybatis類型轉換器

    mybatis實踐-自定義Mybatis類型轉換器 這兩天重新去看了http://www.mybatis.org/mybatis-3/zh/index.html上的文檔一遍,按照文檔上面的操作重新實踐后,整理成文檔記錄分享。 概念 概念 截圖自http://www.mybatis.org 總結就是:mybatis在預處理語句(PreparedStatement)中設置一個參數時將java類型(ja...

    SpringMVC---自定義類型轉換器

    一:自定義類型轉換器 二:spring支持的轉換器  三: 四:代碼實現 1.創建一個hander方法  2.創建自定義轉換器 3.springmvc.xml配置 4.測試jsp  ...

    猜你喜歡

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    精品国产乱码久久久久久蜜桃不卡