自定义标签调用资源文件

[color=red]自定义标签处理类一般都继承TagSupport或BodyTagSupport[/color]
1.先看一个普通的最简单的自定义标签程序。
[color=red]A:创建标签的处理类[/color]

package com.test.tag;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;

@SuppressWarnings("serial")
public class HelloTag extends TagSupport {

//doStartTag返回的都是BODY相关,doEndTag返回的都是PAGE相关
@Override
public int doStartTag() throws JspException {
try {
//通过PageContext对象的getOut()方法获得JspWriter对象输出内容
this.pageContext.getOut().write("hello");
} catch (IOException e) {
e.printStackTrace();
}
return Tag.EVAL_BODY_INCLUDE;
}

}



[color=red]B:创建标签库描述文件[/color]

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>hello taglib test</short-name>
<uri>/hellotag</uri>

<tag>
<!--Tag名字 -->
<name>hello</name>
<!-- 该Tag对应的处理类 -->
<tag-class>com.test.tag.HelloTag</tag-class>
<!-- 该 Tag的body内容为空 -->
<body-content>empty</body-content>
</tag>
</taglib>


[color=red]C.在JSP文件中引入标签库,然后插入标签[/color]
jsp里有两种引用方式:
<%@ taglib uri="/WEB-INF/hello.tld" prefix="aa" %>或者
<%@ taglib uri="/hellotag" prefix="aa" %>

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/hellotag" prefix="aa" %>


<html>
<body>
<aa:hello/>
</body>
</html>


输出结果为:hello

2.自定义标签库引用资源文件
[color=red]A:首先在应用程序根目录下建立一个资源文件比如叫:helloworld.properties[/color],内容为:

hello.title=tagTitle
hello.content=tagContent

[color=red]B:建立一个Servlet,在启动时加载该Servlet,在init方法里读取[/color]helloworld.properties文件内容。

package com.test.tag;

import java.io.InputStream;
import java.util.Properties;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

@SuppressWarnings("serial")
public class TagServlet extends HttpServlet {
public void init() throws ServletException {
System.out.println("init not param");
}
//init(ServletConfig config)存在,则init()方法则不会执行。如果init(ServletConfig config)不存在,则init()方法会执行
@Override
public void init(ServletConfig config) throws ServletException {
try{
System.out.println("init have param");
Properties p = new Properties();
//通过ServletContext读取资源文件
ServletContext context = config.getServletContext();
InputStream in = context.getResourceAsStream("/helloworld.properties");

p.load(in);
in.close();
//设置属性key-value到context中
context.setAttribute("prop", p);
}catch(Exception e){
e.printStackTrace();
}

}


}


[color=red]C:创建标签库的处理类:[/color]

package com.test.tag;

import java.util.Properties;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;

@SuppressWarnings("serial")
public class HelloTagByResource extends TagSupport {
private String title;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
//在doStartTag和doEndTag里写都可以。不要误认为:"遇到标签的起始标记时,还没有解析到其属性title,所以放在doStartTag里写会报错"
@SuppressWarnings("static-access")
@Override
public int doStartTag() throws JspException {
try{
// Properties p = (Properties)this.pageContext.getAttribute("ps",this.pageContext.APPLICATION_SCOPE);
Properties p = (Properties)this.pageContext.getAttribute("ps",PageContext.APPLICATION_SCOPE);
String str = p.getProperty(title);
this.pageContext.getOut().print(str);
}catch(Exception e){
e.printStackTrace();
}
return Tag.EVAL_BODY_INCLUDE;
}
// @Override
// public int doEndTag() throws JspException {
// try{
//// Properties p = (Properties)this.pageContext.getAttribute("ps",this.pageContext.APPLICATION_SCOPE);
// Properties p = (Properties)this.pageContext.getAttribute("ps",PageContext.APPLICATION_SCOPE);
// String str = p.getProperty(title);
// this.pageContext.getOut().print(str);
// }catch(Exception e){
// e.printStackTrace();
// }
// return Tag.EVAL_PAGE;
// }



}


[color=red]D:创建自定义标签的描述文件[/color]

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>hello taglib test</short-name>
<uri>/hellotag</uri>

<tag>
<!--Tag名字 -->
<name>hello</name>
<!-- 该Tag对应的处理类 -->
<tag-class>com.test.tag.HelloTag</tag-class>
<!-- 该 Tag的body内容为空 -->
<body-content>empty</body-content>
</tag>

