编写描述标签的tld文件,把这个文件放到web-inf/目录下,才能在jsp页面上调用自定义的标签

  1. package test.yz;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.jsp.JspContext;
  7. import javax.servlet.jsp.JspException;
  8. import javax.servlet.jsp.JspWriter;
  9. import javax.servlet.jsp.PageContext;
  10. import javax.servlet.jsp.tagext.JspFragment;
  11. import javax.servlet.jsp.tagext.JspTag;
  12. import javax.servlet.jsp.tagext.SimpleTag;
  13.  
  14. public class Handsome implements SimpleTag {
  15.  
  16. private PageContext pageContext;
  17.  
  18. @Override
  19. public void doTag() throws JspException, IOException {
  20. HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
  21. JspWriter out = pageContext.getOut();
  22. out.print(" handsome boy");
  23. System.out.println(" handsome boy");
  24. }
  25.  
  26. @Override
  27. public JspTag getParent() {
  28. return null;
  29. }
  30.  
  31. @Override
  32. public void setJspBody(JspFragment arg0) {
  33.  
  34. }
  35.  
  36. @Override
  37. public void setJspContext(JspContext jspContext) {
  38. pageContext = (PageContext)jspContext;
  39.  
  40. }
  41.  
  42. @Override
  43. public void setParent(JspTag arg0) {
  44.  
  45. }
  46.  
  47. }
  1. package test.yz;
  2.  
  3. import java.io.IOException;
  4.  
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.jsp.JspContext;
  7. import javax.servlet.jsp.JspException;
  8. import javax.servlet.jsp.JspWriter;
  9. import javax.servlet.jsp.PageContext;
  10. import javax.servlet.jsp.tagext.JspFragment;
  11. import javax.servlet.jsp.tagext.JspTag;
  12. import javax.servlet.jsp.tagext.SimpleTag;
  13.  
  14. public class SumTag implements SimpleTag {
  15.  
  16. private PageContext pageContext;
  17. private int num1;
  18. private int num2;
  19.  
  20. public void setNum1(int num1) {
  21. this.num1 = num1;
  22. }
  23.  
  24. public void setNum2(int num2) {
  25. this.num2 = num2;
  26. }
  27.  
  28. @Override
  29. public void doTag() throws JspException, IOException {
  30. // TODO Auto-generated method stub
  31. HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
  32. JspWriter out = pageContext.getOut();
  33. out.print(num1+num2);
  34. }
  35.  
  36. @Override
  37. public JspTag getParent() {
  38. // TODO Auto-generated method stub
  39. return null;
  40. }
  41.  
  42. @Override
  43. public void setJspBody(JspFragment arg0) {
  44. // TODO Auto-generated method stub
  45.  
  46. }
  47.  
  48. @Override
  49. public void setJspContext(JspContext arg0) {
  50.  
  51. pageContext = (PageContext)arg0;
  52.  
  53. }
  54.  
  55. @Override
  56. public void setParent(JspTag arg0) {
  57. // TODO Auto-generated method stub
  58.  
  59. }
  60.  
  61. }
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2.  
  3. <taglib xmlns="http://java.sun.com/xml/ns/javaee"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
  6. version="2.1">
  7.  
  8. <!-- -->
  9. <description>JSTL 1.0 core library</description>
  10. <display-name>JSTL core</display-name>
  11. <tlib-version>1.0</tlib-version>
  12. <short-name>lf</short-name> <!-- 默认的前缀名 -->
  13. <uri>http://java.lf.com/handsome</uri> <!-- 指定访问路径 -->
  14.  
  15. <tag>
  16. <name>hs</name> <!-- 标签名 -->
  17. <tag-class>test.yz.Handsome</tag-class><!-- 自定义类的全称 -->
  18. <body-content>empty</body-content>
  19. </tag>
  20.  
  21. <!-- 配置属性标签 -->
  22. <tag>
  23. <name>sum</name>
  24. <tag-class>test.yz.SumTag</tag-class>
  25. <body-content>scriptless</body-content>
  26.  
  27. <attribute>
  28. <name>num1</name>
  29. <required>true</required>
  30. <rtexprvalue>true</rtexprvalue> <!-- true的话jsp中该属性只可以为表达式,false只能为静态值 -->
  31. <type>java.lang.Integer</type> <!-- 指明参数的类型 -->
  32. </attribute>
  33.  
  34. <attribute>
  35. <name>num2</name>
  36. <required>true</required>
  37. <rtexprvalue>true</rtexprvalue> <!-- true的话jsp中该属性只可以为表达式,false只能为静态值 -->
  38. <type>java.lang.Integer</type> <!-- 指明参数的类型 -->
  39. </attribute>
  40. </tag>
  41.  
  42. </taglib>
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%@ taglib prefix="lf" uri="http://java.lf.com/handsome" %>
  3.  
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html>
  6. <head>
  7.  
  8. <title>test</title>
  9.  
  10. </head>
  11.  
  12. <body>
  13.  
  14. <!-- 测试自定义标签 -->
  15. <h1><lf:hs/></h1>
  16.  
  17. <lf:sum num2="2" num1="3"></lf:sum>
  18.  
  19. </body>
  20.  
  21. </html>

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

  1. JSTL自定义标签

    这节我们总结一下JSTL自定义标签相关内容. 1. 自定义标签简介 自定义标签主要用于移除JSP页面中的Java代码.Jsp页面主要是用来显示给前台的,如果里面有过多的java代码的话,会显得很乱,但 ...

  2. 超全面的JavaWeb笔记day13<JSTL&自定义标签>

    1.JSTL标签库(重点) core out set remove url if choose when otherwise forEach fmt formatDate formatNumber 2 ...

  3. JavaWeb学习之JSTL自定义标签库的使用、JSTL自定义函数库(7)

    一.自定义标签,步骤 * 确定需求 * <my:date /> 输出当前系统的时间 yyyy-MM-dd hh:mm:ss:SSS * 编写Java类 新建包名:com.yxl.tag,新 ...

  4. JavaWeb学习记录(十九)——jstl自定义标签库之传统标签

    一.传统标签 (1)JSP引擎将遇到自定义标签时,首先创建标签处理器类的实例对象,然后按照JSP规范定义的通信规则依次调用它的方法. public void setPageContext(PageCo ...

  5. JSTL自定义标签库 (二)

    要定义自己的标签,首先写个java类,extends TagSupport  或者 implements Tag ,然后在类体里实现自己想要的方法,或者覆盖父类的方法. 我定义的MyTag代码如下: ...

  6. JavaWeb学习记录(十九)——jstl自定义标签之简单标签

    一.简单标签共定义了5个方法: setJspContext方法 setParent和getParent方法 setJspBody方法 doTag方法 二.方法介绍 osetJspContext方法 用 ...

  7. JavaWeb学习记录(十九)——开发JSTL自定义标签

    一.防盗链标签 import javax.servlet.http.HttpServletResponse;import javax.servlet.jsp.JspException;import j ...

  8. Java之 jstl 自定义标签的方法

    1.写一个Java类 我的路径是写再tag包中的一个 HelloTag类 package tag; import java.io.IOException; import javax.servlet.j ...

  9. JSTL自定义标签 实现forEach循环支持集合.数组

    java代码实现 tld配置 JSP页面代码

随机推荐

  1. 注解:【基于外键的】Hibernate双向1->1关联

    Person与Address关联:双向1->1,[基于外键的]. #主表不应该控制关联关系.(否则会导致生成额外的update语句,从而导致性能下降), #因此主表对应的实体中使用@OneToO ...

  2. [笔记]HTML

    链接 <a href="链接地址">链接显示名</a> <a name="C4">target</a> < ...

  3. 随堂笔记javascript篇之chrome调试:

    在征求到许老师的同意之后,我用javascript脚本语言来完成我的课堂作业,初学一门语言,刚开始也许是初生牛犊不怕虎,接受一门新的语言而且用来完成作业.一开始老师是拒绝的,他说我这样是太麻烦了.对于 ...

  4. CF Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)

    1. Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B. Batch Sort    暴力枚举,水 1.题意:n*m的数组, ...

  5. [LintCode] Maximum Depth of Binary Tree 二叉树的最大深度

    Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...

  6. JS仿淘宝星星评价

    //直接复制过去就可以了(你也可以吧css和js封装成css和js文件导入). <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transit ...

  7. python与正则表达式

    匹配一个字符: . 任意非\n字符 [...] \d \D digit \s \S space \w \W word 匹配前一个字符的多个: * 0->> + 1->> ? 0 ...

  8. Socket通讯实例-基本Socket

    转自:http://www.cnblogs.com/mahaisong/archive/2011/07/25/2116475.html (讲的很好,很细) 参考:http://blog.sina.co ...

  9. List转换成json格式字符串,json格式字符串转换成list

    一.List转换成json字符串 这个比较简单,导入gson-x.x.jar, List<User> users = new ArrayList<User>(); Gson g ...

  10. Android 四大护法之一 Service

    1.Service的概念 Service是Android 四大组件之一,是默认没有界面的运行于后台的服务程序.Service的开启方式分为启动式服务(startService)和绑定式服务(bindS ...