tld定义格式

[html] view plaincopy
  1. <?xml version="1.0" encoding="ISO-8859-1" ?>
  2. <!DOCTYPE taglib
  3. PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
  4. "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
  5. <taglib>
  6. <!--定义标签版本库-->
  7. <tlib-version>1.0</tlib-version>
  8. <!--定义jsp版本库-->
  9. <jsp-version>1.2</jsp-version>
  10. <short-name>Cms Tag</short-name>
  11. <description><!--标签描述--->
  12. A simple appbase tag library
  13. </description>
  14. <tag>
  15. <name>page</name><!--tag的名字-->
  16. <tag-class>com.cms.common.tag.PageTag</tag-class><!--tag对应的java类的名字-->
  17. <body-content>empty</body-content>
  18. <!--关于body-content 有三个值可选;empty:标签体必须为空;jsp:标签由其他jsp元素组成比如标签中含有<%=attributeName%>的jsp元素,那么此时body-content的值就是实际attributeName传入的值;tagdependent:有标签解释不带jsp转换(这个深入的含义不太了解)-->
  19. <attribute><!---这里表示的是这个tag的一个参数-->
  20. <name>cmsform</name><!--这个参数的名字-->
  21. <required>true</required><!--是否是必填选项-->
  22. <rtexprvalue>true</rtexprvalue><!--这个参数的值是否可以写入,换句话说 就是这个参数是否可以动态赋值-->
  23. </attribute>
  24. </tag>
  25. </taglib>

定义Tag对应类

此类必须重写doStartTag以及doEndTag方法

[java] view plaincopy
  1. /**
  2. *
  3. */
  4. package com.cms.common.tag;
  5. import javax.servlet.jsp.JspException;
  6. import javax.servlet.jsp.JspWriter;
  7. import javax.servlet.jsp.tagext.TagSupport;
  8. /**
  9. * @author louisliao
  10. *
  11. */
  12. public class DemoViewTag extends TagSupport {
  13. /**
  14. *
  15. */
  16. private static final long serialVersionUID = 1L;
  17. private String cmsform = "";
  18. public String getCmsForm() {
  19. return cmsform ;
  20. }
  21. public void setCmsForm(String cmsform ) {
  22. this.cmsform = cmsform ;
  23. }
  24. /**
  25. *
  26. */
  27. public DemoViewTag() {
  28. // TODO Auto-generated constructor stub
  29. }
  30. public int doStartTag()
  31. {
  32. return super.SKIP_BODY;
  33. }
  34. public int doEndTag() throws JspException
  35. {
  36. JspWriter writer=pageContext.getOut();
  37. try {
  38. writer.print("这是我的标签示例<br/>"+"cmsform :"+this.cmsform);
  39. } catch (Exception e) {
  40. // TODO: handle exception
  41. e.printStackTrace();
  42. }
  43. return super.EVAL_PAGE;
  44. }
  45. }

在web.xml中加入taglib对应文件配置

如:

[html] view plaincopy
  1. <taglib>
  2. <taglib-uri>http://mytag.sf.net</taglib-uri>
  3. <taglib-location>/WEB-INF/mytag.tld</taglib-location>
  4. </taglib>

这样就表示了http://mytag.sf.net对应WEB-INF/mytag.tld文件

在Jsp页面中引用

如:

<%@ taglib uri="http://mytag.sf.net" prefix="myTag"%>

在Jsp页面中使用

<myTag:exname1><myTag:exname1>

示例:

