jsp-自定义标签-传统标签开发
2014-11-14 18:13
489 查看
jsp-自定义标签-传统标签开发 开发流程 使用Java处理类来开发自定义JSP标签时,主要分为下几个步骤 创建标签的处理类(Tag Handle Class)。这个类实现Tag接口,用来定义标签的行为,并在JSP引擎遇到自定义标签时调用执行。 创建标签库描述 (tld) 文件(Tag Library Descriptor File),在tld文件中对标签处理器类进行描述。 在JSP文件中用taglib指令引入标签库,然后使用标签库描述文件中指定的标签名来使用它。 执行过程 当一个含有自定义标签的JSP页面被JSP引擎(Web容器)转译成Servlet时,JSP引擎遇到自定义的标签, 会把这个自定义标签转化成对一个称为“标签处理类”的调用。之后,当这个JSP页面被执行时, JSP引擎就会调用这个“标签处理类”对象,并执行其内部定义的相应操作方法,从而完成相应的功能。 Tag:此接口定义对于所有标签处理类都需要实现的方法。 IterationTag:此接口扩展了Tag接口,增加了控制重复执行标签主体的方法。 BodyTag:此接口扩展了IterationTag接口,并增加了访问和操作标签主体内容的方法。 BodyTagSupport类中增加了两个方法: setBodyContent(BodyContentbc):容器在执行这个标签处理类的实例时,将调用该方法,把标签主体返回的内容缓存在BodyContent类的实例中。 BodyContent除了从父类JspWriter继承提供用于向响应体中写入文本的方法,还提供了用于获取它缓冲的标签体内容。 doInitBody():计算标签主体之前调用该方法进行初始化共,可以向bodyContent对象中写入初始内容,这些内容会放置在标签主体内容之前。 //tld文件中的四种标签体类型 //<!-- 标签中的内容 empty--><body-content>empty</body-content> EMPTY JSP scriptless tagdepentend //自定义标签的使用(输出自己的ip) public class IpTag implements Tag{ private PageContext pageContext; @Override public int doEndTag() throws JspException { // Tag.SKIP_PAGE 执行到这个标签 页面就结束了 //Tag.EVAL_PAGE 标签执行完毕 继续执行 return Tag.EVAL_PAGE; } @Override public int doStartTag() throws JspException { //获取request对象 HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); //获取reponse对象 HttpServletResponse response = (HttpServletResponse) pageContext.getResponse(); //获取ip地址 String ip = request.getRemoteAddr(); //写出去 JspWriter writer = pageContext.getOut(); try { writer.write(ip); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //Tag.EVAL_BODY_INCLUDE 代表的是执行标签体中的内容 //Tag.SKIP_BODY; 跳过标签体中内容 return Tag.EVAL_BODY_INCLUDE; } @Override public Tag getParent() { // TODO Auto-generated method stub return null; } @Override public void release() { // TODO Auto-generated method stub } @Override public void setPageContext(PageContext pageContext) { this.pageContext=pageContext; } @Override public void setParent(Tag arg0) { // TODO Auto-generated method stub } } //自定义 D:\tomcat-8.0.14\tomcat\webapps\examples\WEB-INF\jsp\example-taglib.tld <?xml version="1.0" encoding="UTF-8" ?> <taglib> <!-- 版本号 --> <tlib-version>1.0</tlib-version> <!-- JSP版本 --> <jsp-version>1.2</jsp-version> <!-- 建议的prefix的名称 --> <short-name>mhl</short-name> <!-- uri地址 --> <uri>http://www.hbsi.com/ip-taglib</uri> <description>定义一个ip输出的标签</description> <tag> <!-- 标签名称 --> <name>ip</name> <!-- 标签处理类 --> <tag-class>www.csdn.net.blank.tag.IpTag</tag-class> <!-- 标签中的内容 empty--> <body-content>empty</body-content> <description>描述ip</description> </tag> </taglib> //index.jsp页面显示 %@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!--引用自定义标签的uri地址 --> <%@ taglib uri="http://www.hbsi.com/ip-taglib" prefix="mhl"%> <body> <h2>当前的ip地址</h2><br/> <mhl:ip></mhl:ip> </body>
相关文章推荐
- JSP自定义标签开发(四)——带标签体的标签实现
- JSP自定义标签开发(八)—— xx.tag自定义标签开发之分页标签(jquery + div +css 美化)
- javaweb(二十四)——jsp传统标签开发
- JSP自定义标签(4):开发jsp嵌套的标签
- JSP自定义标签开发(五)——标签类获取 request 、 session
- JSP传统标签开发
- JavaWeb总结二十四、jsp传统标签开发
- Jsp传统标签库开发
- 自定义标签(JspFragment类、invoke方法、开发带属性的标签)
- javaweb学习总结(二十四)——jsp传统标签开发
- JavaWeb学习总结(二十四)——jsp传统标签开发
- 自定义标签(JspFragment类、invoke方法、开发带属性的标签)
- javaweb学习总结(二十四)——jsp传统标签开发
- javaweb学习总结(二十四)——jsp传统标签开发
- 自定义标签(JspFragment类、invoke方法、开发带属性的标签)
- JSP自定义标签(二):JSP传统标签
- JSP传统标签开发
- javaweb学习总结(二十四)——jsp传统标签开发
- JavaWeb开发之十六:jsp传统标签开发