自定义标签,我的第一个自定义标签!
总共分两步
- 编写一个实现tag接口的java类,把jsp页面中的java代码移到这个类中,(标签处理器类)
- 编写标签库描述符(tld)文件,在tld文件中把标签处理器类描述成一个标签
一.案例,
输出客户端IP
ViewIP.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/firstTag.tld" prefix="itcast"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h4>您的iP:</h4>
<itcast:viewIP/>
</body>
</html>
在WEB-INF目录下建立一个tld文件,:
firstTag.tld
<?xml version="1.0" encoding="UTF-8" ?> <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>view</short-name> <uri>/WEB-INF/firstTag.tld</uri> <tag> <name>viewIP</name> <tag-class>Tag.viewIPTag</tag-class> <body-content>empty</body-content> </tag> </taglib>
编写标签处理器类:
viewIPTag.java
package 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{ public int doStartTag() throws JspException{ HttpServletRequest request=(HttpServletRequest) this.pageContext.getRequest(); JspWriter out=this.pageContext.getOut(); String ip=request.getRemoteAddr(); try { out.print(ip); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return super.doStartTag(); } }
效果截图: