15SpringMvc_在业务控制方法中写入模型变量收集参数,且使用@InitBind来解决字符串转日期类型

之前第12篇文章中提到过在业务控制方法中写入普通变量收集参数的方式,也提到了这种凡方式的弊端(参数很多怎么办),所以这篇文章讲的是在业务控制方法中写入模型变量来收集参数。本文的案例实现的功能是,在注册页面(adduser.jsp)上需要输入用户的Id,用户的名字,用户的薪水,用户的入职日期,然后在Action收集,并且在success.jsp中显示出来。

案例如下:

案例结构图:

aaarticlea/png;base64,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" alt="" />

上图中的web.xml中内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>SpringMvc_10day_self</display-name>
<!-- Spring提供了一个Filter专门用来解决Post提交中文的乱码问题 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter </filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <servlet>
<!--这个名字可以随便取得,但是这个名字取了之后,以后在 WEB-INF下面创建SpirngMVC的配置文件是,命名必须以这个开头, 所以这里取名叫做DispatcherServlet,那么之后的xml文件取名必须为DispatcherServlet-servlet.xml(一个字都不能差) -->
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 通知DispatcherServlet去指定目录下找到springmvc.xml配置文件 -->
<!--
注意这里的 <param-name>contextConfigLocation</param-name>一个字母都不能有错
一旦有错就会去WEB-INF下面去找
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.action</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
</web-app>

第二步:写spring.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
>
<import resource="com/guigu/shen/Action8/springmvc_008.xml"/>
</beans>

第三步:编写springmvc_008.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
>
<!-- 控制器(程序员)(必须配置) -->
<context:component-scan base-package="com.guigu.shen.Action8"/> <!-- 基于注解的映射器(可选)
这个类和以前的xml方式的类不同,专门是注解用的
-->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> <!-- 基于注解的适配器(可选)
这个类和以前的xml方式的类不同,专门是注解用的
-->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> <!-- 视图解析器(可选)
这个类和以前的xml方式的类一样
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> </bean> </beans>

第四步:编写实体类User。

package com.guigu.shen.Action8;

import java.util.Date;

/*
用户
*/
public class User {
private Integer id=1;
private String username;
private Double salary;
private Date hiredate; /**
*
*/
public User() {
}
/**
* @return the id
*/
public Integer getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(Integer id) {
this.id = id;
}
/**
* @return the username
*/
public String getUsername() {
return username;
}
/**
* @param username the username to set
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @return the salary
*/
public Double getSalary() {
return salary;
}
/**
* @param salary the salary to set
*/
public void setSalary(Double salary) {
this.salary = salary;
}
/**
* @return the hiredate
*/
public Date getHiredate() {
return hiredate;
}
/**
* @param hiredate the hiredate to set
*/
public void setHiredate(Date hiredate) {
this.hiredate = hiredate;
} /* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() { return this.id+this.username+this.salary+this.hiredate.toString();
} }

第五步:编写Action8包下面的UserAction.java文件

/**
* Create by 沈晓权
* Create on 2016年8月8日下午8:53:34
*/
package com.guigu.shen.Action8; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
*
*
请求路径可以拆分为:根模块的名字+分模块的名字
就是相当于当访问http://127.0.0.1:8080:项目名/user/register时就会进入到
registerMethod方法。 */
@Controller
@RequestMapping(value="/user")//根模块的请求名字
public class UserAction {
/*
* 员工注册
*
*/
@RequestMapping(method=RequestMethod.POST,value="/register")//分模块的请求名字
/*
采用模型的方式(User)来收集从页面传来的参数。
方法里面的参数user和以前的参数一样会被用反射的方式去赋值。 */
public String registerMethod(User user,Model model)
{
//打印出user里面的信息
System.out.print("员工的信息是"+user.toString());
//将User绑定到model对象中去。
model.addAttribute("user", user);
//转发到 success.jsp中去。
return "/jsp/success.jsp";
}
@RequestMapping(value="/login",method={RequestMethod.POST,RequestMethod.GET})//分模块的请求名字
public String loginMethod(Model model,String username)
{
model.addAttribute("message", "员工注册成功");
System.out.println(username);
return "/jsp/success.jsp"; } }

第六步:测试。在adduse.jsp中输入信息。

aaarticlea/png;base64,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" alt="" />

但是出现了错误,

错误提示:Field error in object 'user' on field 'hiredate': rejected value [2015-3-2];表示Date类型的2015-3-2不能不能采集到。

那怎么办?参考第八篇博客写日期转换器。第八篇博客里面写的是protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder)这个方法。但是我么这里没有,那怎么办?用注解@InitBinder。这样子的话一旦发现Date类型失败,马上去找被@InitBinder注解的方法,然后执行里面的日期转换器。

修改UserAction.java方法

package com.guigu.shen.Action8;

import java.text.SimpleDateFormat;
import java.util.Date; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
*
*
请求路径可以拆分为:根模块的名字+分模块的名字
就是相当于当访问http://127.0.0.1:8080:项目名/user/register时就会进入到
registerMethod方法。
*/
@Controller
@RequestMapping(value="/user")//根模块的请求名字
public class UserAction {
/*
* 员工注册
*
*/
@RequestMapping(method=RequestMethod.POST,value="/register")//分模块的请求名字
/*
采用模型的方式(User)来收集从页面传来的参数。
方法里面的参数user和以前的参数一样会被用反射的方式去赋值。 */
public String registerMethod(User user,Model model)
{
//打印出user里面的信息
System.out.print("员工的信息是"+user.toString());
//将User绑定到model对象中去。
model.addAttribute("user", user);
//转发到 success.jsp中去。
return "/jsp/success.jsp";
}
@RequestMapping(value="/login",method={RequestMethod.POST,RequestMethod.GET})//分模块的请求名字
public String loginMethod(Model model,String username)
{
model.addAttribute("message", "员工注册成功");
System.out.println(username);
return "/jsp/success.jsp"; }
/**
* 自定义类型转换器
* 就是说当Date类型的数据不能得到时,会自动查找@InitBinder注解过的方法
*
*/
@InitBinder
protected void initBinder(HttpServletRequest request,ServletRequestDataBinder binder) throws Exception {
binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
} }

运行结果:一切正常。

上一篇:skiasharp在阿里云Windows server 2016上部署时提示The type initializer for 'SkiaSharp.SKAbstractManagedStream' threw an exception. 错误


下一篇:Ubuntu中设置环境变量详解