JSTL自定义标签开发1
2014-03-23 17:02
411 查看
第一步,WEB-INF目录下建立自定义标签的tld文件,如图simple.tld
simple.tld的内容如下:
第二步,写各个标签的方法,如ip,Foreach
IP.java
第三步,页面使用自定义标签
自定义标签的导出与使用
第一步,在src目录下新建文件夹META-INF,然后把刚才的自定义标签tid文件拷贝到该目录下,如图
第二步 选中当前项目day16右击,选中export
第三步,导出后就可以在其他项目中使用了。如图
simple.tld的内容如下:
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <display-name>JSTL core</display-name> <tlib-version>1.0</tlib-version> <short-name>simple</short-name> <uri>http://java.sun.com/jsp/jstl/sample</uri> <tag> <name>IP</name> <tag-class>cn.itcast.myTag.IP</tag-class> <body-content>empty</body-content> </tag> <tag> <name>Foreach</name> <tag-class>cn.itcast.myTag.ForeachTag</tag-class> <body-content>scriptless</body-content> <attribute> <name>var</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>items</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
第二步,写各个标签的方法,如ip,Foreach
IP.java
package cn.itcast.myTag; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.SimpleTagSupport; public class IP extends SimpleTagSupport { private PageContext pageContext; public void doTag() throws JspException, IOException { System.out.println("doTag()"); HttpServletRequest request = (HttpServletRequest) pageContext .getRequest(); String ip = request.getLocalAddr(); JspWriter out = pageContext.getOut(); out.write("<font color='red'>" + ip + "</font>"); } }Foreach.java
package cn.itcast.myTag; import java.io.IOException; import java.util.Collection; import java.util.Iterator; import java.util.Map; import javax.servlet.jsp.JspException; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.tagext.SimpleTagSupport; public class ForeachTag extends SimpleTagSupport { private String var; private Object items; /* * 将Map类型转成Collection类型 */ private Collection collection; public void setVar(String var) { this.var = var; } public void setItems(Object items) { this.items = items; if(this.items instanceof Collection){ this.collection = (Collection) items; }else if(this.items instanceof Map){ Map map = (Map) items; this.collection = map.entrySet(); } } public void doTag() throws JspException, IOException { //NO1迭代集合 Iterator<Object> it = this.collection.iterator(); while(it.hasNext()){ //NO2将集合中的每一个元素取出来,绑定到PageContext域对象 Object obj = it.next(); PageContext pageContext = (PageContext) this.getJspContext(); pageContext.setAttribute(this.var,obj); //NO3执行标签体 this.getJspBody().invoke(null); } } }
第三步,页面使用自定义标签
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/sample" prefix="simple"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <body> <% List<String> stringList = new ArrayList<String>(); stringList.add("汽车"); stringList.add("房子"); stringList.add("新闻"); stringList.add("娱乐"); application.setAttribute("STRINGLIST",stringList); %> <simple:Foreach var="s" items="${STRINGLIST}"> ${s. } </simple:Foreach> <simple:ip /> </body> </html>
自定义标签的导出与使用
第一步,在src目录下新建文件夹META-INF,然后把刚才的自定义标签tid文件拷贝到该目录下,如图
第二步 选中当前项目day16右击,选中export
第三步,导出后就可以在其他项目中使用了。如图
相关文章推荐
- JavaScript权威指南:类和模块(第九章)
- JS分页方法
- js_day25--js DOM编程(style对象之 坦克大战转向+切换菜单效果)
- JSTL 自定义标签
- js ==与===区别(两个等号与三个等号)
- 2014年3月新鲜出炉的最佳 JavaScript 工具库
- 8个惊艳的 HTML5 和 JavaScript 特效
- 关于在pjsip中添加视频的流程说明
- pjsip 视频部分学习思路
- JS eval(function(p,a,c,k,e,r){e=function(c)*****解密
- sea.js使用中的一个注意事项
- JSP Cookie使用方法详解
- document.write('<script type=\"text/javascript\"><\/script>')
- extjs 数字校园-云资源平台 2014.3.23-学生考勤管理
- 开发者不容错过的10款免费JavaScript游戏引擎
- JS判断是否为IE浏览器 包含了IE11
- JS-原型对象的理解
- 页面装载js及性能分析方法
- js 获得网页背景色和字体色
- Jsp学习笔记