使用自定义的taglib可以是我们对页面数据的处理放在后台,不仅使用方便,而且影藏了处理逻辑,也更加的安全。

需要使用到servlet.jar

1.在web-inf下建立taglib.tld文件

  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. <tlib-version>1.0</tlib-version>
  7. <jsp-version>1.2</jsp-version>
  8. <short-name>app</short-name>
  9. <uri>http://com.hh/taglib</uri><!--页面引用的地址-->
  10. <display-name>My Tags</display-name>
  11. <tag>
  12. <name>myTaglib</name>
  13. <tag-class>com.hh.MyTaglib</tag-class>
  14. <attribute>
  15. <name>name</name>
  16. <required>true</required><!--是否必须输入-->
  17. <rtexprvalue>true</rtexprvalue><!--当为true时, 表示该自定义标签的该属性的值可以直接指定或者通过动态计算指定为false时表示只能直接指定,如能否直接使用el表达式-->
  18. </attribute>
  19. <attribute>
  20. <name>age</name>
  21. <required>false</required>
  22. <rtexprvalue>true</rtexprvalue>
  23. </attribute>
  24. </tag>
  25. </taglib>

2.写jave类进行逻辑处理

  1. package com.hh;
  2.  
  3. import javax.servlet.jsp.JspException;
  4. import javax.servlet.jsp.JspWriter;
  5. import javax.servlet.jsp.tagext.TagSupport;
  6. import java.io.IOException;
  7.  
  8. /**
  9. * Created by hh on 15-10-30.
  10. *需要引入servlet.jar
  11. */
  12. public class MyTaglib extends TagSupport{
  13. private String name;//需要对参数写get,set方法
  14. private int age;
  15. @Override
  16. public int doStartTag() throws JspException {
  17. return super.doStartTag();
  18. }
  19.  
  20. /**
  21. * EVAL_BODY_INCLUDE:把Body读入存在的输出流中,doStartTag()函数可用
  22. * EVAL_PAGE:继续处理页面,doEndTag()函数可用
  23. * SKIP_BODY:忽略对Body的处理,doStartTag()和doAfterBody()函数可用
  24. * SKIP_PAGE:忽略对余下页面的处理,doEndTag()函数可用
  25. * EVAL_BODY_TAG:已经废止,由EVAL_BODY_BUFFERED取代
  26. * EVAL_BODY_BUFFERED:申请缓冲区,由setBodyContent()函数得到的BodyContent对象来处理tag的body,如果类实现了BodyTag,那么doStartTag()可用,否则非法
  27. * @return
  28. * @throws JspException
  29. */
  30. @Override
  31. public int doEndTag() throws JspException {
  32. JspWriter out = pageContext.getOut();
  33. try {
  34. out.print("你输入的是:"+name+",年龄是:"+age);
  35. }catch (IOException e){
  36.  
  37. }
  38. return EVAL_BODY_INCLUDE;
  39. }
  40.  
  41. public String getName() { return name;}
  42.  
  43. public void setName(String name) {this.name = name;}
  44.  
  45. public int getAge() { return age;}
  46.  
  47. public void setAge(int age) { this.age = age;}
  48. }

3.页面调用

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ taglib prefix="myTag" uri="http://com.hh/taglib" %>
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <body>
  6. <h2>Hello World!</h2>
  7. 要显示的信息1:<myTag:myTaglib name="张三"></myTag:myTaglib><br>
  8. 要显示的信息2:<myTag:myTaglib name="张三" age=""></myTag:myTaglib>
  9. </body>
  10. </html>

