废话我就不说了,直接进入主题了,先来一张思维导图
如图要实现SpringMVC自定义类型转换器主要有两步,自定义类实现Convert接口和Spring配置文件中配置转换器
下面是我写的一个小dome供大家参考:
(1).配置pom.xml
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- 引入Spring web mvc依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.3.RELEASE</version> </dependency> <!-- 引入servlet 依赖--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.0</version> <scope>provided</scope> </dependency> </dependencies>(2).配置Springmvc文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--配置扫描器--> <context:component-scan base-package="com.controller"></context:component-scan> <!--视图解析器--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--前缀--> <property name="prefix" value="/"></property> <!-- 后缀--> <property name="suffix" value=".jsp"></property> </bean> <mvc:annotation-driven conversion-service="myDate"></mvc:annotation-driven> <!--配置自定义类型转换器--> <bean id="myDate" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <list> <bean class="com.converter.DateConverter"></bean> //转换器全限量名 </list> </property> </bean> </beans>
(3).配置web.xml
<!-- 加载Springmvc--> <servlet> <servlet-name>springmVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmVC</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping>(4).jsp页面,就一个form表单
<body> <form action="/getdate.action" method="post"> 请输入时间日期:<input type="text" name="uname"> <input type="submit" value="提交"/> </form> </body>(5).自定义类
@Controller public class IndexConterller { @RequestMapping("getdate") public String getdate(Date uname){ System.out.println("转了后的值: "+uname); return "success"; } }(6).转换器类package com.converter; import org.springframework.core.convert.converter.Converter; import org.springframework.stereotype.Controller; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @Controller public class DateConverter implements Converter<String,Date>{ //把什么类型转成什么类型 Date date=null; public Date convert(String s) { //s为表单输入框的值 System.out.println(s); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); try { //把String类型转成date类型 date=sdf.parse(s); } catch (ParseException e) { e.printStackTrace(); } return date; } }(7).运行结果
到这里,一个String转Date的自定义类型转换器就完成了,希望这个小dome能帮到各位!