自定义标签主要用于移除Jsp页面中的java代码。
使用自定义标签移除jsp页面中的java代码,只需要完成以下两个步骤:
编写一个实现Tag接口的Java类(标签处理器类)。
编写标签库描述符(tld)文件,在tld文件中对标签处理器类进行描述。
使用自定义标签在输出IP:
Java部分:
public class ShowIP extends TagSupport {
@Override
public int doStartTag() throws JspException {
//Tag的setPageContext方法是由服务器调用的, 而且是在doStartTag之前调用
//客户端传给我们的是HttpServletRequest请求(ServletRequest是HttpServletRequest的父亲)
HttpServletRequest request=
(HttpServletRequest)pageContext.getRequest();
String IP=
request.getRemoteAddr();
String i=
request.getRequestURI();
JspWriter write=
pageContext.getOut();
try {
write.write(i);
write.write(IP);
} catch (IOException e) {
throw new RuntimeException();
}
return super.doStartTag();
}
}
TLD部分:TLD标签放在WEB-
INF目录下
<?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">
<tlib-version>
1.0</tlib-version>
<
short-name>SimpleTagLibrary</
short-name>
<uri>/ShowIP</uri>
<tag>
<name>ShopIP</name>
<tag-
class>web.tag.ShowIP</tag-
class>
<body-content>empty</body-content>
</tag>
</taglib>
jsp部分:
<%@ page language=
"java" import=
"java.util.*" pageEncoding=
"UTF-8"%>
<%@taglib uri=
"/ShowIP" prefix=
"showIP" %>
<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ip的展示</title>
</head>
<body>
您的IP为:<showIP:ShopIP/>
</body>
</html>
总结:jsp部分的prefix最好写成tld的名字,这样一看就知道了导入的是是哪个tld
一定要继承Tag(TagSupport是他的子类)