Servlet编程之自定义标签

  自定义标签的目的:以简单的标签,隐藏复杂的逻辑。

  使用自定义标签配置过程:

  1. 在对应的web应用下,配置.tld文件,如${webapp}/WEB-INF/tlds/mytaglib.tld,新建tag标签如下:

 

    <tag>
      <!--自定义标签名-->
      <name>helloWorld</name>
      <!--自定义标签处理类-->
      <tag-class>domain.HelloWorldTag</tag-class>
      <!--自定义标签体为空-->
      <body-content>empty</body-content>
    </tag>

 

     2. 在web.xml文件中配置标签库信息,这个配置是为了web容器可以定位TLD文件的位置

      

      <jsp-config>
	<taglib>
	  <taglib-uri>/mytaglib</taglib-uri>
	  <taglib-location>/WEB-INF/tlds/mytaglib.tld</taglib-location>
	</taglib>
      </jsp-config>

       其中,<jsp-config>用于为web应用中的JSP文件提供全局配置信息;<taglib>用于指定JSP页面使用的标签库信息;

        两个子元素,<taglib-uri>元素指定在web应用程序中使用的标签库的URI标识,JSP页面的taglib指令通过这个uri

        读取到tld文件;<taglib-location>指定TLD文件的位置。

 

  3. 创建自定义标签处理类,必须继承父类javax.servlet.jsp.tagext.SimpleTagSupport,两个要求:(1)如果标签类包含属性,每个属性要有对应的getter和setter方法;(2)重写doTag()方法,这个方法负责生成页面内容

     

     public class HelloWorldTag extends SimpleTagSupport
     {
	//复写的doTag方法,标签实际处理方法,生成自定义的页面内容
	public void doTag() 
		throws IOException
	{
		//获取页面输出流,并输出字符串
		getJspContext().getOut().write("Hello World " + new java.util.Date());
	}

     }

       注意,在编译时,需要将%CATALINA_HOME%/lib/jsp-api.jar包添加到环境变量CLASSPATH中,这样编译时才能找到处理包,

    否则会报错。

  4. 页面中引用该自定义标签

    

     <%@ taglib uri="/mytaglib" prefix="mytag" %>
     <html>
	<head>
		<title>自定义标签示范</title>
	</head>
	<body bgcolor="#ffffc0">
		<h2>下面显示的是自定义标签中内容</h2>
		<!--使用标签,其中mytag是标签前缀,根据taglib的编译指令,
			mytag前缀由/mytaglib的标签库处理-->
		<mytag:helloWorld /><br/>
	</body>
     </html>


    通过以上操作步骤,启动服务器,执行结果如下(这个导入图片真扯,只能把内容贴过来了,难道是我不会用???):

   下面显示的是自定义标签中内容

     Hello World Sun Mar 09 15:04:23 CST 2014

    
    总结:以上自定义标签的demo的整体运行过程是,用户请求该页面(mytag.jsp),读取到自定义标签

       <%@ taglib uri="/mytaglib" prefix="mytag" %>,web应用到web.xml文件中根据uri标识符定位

       到标签库(mytaglib.tld)的具体位置,然后根据标签名称helloWorld定为到具体的标签,

       在标签中指定标签处理类,根据标签处理类的处理内容展现页面结果。

    

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值