<tag>
<!--Tag名字 -->
<name>message</name>
<!-- 该Tag对应的处理类 -->
<tag-class>com.test.tag.HelloTagByResource</tag-class>
<!-- 该 Tag的body内容为空 -->
<body-content>empty</body-content>
<!-- 属性定义 -->
<attribute>
<name>title</name>
<required>true</required>
</attribute>
</tag>
</taglib>

[color=red]E:jsp里引用[/color]

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/hellotag" prefix="aa" %>


<html>
<body>
<aa:message title="hello.title"/><br/>
<aa:message title="hello.content"/>
</body>
</html>



输出内容为:
tagTitle
tagContent
标签打印模板 通用标签标准打印模板,用于机房标签打印,标准的刀型标签。 立即下载

相关推荐

经典资源博客标签

资源标签,平时总结的, 全部当作笔记来用,后期还要总结。

csdn 上传资源标签不能添加中文 -- 解决办法

csdn 上传资源标签不能添加中文 – 解决办法 你好! 关于csdn上传资源标签不能添加中文 – 解决办法:可以在别的地方编辑好需要添加的标签,然后复制即可;不过要注意添加标的字符长度啊 !!! ...

aibujin的博客 786

万达电影 com.wandafilm.app headers check

万达电影 安卓逆向 抓包 逆向 check

weixin_43786514的博客 1438

自定义标签的原理

文章目录自定义标签的原理 JSP标签的具体操作步骤参照上篇:自定义标签具体操作 自定义标签的原理 1)当服务器打开时,就会加载WEB-INF下的资源文件,包括web.xml 和 tld文件,把它们加载到内存 2)我们在浏览器输入http://localhost:8080/TestArea/testit.jsp来访问jsp页面 3)服务器读取testit.jsp里的内容,当读到 <%@tagl...

秃头俱乐部 274

基于STM32的工业I/O模块硬件电路实现

深入解析基于STM32的工业I/O模块硬件电路实现,涵盖关键电路设计与信号处理,突出硬件电路稳定性和工业级可靠性,适合嵌入式开发者参考。

weixin_35835018的博客 453

BMS | 从一串到几百串硬件架构简介

锂电池在生活中越来越多的方面扮演能源的角色,除了大家熟知的电动汽车行业,在一些消费类,工业类电子产品比如手机,电动自行车,电动工具中都有应用,追本溯源今天我们一起来学习下最基础的BMS架构。 1~4串架构 以S8241为代表的无通信/无固件/模拟器件 可实现过充保护、过放保护、过流/短路,参数由器件后缀代码决定;通信类手持设备供电系统;1~4节电池保护板架构 如图使用S-8241系列保护IC,一对充放电MOS管控制充放电的回路的切断和接通,系统供电来自于电芯电压,VM引脚用于检测过...

ningvay的博客 9917

斑马打印机调用内置宋体ZPL指令资源下载:优化打印体验的一大利器

斑马打印机调用内置宋体ZPL指令资源下载:优化打印体验的一大利器 【下载地址】斑马打印机调用内置宋体ZPL指令资源下载 本项目提供了斑马打印机调用内置宋体字体的ZPL指令资源文件,帮助用户轻松在打印机上安装并使用宋体或其他字体。资源文件包含详细的ZPL指令,适用于需要将特定字体灌入打印机的场景。使用前请确保打印机支持ZP...

gitblog_06706的博客 360

基于YOLOv8的城市违建识别系统:从数据集构建到UI界面实现

YOLOv8是Ultralytics公司于2023年推出的最新一代YOLO(You Only Look Once)系列目标检测算法。更高效的骨干网络设计改进的锚框机制更精确的损失函数支持分类、检测、分割等多任务YOLOv8特别适合像违建识别这样的实时检测任务,能够在保持高精度的同时实现快速推理。

YOLO 674

MFC自定义界面资源包

MFC自定义界面资源包 去发现同类优质开源项目:https://gitcode.com/ 简介 此资源包包含了一个使用MFC(Microsoft Foundation Classes)开发的自定义界面,适用于工控及展示用途。本界面完全不依赖于任何Windows标准控件,实现了按钮、标签、窗口分割等功能的自定义。具备动态自适应大小、全屏切换(F11)、快捷键(S)等特性,同时支持对话框和主窗口间的数...

gitblog_06773的博客 477

手把手教你 Ubuntu 24.04 离线安装 Ollama

本文介绍 Ubuntu 下离线安装 Ollama 并使用 Ollama 部署 llama3.1-70b 大模型

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 1018

CVPR 2026 即插即用 | 注意力篇 | MSEF:超轻注意力,空间-通道双分支并行融合,既增强特征又抑制噪声!

