1.自定义标签库要编写一个类实现Tag接口,实现它的方法
通常我们只需要继承Tag的实现类TagSupport,重写它的doStart()方法即可
- 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;
- /**
- * TagSupport内部会通过setPageContext(PageContext pageContext)传入相应的pageContext
- * 有了pageContext我们就可以操作当前应用的所有对象
- *
- */
- public class ViewIPTag extends TagSupport {
- private static final long serialVersionUID = 6754089233531337844L;
- @Override
- 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) {
- throw new RuntimeException(e);
- }
-
- return super.doStartTag();
- }
- }
复制代码
2.编写tld文件(其实本质是一个xml文件,只是后缀名为tld),此文件要放在WEB-INF/下,
可从$tomat/webapps/examples/WEB-INF/jsp2下找到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">
- <tlib-version>1.0</tlib-version>
- <short-name>boco</short-name><!--prefix-->
- <uri>http://www.boco.com/lhp</uri><!--uri-->
- <tag>
- <name>viewIP</name><!--tagName-->
- <tag-class>com.boco.lhp.ViewIPTag</tag-class>
- <body-content>empty</body-content>
- </tag>
- </taglib>
复制代码
有4个属性:JSP/empty/scriptless/tagdependent;意思是,在使用标记时,标记中可包含的内容。JSP表示标记中可包 含java代码;empty表示标记中不可包含任何内容,必须为空;scriptless表示标记中不能包含java代码,可包含EL、JSP动作代 码;tagdependent表示标记包含的内容由标记决定
3.jsp中的应用,要通过<%taglib uri="uri" prefix="prefix" />引入,并通过
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%@taglib uri="http://www.boco.com/lhp" prefix="boco" %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>viewIp</title>
- </head>
- <boco:viewIP/>
- <body>
- </body>
- </html>
复制代码
标记库文件打包成jar文件的方法:
创建一个临时文件夹temp,把需要打包的标记库类的class文件(在tomcat中webapps文件夹下对应项目的web-inf目录下) 放入temp文件夹中(注意要带上完整的package),并在temp下创建META-INF文件夹用以存放编辑好的tld文件, 之后通过cmd在temp目录下 运行【jar -cvf jarName.jar *】即可,jarName是自定义的jar文件名,*表示temp文件下的所有文件
|