现在的位置: 首页 > 综合 > 正文

JSP中使用Taglib

2013年12月13日 ⁄ 综合 ⁄ 共 2025字 ⁄ 字号 评论关闭

  标准的JSP标记可以调用JavaBeans组件或者执行客户的请求,这大大降低了JSP开发的复杂度和维护量。JSP技术也允许你自定义的taglib,其实换句话说,taglib可以看成是对JSP标记的一种扩展,正如xml是对html的一种扩展一样。taglib通常定义在tag标签库中,这种标签库存放着你自己定义的tag标签。简而言之,如果使用taglib,那么你可以设计自己的JSP标记。

        一般来说,自定义tag标签主要用于操作隐藏对象、处理html提交的表单、访问数据库或其他企业级的服务,诸如邮件和目录操作等等。自定义tag标签的使用者一般都是那些对java编程语言非常精通,而且对数据访问和企业级服务都非常熟悉的程序员,对于HTML设计者来说,使得他可以不去关注那些较复杂的商业逻辑,而将精力放在网页设计上。同时,它也将库开发者和库使用者进行合理分工,自定义tag标签将那些重复工作进行封装,从而大大提高了生产力,而且可以使得tag库可用于不同的项目中,完美地体现了软件复用的思想。

Taglib指令:定义一个标签库,以及其自定义标签的前缀。

 

JSP中使用Taglib,用两种方法,这里将两种方法说明如下:

一、仅声明TLD(标签库描述符)的位置

在jsp文件头部,声明:

<%@taglib uri="/WEB-INF/tlds/orataglib_1_0.tld" prefix="ora" %>

举例:在MyEclipse中新建一Web工程,取名为HelloWorldTag。新建一包,包名为mytag

(1)在mytag下,新建一Java类,内容如下:

package mytag;  
import java.io.IOException;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class HelloWorldTag extends TagSupport{
      public int doStartTag() throws JspTagException{
          return EVAL_BODY_INCLUDE;
      }
      public int doEndTag() throws JspTagException{
      try{
              pageContext.getOut().write("Hello World");
          } catch (IOException ex){
               throw new JspTagException("Error!");
          }
      return EVAL_PAGE;
      }
}

(2)在WEB-INF下新建一目录,目录名为tlds,下tlds下面新建一tld文件,命名为hello.tld,内容如下:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
          PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
      "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
    <tlibversion>1.0</tlibversion>
    <jspversion>1.1</jspversion>
    <shortname>myTag</shortname>  
      <tag>
          <name>hello</name>
          <tagclass>mytag.HelloWorldTag</tagclass> 
         <bodycontent>empty</bodycontent>
     </tag>
</taglib>

(3)修改index.jsp页面代码,修改内容如下:

<%@ page language="java"%>
<%@ taglib uri="/WEB-INF/tlds/hello.tld" prefix="mytag"%>
<html>
<body>
<mytag:hello></mytag:hello>
</body>
</html>
(4)运行:在浏览器中输入http://localhost:8082/HelloWorldtag/index.jsp
运行结果为:Hello World
解释:

<mytag:hello></mytag:hello>的作用就是在标签结束后调用了doEndTag() 方法,打印出Hello World
二、定义库名称
这里就不再详细描述了。
 

抱歉!评论已关闭.