日期:2014-05-16 浏览次数:20442 次
二、自定标签的作用
替换JSP中的java脚本<%%>
三、第一个自定义的标签(开发步骤)
1、编写一个类,直接或间接实现javax.servlet.jsp.tagext.Tag(一般选择继承TagSupport)
public class ShowRemoteIpTag extends TagSupport {
public int doStartTag() throws JspException {
String remoteIp = pageContext.getRequest().getRemoteAddr();
try {
pageContext.getOut().write(remoteIp);
} catch (IOException e) {
e.printStackTrace();
}
return super.doStartTag();
}
}
2、在WEB-INF目录下建立一个扩展名为tld(Tag Libary Definition)的xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>itheima</short-name>
<uri>http://www.itheima.com/jsp/mytag</uri>
<tag>
<name>remoteIp</name>
<tag-class>com.itheima.tag.ShowRemoteIpTag</tag-class>
<body-content>empty</body-content><!-- 标签的主体内容 -->
</tag>
</taglib>
3、(可选)在web.xml中建立tld文件的名称空间和tld文件的存放位置的对应关系
<jsp-config>
<taglib>
<taglib-uri>http://www.itheima.com/jsp/mytag</taglib-uri>
<taglib-location>/WEB-INF/itheima.tld</taglib-location>
</taglib>
</jsp-config>
4、使用:
<%@ taglib uri="http://www.itheima.com/jsp/mytag" prefix="itheima"%>
**知识点:Tag接口
int SKIP_BODY
int EVAL_BODY_INCLUDE
int SKIP_PAGE
int EVAL_PAGE
void setPageContext(PageContext pc):容器会把当前页面的PageContext对象传给你。在doXXX之前。
void setParent(Tag t):容器会传入该标签的父标签类的实例。如果没有传入null
int doStartTag():遇到自定义标签的开始标签就执行。容器来调用
int doEndTag():遇到自定义标签的结束标签就执行。容器调用
自定义标签的执行过程和生命周期:
四、传统标签:附属功能
控制jsp页面某一部分内容是否执行。
控制结束标签后的JSP内容是否执行
控制jsp页面内容重复执行。
修改页面内容输出。
五、JSP中标签核心接口或类的类图
六、简单标签
简单标签的执行过程:
小结:(tld文件的主要标签和作用)
1、头部信息:
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>sitheima</short-name>
<uri>http://www.itheima.com/jsp/smytag</uri>
</taglib>
2、主要元素:
tag:定义标签
name:标签的使用名称
tag-class:标签处理类的全名
body-content:标签主体内容的类型
可选值:
JSP jsp文件中可以出现啥,主体内容就可以出现啥。为传统标签服务。
empty 没有主体内容,都(传统和简单)可以用
&