【Java.Web】JSP —— 标签库taglib —— 自定义JSP标签 —— 示例
来源:互联网 发布:java构造方法语法要求 编辑:程序博客网 时间:2024/06/01 20:11
示例1 - 访问自定义标签的属性
创建message标签的处理类MessageTag
创建一个包含JSP网页静态文本的资源文件
在应用的WEB-INF目录下,创建一个资源文件messageresource.properties,
#hello.title = hello titlehello.body = hello body
在Web应用启动时加载静态资源文本
创建一个LoadServlet类,利用其init()方法来完成静态资源文本的加载。将它们加载到对象的Properties对象中,然后把这个对象作为属性保存到Web应用范围内:
package com.gof.test.servlet;import java.util.Properties;import java.io.InputStream;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;public class LoadServlet extends HttpServlet { public void init() throws ServletException{ Properties ps = new Properties(); InputStream in = null; try{ ServletContext sc = getServletContext(); in = sc.getResourceAsStream("/WEB-INF/messageresource.properties"); ps.load(in); in.close(); sc.setAttribute("messageresource", ps); } catch (Exception e){ e.printStackTrace(); }finally{ try{ in.close(); }catch (Exception e){ e.printStackTrace(); } } }}
在web.xml文件中注册LoadServlet,设置其<load-on-startup>元素,保证启动时加载:
<servlet> <servlet-name>load</servlet-name> <servlet-class>com.gof.test.servlet.LoadServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>load</servlet-name> <url-pattern>/load</url-pattern> </servlet-mapping>
创建MessageTag类
package com.gof.test.taglib;import java.util.Properties;import javax.servlet.jsp.tagext.TagSupport;import javax.servlet.jsp.JspException;import javax.servlet.jsp.PageContext;public class MessageTag extends TagSupport { private String key = null; public String getKey(){ return this.key; } public void setKey(String key){ this.key = key; } public int doEndTag() throws JspException{ try{ Properties ps = (Properties)pageContext.getAttribute("messageresource", PageContext.APPLICATION_SCOPE); if (ps != null){ String message = null; message = ps.getProperty(key); pageContext.getOut().print(message); } }catch (Exception e){ e.printStackTrace(); } return EVAL_PAGE; }}<span style="font-family:SimSun;font-size:10px;"></span>
该标签处理类包含一个属性key,用于保存key的值,当标签结束时,根据key的值从资源文件中读取对应的文本值,然后写入到输出流中。
创建标签库描述文件
创建一个标签库描述文件mytaglib.tld:
<?xml version="1.0" encoding="UTF-8"?><taglib version="2.1" xmlns:xml="http://www.w3.org/XML/1998/namespace" 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 "> <tlib-version>1.1</tlib-version> <jsp-version>2.1</jsp-version> <short-name>mytaglib</short-name> <uri>/mytaglib</uri> <tag> <name>message</name> <tag-class>com.gof.test.taglib.MessageTag</tag-class> <body-content>empty</body-content> <attribute> <name>key</name> <required>true</required> </attribute> </tag></taglib>
在Web应用中使用标签
在web.xml中加入<taglib>元素,声明所引用的标签库:
<!-- taglib configuration --> <jsp-config> <taglib> <taglib-uri>/mytaglib</taglib-uri> <taglib-location>/WEB-INF/mytaglib.tld</taglib-location> </taglib> </jsp-config>
在jsp文件中哦个通过<%@ taglib %> 指令声明对标签库的引用:
taglibtest0.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><%@ taglib uri="/mytaglib" prefix="mm" %><!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> <mm:message key="hello.title" /> <br/> <mm:message key="hello.body" /> <br/> </body></html>
在浏览器中访问上面的JSP文件:
http://localhost:8080/base-webapp/jsp/tagjsp/taglibtest0.jsp
0 0
- 【Java.Web】JSP —— 标签库taglib —— 自定义JSP标签 —— 示例
- 【Java.Web】JSP —— 标签库taglib —— 自定义JSP标签 —— 基础
- 【Java.Web】JSP —— 标签库taglib —— 自定义JSP标签 —— 其他
- 【Java.Web】JSP —— 标签库taglib —— 自定义JSP标签 —— JSP Tag API
- 【Java.Web】JSP —— 标签库taglib
- 【Java.Web】JSP —— 标签库taglib —— 自定义JSP标签 —— 标签库描述文件 TLD,发布
- jsp使用自定义标签taglib分页系列——概述
- jsp使用自定义标签taglib分页系列——SearchForm
- 【Java.Web】JSP —— 标签库taglib —— 第三方标签库 —— 使用
- 【Java.Web】JSP —— 标签库taglib —— 第三方标签库 —— JSTL
- 【Java.Web】JSP —— 标签库taglib —— 第三方标签库 —— JSTL Core
- 【Java.Web】JSP —— 标签库taglib —— 第三方标签库 —— JSTL I18N
- 【Java.Web】JSP —— 标签库taglib —— 第三方标签库 —— JSTL SQL
- 【Java.Web】JSP —— 标签库taglib —— 第三方标签库 —— JSTL XML
- 【Java.Web】JSP —— 标签库taglib —— 第三方标签库 —— JSTL Functions
- jsp使用自定义标签taglib分页系列——TableBase.java
- jsp使用自定义标签taglib分页系列——TableTag.java
- jsp使用自定义标签taglib分页系列——TRTag.java
- 求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}
- Ajax 中的xmlHttpRequest.open对url的处理
- linux shell学习:变量和运算符
- 使用Python解析豆瓣上Json格式数据
- IOS 开发中判断字符串是否为空字符的方法
- 【Java.Web】JSP —— 标签库taglib —— 自定义JSP标签 —— 示例
- ZOJ 3726 Alice's Print Service RMQ
- 水樹 奈々 Blog 20140918 見ごたえ抜群っ!! 译文
- freeipa(1)服务器搭建
- Unity 物理属性
- linux脚本编程---grep与正则表达式
- CF 66D Petya and His Friends
- 双向链表的建立及基本操作
- Android Service或Activity开机自启动及自启动失败原因