开发类似sun公司提供的<c:if> <c:else>标签
实现步骤:
第一步:编写一个父标签处理器Choose.java
public class Choose extends SimpleTagSupport {
//标记执行那个标签
private boolean isDo;
public boolean isDo() {
return isDo;
}
public void setDo(boolean isDo) {
this.isDo = isDo;
}
//父标签控制标签体执行
public void doTag() throws JspException, IOException {
getJspBody().invoke(null);
}
}
第二步:编写一个 子标签WhenTag.java 、OtherwithTag.java 类似 if else
public class WhenTag extends SimpleTagSupport {
private boolean test;
public void setTest(boolean test) {
this.test = test;
}
public void doTag() throws JspException, IOException {
Choose parent=(Choose) getParent();
if(test && !parent.isDo())
{
getJspBody().invoke(null);
parent.setDo(true);
}
}
}
public class OtherwithTag extends SimpleTagSupport {
public void doTag() throws JspException, IOException {
Choose parent=(Choose) this.getParent();
if(!parent.isDo())
{
getJspBody().invoke(null);
parent.setDo(true);
}
}
}
第三步:编写一个*.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">
<description>A tag library exercising SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>SimpleTagLibrary</short-name>
<uri>http://www.liyong.nesttag</uri>
<tag>
<description>show client IP</description>
<name>choose</name>
<tag-class>com.liyong.nestTag.Choose</tag-class>
<!-- 标签体不为空 这与传统标签不同 JSP -->
<body-content>scriptless</body-content>
</tag>
<tag>
<description>show client IP</description>
<name>when</name>
<tag-class>com.liyong.nestTag.WhenTag</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>test</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
<tag>
<description>show client IP</description>
<name>otherwith</name>
<tag-class>com.liyong.nestTag.OtherwithTag</tag-class>
<body-content>scriptless</body-content>
</tag>
</taglib>
第四步:编写一个jsp 使用标签并且导入自定义标签
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.liyong.nesttag" prefix="fix" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'nestTag.jsp' starting page</title>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<br>
<%request.setAttribute("user","user"); %>
<fix:choose>
<fix:when test="${user==null }">
未登陆. <br>
</fix:when>
<fix:otherwith>
welcome用户已经登录. <br>
</fix:otherwith>
</fix:choose>
</body>
</html>
第五步:测试...
分享到:
相关推荐
### jsp自定义嵌套标签:定义与使用详解 在JavaServer Pages(JSP)技术中,自定义标签是扩展其功能的一种强大手段。而自定义嵌套标签,则是在此基础上进一步提升灵活性和重用性的机制。本文将深入探讨自定义嵌套...
对于带有标记体的标签,需要继承`javax.servlet.jsp.tagext.BodyTagSupport`,并在处理类中使用`doStartTag()`、`doAfterBody()`和`doEndTag()`方法来处理标签体内容。 5.3 一个简单的带标记体的标签(二) 在实际...
- **全功能标签(Full-Featured Tag)**:对于需要控制标签生命周期和嵌套标签的场景,应实现`javax.servlet.jsp.tagext.Tag`接口,提供了更多的生命周期方法。 在实际开发中,自定义标签通常与Servlet容器(如...
本篇文章将详细探讨自定义标签的三种类型:简单标签、嵌套标签以及正文标签,并讲解如何利用自定义标签来控制流程。 1. **简单标签** 简单标签是最基础的自定义标签形式,它没有内容区域,类似于HTML中的`<input>`...
二、自定义JSP标签的格式: 1. 使用自定义标签需要指定标签库的前缀(Prefix),前缀用于识别标签库,而URI(Uniform Resource Identifier)则用于定位TLD文件,其中包含了标签处理类的信息。 2. Web容器在启动时会...
在`example.jsp`中,我们可以看到像`<mytags:customTag attribute="value">`这样的自定义标签使用,其中`mytags`是标签库前缀,`customTag`是标签的本地名称,`attribute`是标签属性。 开发自定义标签时,可能会...
4. **在JSP页面中使用自定义标签**:最后在JSP页面中通过前缀加标签名的方式调用自定义标签。 #### 四、具体实现示例 根据给定的部分内容,我们可以进一步分析具体的实现细节: ##### 1. 配置`web.xml` ```xml ...
- 在JSP页面中使用自定义标签,通过`<%@ taglib %>`指令引入标签库。 通过以上步骤,开发者可以创建自己的JSP自定义标签库,实现特定的功能,提高代码复用性和可维护性。在实际开发中,自定义标签常常用于复杂的...
Java Server Page(JSP)是近几年发展起来的用于生成动态...提出了通过标记处理类可以解决嵌套的自定义标记中父标记如何完全包含子标记的问题,并以IF-ELSE-THEN形式的标记为例子,成功解决了在JSP中使用嵌套的自定义标记
- 在嵌套标签中,内部标签可以访问外部标签的属性,实现标签间的通信,如`<tt:outerTag>`和`<tt:innerTag>`。 4. **标签文件封装可重用内容**: - 标签文件(Tag File)提供了一种更直观的方式来定义自定义标签,...
实现这样的自定义标签需要对Java Servlet API、JSP标签库以及Struts1的API有深入理解。开发过程中,我们需要编写标签处理类并实现`TagSupport`或`SimpleTagSupport`接口,定义属性和方法,处理标签的开始和结束事件...
3. **在JSP页面中使用自定义标签**: 在JSP页面中引入TLD文件,并使用自定义标签: ```jsp ... ``` 四、自定义标签的进阶特性 1. **属性**: 可以为自定义标签添加属性,这些属性在标签使用时传递参数,比如在...
- **导入标签库**:在JSP页面中使用`<%@ taglib %>`指令引入标签库,指定TLD文件的位置。 - **使用标签**:在JSP页面中像使用内置标签一样使用自定义标签,将标签名替换为定义好的ID。 5. **标签处理程序API** ...
4. **在JSP文件中引入标签库并插入标签**:使用`<%@ taglib %>`指令在JSP页面中引入自定义标签库,然后像使用内置标签一样使用自定义标签,例如`<mm:hello/>`。 #### 四、JSP Tag API与TagSupport类 当Servlet容器...
【JSP标签库详解】 JSP(JavaServer Pages)是一种基于Java技术的动态网页开发工具,它允许开发者在HTML代码中嵌入Java代码,以实现动态网页的...因此,熟练掌握JSP标签库的使用是成为一名高效JSP开发者的必备技能。
首先,JSP中的标签库是实现自定义功能的关键。它们提供了自定义标签,这些标签在JSP页面转换为Servlet时会被相应的Java代码替换。自定义标签实质上是一个实现了特定接口的Java类,这些接口定义了标签的行为和生命...
这通常通过在Web应用的`web.xml`部署描述符中声明库,然后在JSP页面中使用`<%@ taglib %>`指令来完成。标签库描述符(TLD)文件是关键,它定义了标签库中的所有标签及其对应的处理程序。 3. **标签库描述符(TLD)...
最后,`DateTag.jsp`引入标签库并在页面中使用`<dateTag/>`。 总的来说,自定义标签是JSP中强大的工具,能够有效地组织和复用代码,提高Web应用的开发效率和质量。通过理解和掌握自定义标签的原理和实践,开发者...
这些标签极大地减少了JSP页面中的Java脚本,使页面更加清晰易读。 接下来,Nested Tags 是在Bean、HTML和Logic Tags基础上的扩展,允许标签之间的嵌套,提供更复杂的结构。这对于处理复杂的数据模型和视图很有帮助...