<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> 您的ip为: <% String ip = request.getRemoteAddr(); out.print(ip); %> </body> </html>
doEndTag()执行开始标签执行的方法(如<c:foreach>)
doStartTag()执行结束标签执行的方法(如</c:foreach>)
getParent()得到标签的父标签(包裹本标签的上一级标签)
release()释放资源的方法,标签结束时执行,会释放标签运行的时候所占用的资源。
setPageContext(PageContext pc)把页面的PageContext传递过来(最重要的方法,它会把页面的所有数据传递过来,包括Servlet的八大隐式对象,这样我们就可以做我们想处理的任何事)
package org.zyg.web.tag; import javax.servlet.jsp.tagext.TagSupport; public class ViewIPTag extends TagSupport { }
package org.zyg.web.tag; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; public class ViewIPTag extends TagSupport { @Override public int doStartTag() throws JspException { //Tag接口的setPageContext方法已经将PageContext从页面拿过来 //我们在这里获取PageContext HttpServletRequest request=(HttpServletRequest)this.pageContext.getRequest(); //获取JspWriter对象 JspWriter out=this.pageContext.getOut(); String ip = request.getRemoteAddr(); try { out.print(ip); } catch (IOException e) { throw new RuntimeException(e); } return super.doStartTag(); } }
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> </taglib>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <description>A tag library exercising SimpleTag handlers.</description> <tlib-version>1.0</tlib-version> <short-name>zyg</short-name> <uri>http://blog.csdn.net/acmman</uri> <tag> <name>viewIP</name><!-- 标签名 --> <tag-class>org.zyg.web.tag.ViewIPTag</tag-class> <body-content>empty</body-content><!-- 有无标签体(单标签还是成对标签) --> </tag> </taglib>
接下来我们在页面使用这个标签,在使用标签前,首先在jsp页面中导入标签:
<%@taglib uri="http://blog.csdn.net/acmman" prefix="zyg" %>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@taglib uri="http://blog.csdn.net/acmman" prefix="zyg" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> 您的ip为: <zyg:viewIP/> </body> </html>
我们虽然看到和以前一样的效果,但是内部的技术全都换了。至此我们阐述了一个简单的自定义标签的开发过程。
转载请注明出处:http://blog.csdn.net/acmman/article/details/51065439