jsp自定义标签

来源:互联网 发布:linux firewall 编辑:程序博客网 时间:2024/05/17 09:03

 

自定义标签主要用于移除页面的java代码。
使用自定义标签分成两个步骤:

1、编写一个实现Tag接口的java类,把页面代码移到这个java类中(标签处理器)

[java] view plaincopyprint?
  1. package tab.ctrl.alt.tag;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import javax.management.RuntimeErrorException;  
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.jsp.JspException;  
  8. import javax.servlet.jsp.JspWriter;  
  9. import javax.servlet.jsp.tagext.TagSupport;  
  10.   
  11. public class ViewTag extends TagSupport {  
  12.   
  13.     /** 
  14.      *  
  15.      */  
  16.     private static final long serialVersionUID = 1L;  
  17.   
  18.     @Override  
  19.     public int doStartTag() throws JspException {  
  20.         HttpServletRequest request = (HttpServletRequest)this.pageContext.getRequest();  
  21.         JspWriter writer = this.pageContext.getOut();  
  22.         String ip = request.getRemoteAddr();  
  23.         try {  
  24.             writer.print(ip);  
  25.         } catch (IOException e) {  
  26.             // TODO Auto-generated catch block  
  27.             e.printStackTrace();  
  28.             throw new RuntimeException(e);  
  29.         }  
  30.         return super.doStartTag();  
  31.     }  
  32.       
  33.   
  34. }  


2、编写标签描述符(tld一个标签。)文件,在tld文件中把标签处理器描述成

[plain] view plaincopyprint?
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2.   
  3. <taglib xmlns="http://java.sun.com/xml/ns/j2ee"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"  
  6.     version="2.0">  
  7.     <description>A tag library exercising SimpleTag handlers.</description>  
  8.     <tlib-version>1.0</tlib-version>  
  9.     <short-name>itdos</short-name>  
  10.     <uri>http://itdos.net</uri>  
  11.       
  12.     <tag>  
  13.     <description>view</description>  
  14.         <name>helloWorld</name>  
  15.     <tag-class>tab.ctrl.alt.tag.ViewTag</tag-class>  
  16.     <body-content>empty</body-content>  
  17.     </tag>  
  18.   
  19.  </taglib>  
  20.    

3、jsp

[plain] view plaincopyprint?
  1. <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>  
  2. <%@taglib uri="http://itdos.net"  prefix="itdos" %>  
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  4. <html>  
  5.   <head>     
  6.     <title>My JSP '1.jsp' starting page</title>  
  7.   </head>  
  8.     
  9.   <body>  
  10.     <itdos:helloWorld/>  
  11.   </body>  
  12. </html>  

自定义标签执行过程

1、遇到自定义标签。先实例对应的标签处理器类。
2、调用setPageContext方法,把页面的pagecontext对象传递给标签处理器类
3、看标签是否有父标签,如果有父标签把父标签作为一个对象,调用setParent方法传递给标签处理器类,如果没有传递个null
4、完成标签初始化工作后,服务器开始执行标签。遇到标签的开始标签调用dostart方法
5、如果标签有标签体,服务器一般会执行标签体
6、服务器遇到结束标签,执行结束doend方法
7、整个标签执行完后,服务器一般会调用release()方法,释放变迁工作时占用的资源

原创粉丝点击