在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

JSP自定义标签示例

2016-12-13 12:57| 发布者: zhangjf| 查看: 651| 评论: 0

摘要: 1.自定义标签库要编写一个类实现Tag接口,实现它的方法 通常我们只需要继承Tag的实现类TagSupport,重写它的doStart()方法即可 import java.io.IOException;import javax.servlet.http.HttpServletRequest;imp ...
1.自定义标签库要编写一个类实现Tag接口,实现它的方法

通常我们只需要继承Tag的实现类TagSupport,重写它的doStart()方法即可

  1. import java.io.IOException;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.jsp.JspException;
  4. import javax.servlet.jsp.JspWriter;
  5. import javax.servlet.jsp.tagext.TagSupport;
  6. /**
  7. * TagSupport内部会通过setPageContext(PageContext pageContext)传入相应的pageContext
  8. * 有了pageContext我们就可以操作当前应用的所有对象
  9. *
  10. */
  11. public class ViewIPTag extends TagSupport {
  12. private static final long serialVersionUID = 6754089233531337844L;
  13. @Override
  14. public int doStartTag() throws JspException {
  15. HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest();
  16. JspWriter out = this.pageContext.getOut();
  17. String ip = request.getRemoteAddr();
  18. try {
  19. out.print(ip);
  20. } catch (IOException e) {
  21. throw new RuntimeException(e);
  22. }
  23. return super.doStartTag();
  24. }
  25. }
复制代码

2.编写tld文件(其实本质是一个xml文件,只是后缀名为tld),此文件要放在WEB-INF/下,
可从$tomat/webapps/examples/WEB-INF/jsp2下找到tld文件

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
  4. version="2.0">
  5. <tlib-version>1.0</tlib-version>
  6. <short-name>boco</short-name><!--prefix-->
  7. <uri>http://www.boco.com/lhp</uri><!--uri-->
  8. <tag>
  9. <name>viewIP</name><!--tagName-->
  10. <tag-class>com.boco.lhp.ViewIPTag</tag-class>
  11. <body-content>empty</body-content>
  12. </tag>
  13. </taglib>
复制代码

有4个属性:JSP/empty/scriptless/tagdependent;意思是,在使用标记时,标记中可包含的内容。JSP表示标记中可包 含java代码;empty表示标记中不可包含任何内容,必须为空;scriptless表示标记中不能包含java代码,可包含EL、JSP动作代 码;tagdependent表示标记包含的内容由标记决定

3.jsp中的应用,要通过<%taglib uri="uri" prefix="prefix" />引入,并通过

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <%@taglib uri="http://www.boco.com/lhp" prefix="boco" %>
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  4. <html>
  5. <head>
  6. <title>viewIp</title>
  7. </head>
  8. <boco:viewIP/>
  9. <body>
  10. </body>
  11. </html>
复制代码

标记库文件打包成jar文件的方法:
创建一个临时文件夹temp,把需要打包的标记库类的class文件(在tomcat中webapps文件夹下对应项目的web-inf目录下) 放入temp文件夹中(注意要带上完整的package),并在temp下创建META-INF文件夹用以存放编辑好的tld文件, 之后通过cmd在temp目录下 运行【jar -cvf jarName.jar *】即可,jarName是自定义的jar文件名,*表示temp文件下的所有文件


最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-8-23 04:32

Copyright 2015-2025 djqfx

返回顶部