一、首页来看一个jsp页面:
<html>
<body>
This is my JSP page. <br>
Date : <%=new java.util.Date().toString() %><br>
File : <input value=”<%=request.getServletPath() %>”/>
</body>
</html>
此时,页面中包含有大量的Java代码,使页面维护起来困难。
二、简单标签的定义:
1、 定义一个Java类来负责输出刚才的内容:
package com.solid.tags;
import java.io.IOException;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class DemoTag extends TagSupport {
private static final long serialVersionUID = -8855151786721428161L;
private String parameter;
public String getParameter() {
return parameter;
}
public void setParameter(String parameter) {
this.parameter = parameter;
}
public int doStartTag() throws JspException {
try {
HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
JspWriter out = pageContext.getOut();
if(parameter.equals("filename"))
out.println(request.getServletPath());
else
out.println(new Date());
} catch (IOException e) {
e.printStackTrace();
}
return SKIP_BODY;
}
}
2、 创建标签文件solid-tags.tld文件:
<?xml version="1.0" encoding="UTF-8"?>
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<tag>
<name>demo</name>
<tag-class>com.solid.tags.DemoTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>parameter</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
在这个标签文件中,我们将我们创建的标签取名 demo,并声明了类型和参数(parameter)。将该文件保存在 /WEB-INF 下面。
3、 重新写刚才的jsp页面:
<%@taglib uri="/WEB-INF/solid-tags.tld" prefix="mytag"%>
<html>
<body>
This is my JSP page. <br>
Date : <mytag:demo parameter="date" /><br>
File : <mytag:demo parameter="filename" />
</body>
</html>