jsp自定义标签初探

jsp自定义标签就是通过自定义标签实现类来实现复杂的、可重复利用的功能。简化jsp页面,提高代码的复用性。

实现自定义标签需要:①标签处理类  ②tld标签配置文件

第一:标签处理类

标签处理类用于处理标签背后的逻辑操作以及生成页面元素,可通过继承TagSupport或者最新的SimpleTagSupport类来实现一个简单的标签处理类,重写其中的方法即可

TagSupport:包含doStartTag、doEndTag、doAfterBody方法。

       doStartTag()方法是遇到标签开始时会呼叫的方法,其合法的返回值是EVAL_BODY_INCLUDE与SKIP_BODY,前者表示将显示标签间的文字,后者表示不显示标签间的文字;

       doEndTag()方法是在遇到标签结束时呼叫的方法,其合法的返回值是EVAL_PAGE与SKIP_PAGE,前者表示处理完标签后继续执行以下的JSP网页,后者是表示不处理接下来的JSP网页

          doAfterBody(),这个方法是在显示完标签间文字之后呼叫的,其返回值有EVAL_BODY_AGAIN与SKIP_BODY,前者会再显示一次标签间的文字,后者则继续执行标签处理的下一步。

          预定的处理顺序是:doStartTag()返回SKIP_BODY,doAfterBodyTag()返回SKIP_BODY,doEndTag()返回EVAL_PAGE.

SimpleTagSupport:仅包含doTag方法,没有返回值

public class MldTag extends SimpleTagSupport {
    String color;
    public void setColor(String color) {
        this.color = color;
    }
    @Override
    public void doTag() throws JspException, IOException {
        if(color==null)
            color = "yellow";
        String html = "<button style='background:"+color+"'>颜色</button>";
        JspWriter out = getJspContext().getOut();
        out.print(html);
    }    
}

第二:tld标签配置文件

tld配置文件默认放在WEB-INF下,此时不需要在web.xml下配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
                        "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
 <tlib-version>1.0</tlib-version>
 <jsp-version>1.2</jsp-version>
 <short-name>this is my first tag</short-name>
//页面引用时的uri <%@ taglib uri="/mldTags" prefix="t" %> <uri>/mldTags</uri> <tag>
//标签引用时的名字 <t:mld/> <name>mld</name> <tag-class>org.mld.tags.MldTag</tag-class> <body-content>empty</body-content>
//标签上可以添加的属性 <attribute> <name>color</name> </attribute> </tag> </taglib>

若tld没有在WEB-INF下,需要在web.xml下配置

在web.xml中加入如下内容:

<jsp-config>
      <taglib>
//页面引用时的uri <%@ taglib uri="/mldTags" prefix="t" %>
<taglib-uri>/mldTags</taglib-uri>
//tld文件路径
<taglib-location>/test/tlds/mld.tld</taglib-location> </taglib> </jsp-config>

第三:页面调用

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/mldTags" prefix="t" %>
<!DOCTYPE>
<html>
  <head>
    <title>My JSP 'index.jsp' starting page</title>
  </head>
  <body>
           <t:mld color="green"/>
  </body>
</html>

这样遍可以通过属性在页面上创建一个简单的按钮了,效果如下:

jsp自定义标签初探先写到这里,下班吃饭

 

posted @ 2017-04-20 19:10  暗夜心慌方  阅读(124)  评论(0)    收藏  举报