天天看点

JSP中使用Taglib

  标准的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;   imp ort java.io.IOException; imp ort javax.servlet.jsp.*; imp ort javax.servlet.jsp.tagext.*; public class HelloWorldTag extends TagSupport{       public int doStartTag() throws JspTagException{           return EV AL_BODY_INCLUDE;       }       public int doEndTag() throws JspTagException{       try{               pageContext.getOut().write("Hello World");           } catch (IOException ex){                throw new JspTagException("Error!");           }       return EV AL_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 二、定义库名称 这里就不再详细描述了。   转载参见: http://blog.163.com/jany_1016/blog/static/4604400620091112114127341/

继续阅读