发表于: 2017-07-03 23:43:48
1 1179
1. 来到了北京线下,认识了各种师兄师姐。还没改头像什么的,明天弄好。
2. 学习了如何添加JSP自定义标签;有哪几个步骤;tld配置文件怎么写,都配置哪些内容;JSP页面如何导入配好的自定义标签;如何配置标签的属性(Attribute);SimpeTag接口是什么,怎么写标签处理器类;带属性的自定义标签在JSP页面上写。
3. 学习了Tiles框架单独使用的基本用法,如何配置web.xml,如何配置tiles.xml,如何写模板和定义。但是把SpringMVC和Tiles整合在一起时一直失败,原因不明。把视图解析器换成Tiles的就空指针异常了。
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver"><property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"></property>
</bean>
4. 完成了任务4的第二部分:
- 2.用Tiles来完成页面的复用配置,用Tag标签来处理时间的转换,可以自行写一个JSP的时间处理Tag,可以根据传入的时间格式把Long变成对应的格式。
首先是用Tiles重新组合页面,根据观察两个页面可以分为5个部分,title,header,navbar,body,footer,只有body和title不一样。
web.xml增加
<servlet>
<servlet-name>Tiles Dispatch Servlet</servlet-name>
<servlet-class>org.apache.tiles.web.util.TilesDispatchServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Tiles Dispatch Servlet</servlet-name>
<url-pattern>*.tiles</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.apache.tiles.extras.complete.CompleteAutoloadTilesListener</listener-class>
</listener>
tiles.xml (只写了主页,另一个只有title和body不一样)
<tiles-definitions>
<definition name="homepage" template="/layouts/classic.jsp">
<put-attribute name="title" value="首页-HomePage" />
<put-attribute name="header" value="/header.jsp" />
<put-attribute name="navbar" value="/navbar.jsp" />
<put-attribute name="body" value="/index_body.jsp" />
<put-attribute name="footer" value="/footer.jsp" />
</definition>
</tiles-definitions>
因为没有和SpringMVC整合,所以mvc的配置文件了没有配bean
index
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="../bootstrap-3.3.5-dist/css/bootstrap.css">
<link href="Untitled-3.css" rel="stylesheet" type="text/css">
<link href="Untitled-1base.css" rel="stylesheet" type="text/css">
</head>
<body>
<tiles:insertDefinition name="homepage" />
</body>
</html>
其他的几个jsp就是把原来的html拆开了放在不同的jsp里面。
第二部分就是写一个自定义的tag标签,将Long转为date,但这两个页面没有返回时间,就用了前面GET页面。
标签处理器类:相当于一个方法,传入一个Long,直接在页面上打出来了,我希望是返回一个字符串,让页面去打印,但是不会实现。
public class LongToDateTag implements SimpleTag {
private Long longTime;
private PageContext pageContext;
public void setLongTime(Long longTime) {
this.longTime = longTime;
}
@Override
public void doTag() throws JspException, IOException {
if(longTime != null){
JspWriter out = pageContext.getOut();
out.print(DateFormat.getInstance().format(longTime));
}
}
tld文件:
<tlib-version>1.0</tlib-version>
<short-name>zt1106</short-name>
<uri>http://zt1106.com</uri>
<!-- Invoke 'Generate' action to add tags or functions -->
<tag>
<name>longToDate</name>
<tag-class>com.zt1106.xiuzhen.task2.tag.LongToDateTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>longTime</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
JSP中使用标签:
<c:forEach items="${requestScope.users }" var="user">
<zt1106:longToDate longTime="${user.createAt}"></zt1106:longToDate>
${user.createAt } <br><br>
</c:forEach>
效果:
明天:完成任务四;学习SpringMVC的View类是什么;看看师兄的代码是怎么写的,学习他们写代码的规范;
问题:高亮
总结:无
评论