1.创建客户化JSP标签的步骤
(1)创建标签处理类
(2)创建标签库描述文件
(3)在JSP文件中引入标签库,然后插入标签,例如:<mm:hello/> (<标签前缀:标签名>)
2.JSP Tag API
Servlet容器编译JSP网页时,如果遇到自定义标签,就会调用这个标签的处理类
标签处理类必须继承以下两个类之一:
javax.servlet.jsp.tagext.TagSupport类:doEndTag()方法和doStartTag()方法
javax.servlet.jsp.tagext.BodyTagSupport类:它是上面那个类的子类
doStartTag:Servlet容器遇到自定义标签的起始标识时,调用该方法
doStartTag:Servlet容器遇到自定义标签的结束标识时,调用该方法
setPageContext(PageContext pc):设置PageContext对象,该方法由Servlet容器在调用doStartTag
3.示例1:创建hello标签。
定义一个名字为mytaglib的标签库,包含一个hello标签,这个标签能将JSP页面中所有的<mm:hello/>解析为字符串“hello”
(1)创建标签处理类,继承TagSupport或BodyTagSupport
MyTag.java
(2)创建标签库描述文件 .tld 存放在与web.xml在同一个目录
mytag.tld
(3)在JSP中引入标签库,然后插入标签
执行结果:
4.示例2:创建message标签
创建一个能替换test应用中JSP网页的静态文本的标签,标签名为message,他放在mytaglib标签库中
标签处理类:MyTag2.java
message.properties(属性文件)
(初始化时加载properties文件,把信息加载到内存)InitServlet2.java
tld文件
tag2.jsp
首先,有一个初始化的Servlet,服务器启动时,将message.properties文件的内容加载到Properties对象里,然后将Properties对象放置到application范围内
当访问tag2.jsp时,遇到标签结束,调用doEndTag方法。这个方法执行时,从application范围内将Properties对象拿出来,自动调用setKey,得到页面上的key,调用getProperty(key),返回对应的value值