Multinex提出了一种超轻量级微光图像增强框架,其核心创新是MSEF模块。MSEF采用双分支并行架构,结合空间局部特征(深度可分离卷积)和全局通道注意力(改进SE),通过Tanh激活实现特征增强与抑制。相比传统注意力模块,MSEF在几乎不增加计算量的情况下显著提升性能,特别适合轻量级网络和边缘设备部署。实验表明,该模块能有效提升PSNR约3dB,同时保持极低的参数量(0.7K-45K)。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 603

【亲测免费】 LABEL MATRIX7.0.zip 资源文件介绍

LABEL MATRIX7.0.zip 资源文件介绍 【下载地址】LABELMATRIX7.0.zip资源文件介绍 LABEL MATRIX7.0 是一款专为提升标签制作效率与质量而设计的强大软件。它提供了直观的标签编辑界面,支持多种格式与样式的自定义,让用户轻松完成标签内容的设计。软件还配备了专业的打印功能,确保输出的...

gitblog_06731的博客 597

车辆网络安全ISO/SAE 21434解读(一)概述

ISO/SAE 21434 《道路车辆 网络安全工程》是SAE和ISO共同制定的一项针对道路车辆的网络安全标准,它是一个面向汽车行业全供应链(OEM及各级供应商)的车辆网络安全管理指导文件

xiaoxiabang的博客 8424

JSP中使用FCKeditor

通过JavaScript调用 第一步:将fckeditor的资源文件夹复制到webRoot下 第二步:引人JavaScript文件    "text/javascript“ src="fckeditor/fckeditor.js">  第三步:输出JavaScript调用的代码。 方法一:创建并输入一个编辑器。  "text/javascript">    //*创

suijiarui的专栏 636

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LabVIEW文件对话框多语言适配实战:从系统配置到编程自定义

本文详细介绍了LabVIEW文件对话框的多语言适配方法,涵盖系统配置调整和编程自定义实现。通过修改Windows区域设置、使用LabVIEW语言启动参数,以及编程调用文件对话框函数,开发者可以灵活解决中英文切换等国际化需求,确保软件在不同语言环境下的界面一致性。

lll78的博客 544

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Struts2 一天学会 还整合spring,Hibernate

附件中有一文档,总结的比较详细,准一天学会。(如果好就给个评论吧!   ) 1.struts2基础 2.Struts2 spring hibernate 整合 3.阻止表单重复提交 4.struts2标签利用 5.OGNL表达式 6.配个各种范围的国际化资源文件 7.手动输入校验,xml输入校验 8.Struts2.拦截器 9.文件上传 10.自定义转换器 11.动态方法的使用 12.Struts

路虽远行则将至,事虽难做则必成 355

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Spring中添加自定义标签

在spring中添加一个自定义标签<cxyxh:blog>将属性读取到BeanFactory中,并能通过指定的id获取到Bean。

程序猿小河 724

探索前端利器:基于bootstrap的多标签页tabs资源文件

探索前端利器:基于bootstrap的多标签页tabs资源文件 去发现同类优质开源项目:https://gitcode.com/ 在当代web开发中,用户体验的优化一直是开发者关注的焦点。多标签页(tabs)功能作为提升用户交互体验的有效手段,被广泛应用于各类web应用中。今天,我们将为您介绍一款基于html5和bootstrap框架制作的多标签页tabs资源文件,帮助您快速实现这一功能。 项目介...

gitblog_06722的博客 1065

高效便捷的标签打印解决方案:C调用Bartender SDK实现标签打印Demo

高效便捷的标签打印解决方案:C#调用Bartender SDK实现标签打印Demo 【下载地址】C调用BartenderSDK实现标签打印Demo C#调用Bartender SDK实现标签打印Demo本仓库提供了一个C#项目,演示了如何通过调用Bartender的SDK来实现标签打印功能 ...

gitblog_09715的博客 1086

Android自定义控件增加xml标签属性、取值等

Android中常常用到写自己的控件来满足自己的开发需求,自定义控件在布局中使用的时候,如何增加标签属性来配置控件属性,又如何在控件中使用自己添加的属性 一、在资源文件中配置标签属性 在资源文件res/values/attrs.xml中增加declare-styleable 节点,name为自定义控件名字;如下 <resources> <declare-styleable name="CustomerView"> //项目中资源id ..

码农,代码为毛不能种? 1110
上一篇: Extjs2.0常用备忘
下一篇: javascript特性一(备忘)
ttitfly
博客等级 码龄12年 3粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值