定义myTag.tld标签文件

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
  3. "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
  4. <taglib>
  5. <tlibversion>1.0</tlibversion>
  6. <jspversion>1.1</jspversion>
  7. <shortname>MyJSPTag Library</shortname>
  8. <uri>http://mytag.sf.net</uri>
  9. <info>我的示例标签库</info>
  10. <tag>
  11. <name>demo.Viewport</name>
  12. <tagclass>com.myapp.web.tag.DemoViewTag</tagclass>
  13. <bodycontent>JSP</bodycontent>
  14. <info>demo.Viewport标签</info>
  15. <attribute>
  16. <name>northTitle</name>
  17. <required>true</required>
  18. <rtexprvalue>true</rtexprvalue>
  19. </attribute>
  20. <attribute>
  21. <name>westTitle</name>
  22. <required>true</required>
  23. <rtexprvalue>true</rtexprvalue>
  24. </attribute>
  25. </tag>
  26. </taglib>

定义标签类

[java] view plaincopy
  1. /**
  2. *
  3. */
  4. package com.myapp.web.tag;
  5. import javax.servlet.jsp.JspException;
  6. import javax.servlet.jsp.JspWriter;
  7. import javax.servlet.jsp.tagext.TagSupport;
  8. /**
  9. * @author louisliao
  10. *
  11. */
  12. public class DemoViewTag extends TagSupport {
  13. /**
  14. *
  15. */
  16. private static final long serialVersionUID = 1L;
  17. private String northTitle = "";
  18. private String westTitle = "";
  19. public String getNorthTitle() {
  20. return northTitle;
  21. }
  22. public void setNorthTitle(String northTitle) {
  23. this.northTitle = northTitle;
  24. }
  25. public String getWestTitle() {
  26. return westTitle;
  27. }
  28. public void setWestTitle(String westTitle) {
  29. this.westTitle = westTitle;
  30. }
  31. /**
  32. *
  33. */
  34. public DemoViewTag() {
  35. // TODO Auto-generated constructor stub
  36. }
  37. public int doStartTag()
  38. {
  39. return super.SKIP_BODY;
  40. }
  41. public int doEndTag() throws JspException
  42. {
  43. JspWriter writer=pageContext.getOut();
  44. try {
  45. writer.print("这是我的标签示例<br/>westTitle:"+this.westTitle+"<br/>northTitle:"+this.northTitle);
  46. } catch (Exception e) {
  47. // TODO: handle exception
  48. e.printStackTrace();
  49. }
  50. return super.EVAL_PAGE;
  51. }
  52. }

web.xml添加配置

[html] view plaincopy
  1. <taglib>
  2. <taglib-uri>http://mytag.sf.net</taglib-uri>
  3. <taglib-location>/WEB-INF/mytag.tld</taglib-location>
  4. </taglib>

测试页面

[html] view plaincopy
  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
  2. <%@ taglib uri="http://mytag.sf.net" prefix="myTag"%>
  3. <%
  4. String path = request.getContextPath();
  5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
  6. %>
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  8. <html>
  9. <head>
  10. <base href="<%=basePath%>">
  11. <title>My JSP 'tagtldDemo.jsp' starting page</title>
  12. <meta http-equiv="pragma" content="no-cache">
  13. <meta http-equiv="cache-control" content="no-cache">
  14. <meta http-equiv="expires" content="0">
  15. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  16. <meta http-equiv="description" content="This is my page">
  17. <!--
  18. <link rel="stylesheet" type="text/css" href="styles.css">
  19. -->
  20. </head>
  21. <body>
  22. This is my JSP page. <br>
  23. <myTag:demo.Viewport northTitle="南" westTitle="西"></myTag:demo.Viewport>
  24. </body>
  25. </html>

