发表于: 2017-10-30 22:54:39

1 642


今天完成的事情

用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 。


明天的计划

部署到服务器上


遇到的问题


收获

了解了自定义标签



返回列表 返回列表
评论

    分享到