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.結果集:
智能推薦
(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 ...
猜你喜歡
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壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...