Jsp自定义标签:

      1.继承SimpleTagSupport,重写doTag()。

      2.在WEB-INF/ 下配置**.tld文件

      3.Jsp页面引入自定义标签:<%@ taglib uri="***" prefix="s"%>

自定义标签demo实现:在jsp页面将对象存入pageContext.setAttribute(),使用标签输出该对象的所有方法,成员变量及值。

TestTag.java:

  1. package mytag;
  2. import java.io.IOException;
  3. import java.io.Writer;
  4. import java.lang.reflect.Field;
  5. import java.lang.reflect.Method;
  6. import javax.servlet.jsp.tagext.SimpleTagSupport;
  7. public class TestTag extends SimpleTagSupport{
  8. private String obj;//带属性标签必须为每个属性提供对应的 setter 和 getter 方法
  9. public String getObj() {
  10. return obj;
  11. }
  12. public void setObj(String obj) {
  13. this.obj = obj;
  14. }
  15. public void doTag() throws IOException{
  16. Writer out = getJspContext().getOut();
  17. Object object=(Object)getJspContext().getAttribute(obj);
  18. Class<?> c=object.getClass();
  19. Field fields[]=c.getDeclaredFields();
  20. for(Field f:fields ){
  21. f.setAccessible(true);//私有成员也能访问
  22. try {
  23. out.write(f.getName()+":"+f.get(object)+"</br>");
  24. } catch (IllegalArgumentException | IllegalAccessException e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. Method methods[]=c.getMethods();
  29. for(Method m:methods){
  30. out.write(m.toString()+"</br>");
  31. }
  32. }
  33. }

mytaglib.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/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
  5. <taglib>
  6.  
  7. <tlib-version>1.0</tlib-version>
  8. <jsp-version>1.2</jsp-version>
  9. <short-name>mytaglib</short-name>
  10. <uri>/mytaglib</uri>
  11. <tag>
  12. <!-- 定义标签名 -->
  13. <name>info</name>
  14. <!-- 定义标签处理类 -->
  15. <tag-class>mytag.TestTag</tag-class>
  16. <!-- 定义标签体为空 -->
  17. <body-content>empty</body-content>
  18. <!-- 配置标签属性:driver -->
  19. <attribute>
  20. <name>obj</name>
  21. <required>true</required>
  22. <fragment>true</fragment>
  23. </attribute>
  24. </tag>
  25. </taglib>

test.jsp:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ page import="mytag.User,java.util.*" %>
  4. <%@ taglib uri="/mytaglib" prefix="s" %>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  6. <html>
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  9. <title>Insert title here</title>
  10. </head>
  11. <body>
  12. <%
  13. pageContext.setAttribute("date", new Date());
  14. %>
  15. <b><s:hello/></b>
  16. <b><s:info obj="date"/></b>
  17. </body>
  18. </html

Jsp_demo:自定义标签的更多相关文章

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

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

  2. [Java] JSP笔记 - 自定义标签

    自定义标签的创建步骤: 自定义标签的四大功能: 自定义标签的类结构: 在 1.0 中呢, 可以将 <body-content> 的值设置为 JSP, 2.0中则不允许在自定义标签体中出现j ...

  3. thinkphp自定义标签库

    thinkphp ~ php中 的类, 的成员变量, 本身是没有类型说明的, 那么我怎么知道它的类型呢? 或初始值呢? 通常在类定义中, 如果能给一个初始值的(对于已知简单类型的),最好给一个初始值, ...

  4. 12 自定义标签/JSTL标签库/web国际化/java web之设计模式和案例

    EL应用      自定义一个标签,实现两个字符串的相加 1回顾      1.1servlet生命周期           init(ServletConfig)           service ...

  5. EL函数以及自定义标签的应用

    一.EL函数(调用普通类的静态方法) 编写步骤(自定义EL函数的编写步骤即自定义标签的编写步骤): ①编写一个普通的java类,提供一个静态方法,功能自定,例如下: package cn.wzbril ...

  6. JSTL 自定义标签

    编写描述标签的tld文件,把这个文件放到web-inf/目录下,才能在jsp页面上调用自定义的标签 package test.yz; import java.io.IOException; impor ...

  7. 使用自定义标签模拟jstl的<c:for each>标签

    一.自定义标签的基本编写 下面编写一个自定义标签,它可以输出当前的时间. 1.编写标签类 类可以通过继承SimpleTagSupport类实现一个标签类编写.父类为我们提供了一些编写自定义标签的快捷的 ...

  8. JSP自定义标签/自定义标签打包

    有这样一个业务需求: 当我们在编辑某个用户时,需要设置该用户的角色,在转到编辑页面时,就需要自动勾选上该用户已经选择的角色,如下图: 当我们点击编辑时,会查询用户详细信息,以及角色集合传到编辑页面. ...

  9. JSP自定义标签

    在JSP网页编程中,我们通常不满足于jstl或其他的框架,我们也可以自己写属于自己专用的标签. 在这里介绍一下表格中展示JavaBean的自定义标签的使用 第一步:写一个父标签,用来显示获取数据 新建 ...

随机推荐

  1. vsftpd服务详解

    一.vsftpd基本使用 VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP,从此名称可以看出来,编制者的初衷是代码的安全.安全性是编写V ...

  2. js微博发布框

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. nodejs -mysql模块链接数据库创建库创建表单。

    var mysql = require('mysql'); var connection= mysql.createConnection({ host:'localhost', user:'root' ...

  4. HTML块

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  5. 浏览器中输入URL到返回页面的全过程

    第一步,解析域名,找到主机IP (1)浏览器会缓存DNS一段时间,一般2-30分钟不等.如果有缓存,直接返回IP,否则下一步. (2)缓存中无法找到IP,浏览器会进行一个系统调用,查询hosts文件. ...

  6. 如何在版本控制工具中管理Sencha Architect的項目

    根據數次痛苦的經歷結合stack overflow上的解答,發現原來還是可以使用svn.git之類的版本控制工具管理Sencha Architect生成的項目的. 具體的要點如下,假定項目記作{PRO ...

  7. windows server 2008 R2 忘记administrator密码

    第一步: 插入安装光盘,重光驱启动系统,在选择“安装语言”的地方,按shift+F10 在弹出的CMD窗口中,输入以下地址: x:\>c: c:\>cd windows\system32 ...

  8. Discuz!X3.1 全新安装图文教程

    http://www.discuz.net/thread-3456887-1-1.html

  9. 李洪强iOS开发之-环信02.3_具体接口讲解 - Apple Docs

    http://www.easemob.com/apidoc/ios/chat3.0/annotated.html Apple Docs.

  10. QQ协议的TEA加解密算法

    QQ通讯协议里的加解密算法. #include <stdio.h> #include <stdlib.h> #include <memory.h> #include ...