自定义JSP标签的应用实例

 
6.3.5  自定义JSP标签的应用实例(2)

例程6-13  转化大写标签的处理类ToUpperCase.java

    
    
    
    
  1. package mytags;  
  2. import javax.servlet.jsp.JspException;  
  3. import javax.servlet.jsp.tagext.BodyContent;  
  4. import javax.servlet.jsp.tagext.BodyTagSupport;  
  5. public class ToUpperCase extends BodyTagSupport {  
  6.     //定义一个存放结果的变量  
  7.     String var = null;  
  8.     public String getVar() {  
  9.         return var;  
  10.     }  
  11.     public void setVar(String var) {  
  12.         this.var = var;  
  13.     }     
  14.     //标签开始时调用的处理方法  
  15.     public int doStartTag() throws JspException {  
  16.         //表示需要处理标签体  
  17.         return EVAL_BODY_BUFFERED;  
  18.     }  
  19.     //判断了标签体内容之后调用的处理方法  
  20.     public int doAfterBody() throws JspException {  
  21.         //取得标签体对象  
  22.         BodyContent body = getBodyContent();  
  23.         //取得标签体的字符串内容  
  24.         String content = body.getString();  
  25.         //清除标签体中的内容  
  26.         body.clearBody();  
  27.         //将内容转换成大写  
  28.         content = content.toUpperCase();  
  29.         //在pageContext对象中保存变量  
  30.         pageContext.setAttribute(var,content);  
  31.         //结束对标签体的处理  
  32.         return SKIP_BODY;         
  33.     }  

例程6-14  标签库描述文件mytaglib.tld

    
    
    
    
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE taglib PUBLIC "-//Sun Microsystems,  Inc.//DTD JSP Tag Library 1.2//EN" 
  3. "web-jsptaglibrary_1_2.dtd" >  
  4. <taglib>  
  5.   <tlib-version>mytaglib 1.0</tlib-version>  
  6.   <jsp-version>jsp 2.0</jsp-version>  
  7.   <short-name>mytag</short-name>  
  8.   <uri>http://www.e868.net/mytag</uri>  
  9.   <tag>  
  10.     <name>echo</name>  
  11.     <tag-class>mytags.Echo</tag-class>  
  12.     <body-content>empty</body-content>  
  13.     <attribute>  
  14.         <name>msg</name>  
  15.         <required>true</required>  
  16.         <rtexprvalue>true</rtexprvalue>  
  17.     </attribute>  
  18.   </tag>  
  19.   <tag>  
  20.     <name>formatdate</name>  
  21.     <tag-class>mytags.FormatDate</tag-class>  
  22.     <body-content>empty</body-content>  
  23.     <attribute>  
  24.         <name>date</name>  
  25.         <required>true</required>  
  26.         <rtexprvalue>true</rtexprvalue>  
  27.     </attribute>  
  28.     <attribute>  
  29.         <name>type</name>  
  30.         <required>true</required>  
  31.         <rtexprvalue>true</rtexprvalue>  
  32.     </attribute>      
  33.   </tag>  
  34.   <tag>  
  35.     <name>touppercase</name>  
  36.     <tag-class>mytags.ToUpperCase</tag-class>  
  37.     <body-content>tagdependent</body-content>  
  38.     <variable>  
  39.         <name-from-attribute>var</name-from-attribute>  
  40.         <variable-class>java.lang.String</variable-class>  
  41.         <scope>AT_BEGIN</scope>  
  42.     </variable>  
  43.     <attribute>  
  44.         <name>var</name>  
  45.         <required>true</required>  
  46.     </attribute>      
  47.   </tag>  
  48. </taglib> 

例程6-15  使用自定义标签的JSP页面index.jsp

    
    
    
    
  1. <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>  
  2. <%@ taglib prefix="mytag" uri="http://www.e868.net/mytag"%>  
  3. <html>  
  4.   <head><title>自定义JSP标签应用实例</title></head>  
  5.   <body>  
  6.     <h2>自定义JSP标签应用实例</h2><hr>  
  7.     <mytag:echo msg="刘斌,你好!"/><br>  
  8.      现在的时间是:<mytag:echo msg="<%=(new Date()).toString()%>"/><br>  
  9.      当前容器的版本为:<mytag:echo msg="<%=application.getServerInfo()%>"/><br>  
  10.      当前日期是:<mytag:formatdate date="<%=new Date()%>" type="date"/><br>  
  11.      当前时间是:<mytag:formatdate date="<%=new Date()%>" type="time"/><br>  
  12.      当前日期和时间是:<mytag:formatdate date="<%=new Date()%>" type="all"/><br>  
  13.     <mytag:touppercase var="result">abcdefghijklmnopqrst</mytag:touppercase>  
  14.     转换结果:<%=result%>  
  15.   </body>  
  16. </html> 

运行效果如图6-5所示。

自定义JSP标签的应用实例_第1张图片 
(点击查看大图)图6-5  index.jsp运行效果
 

6.4  JSTL标签库

JSP标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作及数据库访问等。

这些标记库实现了大量服务器端 Java 应用程序常用的基本功能,大大提高了Web应用程序的开发效率,同时也提高了Web应用程序的可阅读性和可维护性。

目前最新的JSTL版本为1.1,必须在支持Servlet2.4/JSP2.0的容器(如:Tomcat5.x)中才能运行,读者只要将JSTL的jstl.jar和standard.jar复制到自己Web应用程序的WEB-INF/lib目录下便可使用JSTL了。

你可能感兴趣的:(tomcat,jsp,Web,servlet,library,encoding)