发表于: 2017-11-16 11:08:39

3 916


今天完成的事

【用Tiles来完成页面的复用配置】

按t10和t11的布局可以将页面分为body,footer,header。(就是说没有mune。

配置之后。

tiles文件。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
   <definition name="10" template="/jsp/t10template.jsp">
       <put-attribute name="title" value=""/>
       <put-attribute name="header" value="/jsp/t10header.jsp" />
       <put-attribute name="menu" value="" />
       <put-attribute name="body" value="/jsp/t10body.jsp" />
       <put-attribute name="footer" value="/jsp/t10footer.jsp" />
   </definition>
   <definition name="11" template="/jsp/t11template.jsp" >
       <put-attribute name="title" value=""/>
       <put-attribute name="header" value="/jsp/t11header.jsp" />
       <put-attribute name="menu" value="" />
       <put-attribute name="body" value="/jsp/t11body.jsp"/>
       <put-attribute name="footer" value="/jsp/t11footer.jsp" />
   </definition>

</tiles-definitions>


【写一个JSP的时间处理Tag】

参考了文档:http://blog.csdn.net/super712/article/details/43985043

写一个类继承TagSupport,实现doStartTag() 方法。

package com.xiuzhen.date;

import sun.awt.im.SimpleInputMethodWindow;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
* Created by ${MIND-ZR} on 2017/11/16.
*/
public class DateTag extends TagSupport{
//定义一个炒鸡长的大数,不知道干嘛的
   private static final long serialVersionUID = 6464168398214506236L;
   //定义一个值
   private String value;
   //定义一个方法
   public int doStartTag() throws JspException {
//这部操作暂时没看懂。是一个强制类型转换?但是value本身就是个string啊。
       String vv=""+value;
       //将String类型转换为long类型
       long time=Long.valueOf(vv);
       //定义一个日期类型(getInstance单例模式创建)
       Calendar calendar=Calendar.getInstance();
       //setTimeInMillis方法从给定的long值设置日历的当前时间。
       calendar.setTimeInMillis(time);
       //SimpleDateFormat设置出一个时间格式
       SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

       String s =dateFormat.format(calendar.getTime());
       //定义一个"yyyy-MM-dd HH:mm:ss"格式的时间
       try {
//继承JspException父类的方法。。在页面打印这个时间?
           pageContext.getOut().write(s);
       } catch (IOException e) {
e.printStackTrace();
       }

//这是一个返回自己的方法。
       return super.doStartTag();

   }

public void setValue(String value) {
this.value = value;
   }
}


具体对这个类的理解都已经在图的注释上了。


编写tld文件,datetag.tld,放在/WEB-INF/tld目录下。

<?xml version="1.0" encoding= "UTF-8"?>
<taglib>
   <tlib-version>1.0</tlib-version>
   <jsp-version>1.2</jsp-version>
   <tag>
       <name>date</name>
       <tag-class>com.xiuzhen.date.DateTag</tag-class>
       <body-content>JSP</body-content>
       <attribute>
           <name>value</name>
           <required>true</required>
           <rtexprvalue>true</rtexprvalue>
       </attribute>
   </tag>
</taglib>

在web.xml中加入引用。

<jsp-config>
   <taglib>
       <taglib-uri>/tags</taglib-uri>
       <taglib-location>/WEB-INF/datetag.tld</taglib-location>
   </taglib>
</jsp-config>

测试一哈,在controller层加入一个当前时间。

然后在jsp页面body部分随便写个语句调用他。。。

<hr>
<div style= "width:180px;height:20px;margin:0 auto;border:1px solid;">
   <date:date value="${date}"/>
</div>
<hr>

启动。拿到当前时间~


【部署到服务器】

布局全乱的,应该是css布局文件没有加载上来,在jsp文件用到CSS的地方添加当前路径。

这个坑我是踩过的

搞定。

看效果请点下面,在没有把服务器停掉之前应该都有效果页面


http://47.95.7.57:8080/Task4-1.0-SNAPSHOT/index

收获

tiles的使用和配置

遇到的问题

【配置到服务器出现问题】


在服务器中使用Resin的时候,报错误信息。

但是用tomcat就没这个问题。

百度了一哈。

https://yq.aliyun.com/articles/1918这个文档基本解释的很清楚了。

各服务器静态资源默认 Servlet的名字是不一样的。

具体区别如下。


Tomcat, Jetty, JBoss, and GlassFish  默认 Servlet的名字 -- "default"
Google App Engine 默认 Servlet的名字 -- "_ah_default"
Resin 默认 Servlet的名字 -- "resin-file"
WebLogic 默认 Servlet的名字  -- "FileServlet"
WebSphere  默认 Servlet的名字 -- "SimpleFileServlet" 

这也算容器之间的不同。



tiles配置有个问题啊。。。。

比如我关于body里面出现了错误报错信息是这样的。

。。。。。。。

这怎么去查找错误啊。。。

明天计划的事

开始任务5



返回列表 返回列表
评论

    分享到