发表于: 2017-10-30 22:54:39
1 641
今天完成的事情
用Tag标签来处理时间的转换
以create_at为例,表示记录的创建时间,在添加数据的时候就将获取当前时间,类型为date,然后将格式转换为long类型,之后存储进数据库:
Date date=new Date();
long time=date.getTime();
student.setCreate_at(time);
这样就存入了long类型的时间数据,在数据库中的类型为bigint
然后利用自定义标签在页面上将获取到的时间转换为date格式并显示出来。
先写一个工具类:
public class DateTag extends TagSupport{
private static final long serialVersionUID = 6464168398214506236L;
private String value;
@Override
public int doStartTag() throws JspException {
String vv = "" + value;
try {
long time = Long.valueOf(vv.trim());
Calendar c = Calendar.getInstance();
c.setTimeInMillis(time);
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String s = dateformat.format(c.getTime());
pageContext.getOut().write(s);
} catch (Exception e) {
e.printStackTrace();
}
return super.doStartTag();
}
public void setValue(String value) {
this.value = value;
}
}
这个类继承了TagSupport,实现了doStartTag() 方法,serialVersionUID用于在序列化和反序列化的过程中进行验证,SimpleDateFormat用于设置显示时间的格式
然后时编写tld文件,datetag.tld,放在WEB-INF目录下,
<?xml version="1.0" encoding="UTF-8" ?>
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>date</short-name>
<tag>
<name>date</name>
<tag-class>com.jnshu.util.DateTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>value</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
其中的tag-class为自己的工具类的路径
需要在web.xml中加入引用:
<jsp-config>
<taglib>
<taglib-uri>/tags</taglib-uri>
<taglib-location>/WEB-INF/datetag.tld</taglib-location>
</taglib>
</jsp-config>
taglib-location中时tld.xml文件的路径
然后就可以在jsp页面使用这一标签了,因为牵涉到对时间进行格式化,需要使用fmt标签,还需要在页面中引入自定义标签:
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="/tags" prefix="date"%>
在页面中用el表达式完成取值,其中的c是所获取的对象,用标签完成格式转换:
<date:date value ="${c.create_at}"/>
执行效果:
因为在数据库中直接将数据设置为 0 ,所以显示了1970年,在date类型中,时间是从1970年1月1日零点零分开始的,因为这里是东八区,所以显示的是 8:00 。
明天的计划
部署到服务器上
遇到的问题
无
收获
了解了自定义标签
评论