如何在JavaWeb程序中使用tld文件相关推荐

  1. java web 自定义标签_如何在JavaWeb程序中使用自定义标签

    展开全部 tld定义格式32313133353236313431303231363533e78988e69d8331333361323566 [java] view plain copy print? ...

  2. php防止文件盗链,如何在PHP程序中防止盗链

    如何在PHP程序中防止盗链 example: 页面: dl.php ------------------------------------------------------------------ ...

  3. mye连接mysql数据库_MySQL_如何在Java程序中访问mysql数据库中的数据并进行简单的操作,在上篇文章给大家介绍了Myeclip - phpStudy...

    如何在Java程序中访问mysql数据库中的数据并进行简单的操作 在上篇文章给大家介绍了Myeclipse连接mysql数据库的方法,通过本文给大家介绍如何在Java程序中访问mysql数据库中的数据 ...

  4. 转:WinForm程序中两份mdf文件问题的解决方法

    在项目中用程序中嵌入mdf文件的方式来进行SQLServer数据库开发非常方便,用来发布开源项目等很方便,点击就可以运行,免部署,特别是在教学中用起来更加方便,老师不用先将数据库文件detach再发给 ...

  5. linux脚本中如何读取文件,如何在Shell脚本中逐行读取文件

    原标题:如何在Shell脚本中逐行读取文件 在这里,我们学习Shell脚本中的3种方法来逐行读取文件. 方法一.使用输入重定向 逐行读取文件的最简单方法是在while循环中使用输入重定向. 为了演示, ...

  6. 编写一个程序,提示用户输入以兆位每秒(Mb/s)为单位的下载速度和以兆字节(MB)为单位的文件大小。程序中应计算文件的下载时间。

    编写一个程序,提示用户输入以兆位每秒(Mb/s)为单位的下载速度和以兆字节(MB)为单位的文件大小.程序中应计算文件的下载时间.注意,这里1字节等于8位.使用float类型,并用/作为除号.该程序要以 ...

  7. EFR32--如何在EFR32程序中修改UUID

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/MemsanGZmInG/article ...

  8. bak文件转oracle文件,如何在Oracle 11g中恢复.bak文件(How to restore .bak file in oracle 11g)...

    如何在Oracle 11g中恢复.bak文件(How to restore .bak file in oracle 11g) 我有Oracle 11g备份文件(.bak文件)如何在Oracle 11g ...

  9. 微信小程序中处理PDF文件

    一直在尝试要在微信小程序中处理PDF文件,包括生成PDF文件和检测某个PDF文档的页数,但是微信小程序的接口不支持这个功能,只能是想办法在js文件中实现这个代码,这个代码的实现需要pdf-lib 这个 ...

最新文章

  1. c# webBrowser打开pdf问题
  2. linux批量备份服务器配置文件和目录的脚本
  3. LIST OF CITIES FOR POTENTIAL VISIT IN SOUTHERN UK
  4. OpenGL Drawing Commands绘图命令的实例
  5. C眼看J - 初窥JAVA
  6. XyPlayer 智能解析 X4 影视解析源码
  7. 因特网几个“特殊”IP地址的专门用途
  8. yum php mysql5.5_CentOS 5.5使用yum来安装LAMP(php运行环境)
  9. (转)关于中国的互联网
  10. 编码表/转义字符/进制转换
  11. Linux桌面鼠标取词自动翻译
  12. 加拿大计算机科学薪酬,加拿大最好找工作及薪酬最高的十大专业介绍
  13. 《矛盾论》与《实践论》
  14. 拉普拉斯算子的疑惑--拉普拉斯算子作用于矢量和定义Hessian矩阵时遇到的问题
  15. 使用切换器导致一台电脑分辨率被降低的解决方法
  16. android新闻客户端报告,简易的Android新闻客户端
  17. MOOS例程HelloWorld-详细注释
  18. Office 2010: word目录更新相关问题
  19. 抖音如何导流到微信?抖音官网链接引导加微信的设置
  20. bilibili账号申诉中心_b站(bilibili)账号忘记密码了怎么办?如何用邮箱找回?找回得多久?...

热门文章

  1. 来电振铃时按音量键静音
  2. c++ vector api summary
  3. C++之嵌套内部类用法
  4. I2S原理分析(二十九)
  5. 数据结构与算法总结(八股文)
  6. GPUImage滤镜效果
  7. android之module删除不干净
  8. wpf之代码给grid添加内容
  9. 属性用途_onenote样式系列②:详解11种默认样式,附style属性值
  10. 统计学习导论_统计学习导论 | 读书笔记15 | 广义可加模型