taglib的使用的更多相关文章

  1. [JSP]自定义标签库taglib

    自定义标签的步骤 自定义标签的步骤大概有三步: 1.继承javax.servlet.jsp.tagext.*下提供的几个标签类,如Tag.TagSupport.BodyTagSupport.Simpl ...

  2. 杂谈 Taglib、EL、OGNL

    本篇主要是自己对 JavaWeb中 EL.OGNL.Taglib 个人理解. 因为以上内容都是在 JSP 的基础下产生的概念, 首先得说说我眼中的 JSP. 她自由的.奔放的,就像辽阔的大海,跨越任何 ...

  3. Tomcat7.0启动报错:java.lang.illegalargumentexception:taglib definition not consisten with specification version

    Tomcat7.0启动报错:java.lang.illegalargumentexception:taglib definition not consisten with specification ...

  4. taglib

    thinkphp中 taglib标签应用 原文出处:http://blog.csdn.net/a11085013/article/details/38172653 1.配置文件中加上: 'APP_AU ...

  5. jsp调用java方法 function taglib

    1.新建tld文件: my-functions.tld: <?xml version="1.0" encoding="UTF-8"?> <ta ...

  6. JSF2 下 taglib 的问题

    在jsf1使用 taglib 定义 标签出现 The absolute uri: http://java.sun.com/jsf/core cannot be resolved in either w ...

  7. jsp中自定义Taglib案例

    一.使用TagSupport类案例解析 1.自定义Tag使用jdbc连接mysql数据库 1.1定义标签处理器类 package com.able.tag; import java.sql.Conne ...

  8. taglib指令

    taglib:用来引用标签库并设置标签库的前缀,(允许JSP页面使用用户自定义标签) 语法:<%@ taglib uri="tagLibraryURI" prefix=&qu ...

  9. taglib 自定义标签

    自定义<%@ taglib prefix="cf" uri="http://training.bmcc.com.cn/tld/functions"%> ...

  10. taglib例子

    jsp中的taglib有点类似asp.net中的customer control.自定义标签. 一个最简单的taglib使用例子:检查用户是否已经被登陆. 新建一个class: CheckLoginT ...

随机推荐

  1. R2:获取一个event_base

    原文链接:http://www.wangafu.net/~nickm/libevent-book/Ref2_eventbase.html 创建一个event_base 在你使用任何有意思的Libeve ...

  2. 转 常用JQuery插件整理

    虽然自己也写过插件,但JQuery插件种类的繁多,大多时候,我还是使用别人写好的插件,这些都是我用了同类插件里较为不错的一些,今天就整理一下公开放出来. UI: jquery.HooRay(哈哈,自己 ...

  3. 模拟springmvc 内部登陆,跳过spring filter

    说明,因为我们的一个项目B使用spring mvc配置的登陆框架,所以对登陆控制全部交给了spring,导致我们如果想通过另一个项目A登陆到项目B就不太容易,具体是项目A登陆了,我们通过一个连接直接跳 ...

  4. Windows下安装Emacs+Sbcl+Slime

    前言 其实网上已经有很多类似的文章了,我也是按照上面的来做.在做的过程中会遇到几个很坑的地方,我自己也是折腾了好久才弄好.所以现在写出来希望能对大家有所帮助. 正文 下载和安装Emacs http:/ ...

  5. linux命令中"|"管道流的意思

    在linux中.可以利用符号:"|"来实现管道功能. 那么什么是管道功能呢: 管道是Shell的一大特征.他将多个命令前后连接起来形成一个管道流. 管道流中的每一个命令都作为一个单 ...

  6. 如何使用Reaver-PJ-Wi-Fi网络的WPA密码

    在正式开始之前,我还是要不厌其烦强调一下:知识就是力量,但是拥有力量不代表着可以为所欲为.触犯法律.同样,骑白马的不一定是王子,会开锁的也不一定是小偷.本文只是关于某些技术的实验与验证,只适用于学习. ...

  7. 设计模式(七):Adapter 适配器模式 -- 结构型模式

    1. 概述: 接口的改变,是一个需要程序员们必须(虽然很不情愿)接受和处理的普遍问题.程序提供者们修改他们的代码;系统库被修正;各种程序语言以及相关库的发展和进化.  例子1:iphone4,你即可以 ...

  8. leetcode-Consecutive numbers

    Write a SQL query to find all numbers that appear at least three times consecutively. +----+-----+ | ...

  9. 记一次pending请求问题查找过程

    情景再现 近期发现网站访问变慢,经常会出现请求无法响应的问题,一个请求长时间没有返回,导致页面出现504(Gateway Timeout),我们使用的nodejs+ngnix(反向代理). 猜测原因 ...

  10. python 学习资料

    Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...