博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【SpringMVC】数据类型转换以及Spring编码过滤器
阅读量:2057 次
发布时间:2019-04-28

本文共 2669 字,大约阅读时间需要 8 分钟。

当我们提交表单时,需要使用日期时,SpringMVC能否直接将Sring类型转换为Date类型呢?

答案是不能的,所以我们需要去实现类型转换

首先我们创建index.jsp写好表单

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>      表单提交      		
姓名
性别
入职时间

配置好web.xml,在这配置两个,一个注册SpringMVC核心控制器,另一个设置Spring编码过滤器

DispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
DispatcherServlet
*.action
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
CharacterEncodingFilter
/*
然后在springmvc-test3.xml中配置好映射器

然后写好对应的EmpAction类继承AbstractCommandController

@SuppressWarnings("deprecation")public class EmpAction extends AbstractCommandController{	//org.springframework.web.servlet.mvc.AbstractCommandController能够以实体的形式,收集客户端参数	public EmpAction(){		//将表单参数封装进去		this.setCommandClass(Emp.class);	}		/**	 * 自定义类型转换器,将String->Date类型(格式yyyy-MM-dd)	 */	@Override	protected void initBinder(HttpServletRequest request,			ServletRequestDataBinder binder) throws Exception {		//向springmvc内部注入一个自定义的类型转换器		//参数一:将String转成什么类型的字节码		//参数二:自定义转换规则		//true表示该日期字段可以为空		binder.registerCustomEditor(Date.class, 				new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));	}	/**	 * obj表示封装后的实体	 * error表示封装时产生的异常	 */	@Override	protected ModelAndView handle(HttpServletRequest request,			HttpServletResponse response, Object obj, BindException error)			throws Exception {		ModelAndView modelAndView = new ModelAndView();		modelAndView.addObject("message","添加成功");		Emp emp = (Emp) obj;		System.out.println(emp.getUsername()+":" + emp.getGender()+":" + emp.getHiredate().toLocaleString());		//将对象封转到ModelAndView中		modelAndView.addObject("emp",emp);		//设置跳转页面		modelAndView.setViewName("/jsp/success.jsp");		return modelAndView;	}	}

然后在success.jsp中显示表单数据

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@taglib prefix="f" uri="http://java.sun.com/jsp/jstl/fmt" %>      成功页面        		

成功

${message} ${emp.username} ${emp.gender}

最后注意在主文件springmvc.xml中引入子文件

结果如下:

你可能感兴趣的文章
教你玩转微服务的装逼指南!
查看>>
Envoy 中文指南系列:Sidecar 模式
查看>>
面试官邪魅一笑:你猜一个 TCP 重置报文的序列号是多少?
查看>>
Envoy 中文指南系列: 安装
查看>>
最华丽的 Kubernetes 桌面客户端:Lens
查看>>
太赞了,这个神器竟然能分分钟将多个 kubeconfig 合并成一个!
查看>>
如何解决容器中 nginx worker process 自动设置的问题
查看>>
ethtool 原理介绍和解决网卡丢包排查思路
查看>>
HPE 推出容器平台 Ezmeral,向 VMware 与 Red Hat 下战书
查看>>
使用 Prometheus-Operator 监控 Calico
查看>>
如果你不习惯新版的 Github 的 UI 界面,可以试试这款插件
查看>>
容器化囧途——没上容器时好好的?
查看>>
linux内核网络参数tcp_tw_recycle 和 tcp_tw_reuse 你搞清楚了吗?
查看>>
40核CPU+80G内存的云资源终终终终终于免费了!
查看>>
Drone开源持续集成工具——Pipeline篇
查看>>
Kubernetes 源码剖析之 WorkQueue 队列 | 文末送书
查看>>
根据 PID 获取容器所在的 Pod 名称
查看>>
JAVA 面试很难吗?Oracle 工程师教你轻松搞定BAT!
查看>>
弹窗!到底谁是幕后黑手?
查看>>
免费分享一个最完美的英语学习素材 Englishpod
查看>>