1.建一个包用来存放实体类com.cry.domain含有日期类型
package com.cry.damain;
import java.io.Serializable;
import java.time.LocalDate;
public class Register implements Serializable {
private Integer id;
private String username;
private String password;
private Integer age;
private LocalDate date;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public LocalDate getDate() {
return date;
}
public void setDate(LocalDate date) {
this.date = date;
}
@Override
public String toString() {
return "Register{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
", date=" + date +
'}';
}
}
2.自定义日期转换器,建一个包用来存在该类com.cry.converter
public class MyconverterRegister implements Converter<String, LocalDate> {
//-------------------------------------------需要转换的源数据,目标数据-----
@Override
public LocalDate convert(String s) {
//加入异常处理,成功返回该日期,否则返回null
try{
return LocalDate.parse(s);
}catch (Exception e){
e.printStackTrace();
}
return null;
}
3.在Spring的配置文件中配置自定义的转换器springconfig.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.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.cry.service"/>
<!--根据id值告诉spring框架,配置的自定义转换器-->
<mvc:annotation-driven conversion-service="conversionRegister"/>
<bean id="conversionRegister" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<!--加入配置转换器的路径-->
<list>
<bean class="com.cry.converter.MyconverterRegister"/>
</list>
</property>
</bean>
</beans>
4.控制器com.cry.controller
package com.cry.controller;
import com.cry.damain.Register;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class RegisterController {
//根据jsp文件form的action属性,连接控制器
@RequestMapping("/register.action")
public String register(Register register){
//因为没有连接数据库,所以讲页面的值在控制台输出
System.out.println(register);
//点击提交后转发到hello.jsp页面
return "forward:/WEB-INF/jsp/hello.jsp";
}
}
5.页面
<%--
Created by IntelliJ IDEA.
User: user
Date: 2020/3/26
Time: 19:59
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<!--***********************************************************isELIgnored的值设为false,不然不能识别El表达式-->
<html>
<head>
<title>Title</title>
</head>
<body>
<!--******************************action属性,对应controller**************-->
<form action="${pageContext.request.contextPath}/register.action" method="post">
编号:<input name="id"><br/>
姓名:<input name="username"/><br/>
密码:<input type="password" name="password"/><br/>
年龄:<input name="age"> <br/>
出生日期:<input name="date"><br/>
<input type="submit" value="login">
</form>
</body>
</html>
6.页面结果:
7.控制台结果
8.说几个错误
(1)日期格式要完整,如:2020-3-26返回值就会为null,应为2020-03-26
或者日期错误如:2020-90-13也会null
(2)一个很神奇的错,那就是建立jsp文件
1)
2)要是没有写后缀.jsp而是直接选jsp,在点提交后页面不会跳转,以前也没发现这个问题,难道是电脑的问题?郁闷
3)加了后缀就可以了
3.page指令的isELIgnored的属性一定要设为false,不然无法识别EL表达式
4.spring和springMVC集成时,默认spring的配置路径是WEB-INF/SpringMvc-servlet.xml,而且名字也得一致,要是不想用默认路径可以用一下方法在WEB-INF下的web.xml下配置,
写下想要的路径
like this