在jsp页面记录访问者的IP,可使用如下java代码:
<%
String ip = request.getRemoteAddr();
out.print(ip);
%>
自定义标签的作用就是把jsp上的java代码移植到java文件中。
步骤:
1.写一个类来实现上述java代码,这个类要实现Tag接口,通常我们继承tagSupport这个类,
这个接口里有doStartTag().doEndtag(),setPageContext()等方法,当tomcat编译jsp页面开始一个标签时就执行doStartTag中的方法,setPageContext()在这之前把jsp上的page传递给“标签处理器类”了,也就意味我们可以获得request等对象了。
2.对于自定义标签我们需要一个描述标签意义的文件,这个文件是放在WEB-INF下的tld文件。
文件中有<Tag>的描述,需要设置相应的标签处理器类和uri-----以便在jsp页面导入。
3.在jsp页面使用taglib引入我们的uri,并指定prefix(通常和tld的文件名相同)。
4.在jsp页面使用我们开发的标签<pp:showIP/>
二。开发if。。。else自定义标签
首先思考,当jsp页面的if执行了,那么就要通知else这个java类不要执行,因此他们要有个共同的变量来标识,从而需要使用一个父标签来控制这个变量。这就类似与jstl中的
<c:choose>
<c:when test="${user != null}">
aaaaaaaaaa
</c:when>
<c:otherwise>
bbbbbbbbbbb
</c:otherwise>
</c:choose>
1.创建3个类ChooseTag,WhenTag,OtherwiseTag。
ChooseTag:中的isDao用来标识when标签和otherwise标签是否执行了,如果其中任何一个执行了,另外一个就不需要执行了。为了控制when和otherwise,需要doTag,调用getJspBody().invoke(null);
private boolean isDo;
public boolean isDo() {
return isDo;
}
public void setDo(boolean isDo) {
this.isDo = isDo;
}
@Override
public void doTag() throws JspException, IOException {
this.getJspBody().invoke(null);
}
WhenTag:有一个test变量,是boolean型的,when执行前要判断其父标签的isDo是否为true,不为true且test变量为true时才执行。this.getParent()可以获取父标签,需要强制转换成ChooseTag。
when执行了后,要把isDo设置为true。
private boolean test;
public void setTest(boolean test) {
this.test = test;
}
@Override
public void doTag() throws JspException, IOException {
ChooseTag parent = (ChooseTag) this.getParent();
if(test && !parent.isDo()){
this.getJspBody().invoke(null);
parent.setDo(true);
}
}
OtherwiseTag:
@Override
public void doTag() throws JspException, IOException {
ChooseTag parent = (ChooseTag) this.getParent();
if(!parent.isDo()){
this.getJspBody().invoke(null);
parent.setDo(true);
}
}
2.在WEB-INF下建luo.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://baidu.com</uri>
<tag>
<name>choose</name>
<tag-class>com.luo.web.tag.ChooseTag</tag-class>
<body-content>scriptless</body-content>
</tag>
<tag>
<name>when</name>
<tag-class>com.luo.web.tag.WhenTag</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>test</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
<tag>
<name>otherwise</name>
<tag-class>com.luo.web.tag.OtherwiseTag</tag-class>
<body-content>scriptless</body-content>
</tag>
</taglib>
其中<body-content>scriptless</body-content>的scriptless包括JSP,表示有标签体,when标签还有个属性test。
3.在jsp最上面引入luo.tld
<%@taglib uri="http://baidu.com" prefix="c"%>
uri也可以表示成/WEB-INF/luo.tld
三、打包
1、新建普通java工程,把刚才写的几个tag类连同包一起copy过来,然后再建立META-INF文件夹,把luo.tld copy进去,报错不用管
2、将工程导出jar格式,其中的.project文件和.classpath不用导
分享到:
相关推荐
首先,Java自定义标签是一个Java类,它可以实现`javax.servlet.jsp.tagext.Tag`接口或者其子接口。这个接口定义了标签的生命周期方法,如`doStartTag()`和`doEndTag()`,这些方法在标签的生命周期中被容器调用来执行...
根据给定的部分内容,我们可以看到创建Java自定义标签的基本步骤: 1. **创建JAR包**:首先需要将标签处理类打包成JAR文件,例如`jstl.jar`和`standard.jar`等。 2. **编写TLD文件**:TLD文件(Tag Library ...
在Java Web开发中,自定义标签(Custom Tags)和自定义函数(Custom Functions)是提高代码复用性和可维护性的重要手段。它们是JSP(JavaServer Pages)标准标签库(JSTL)的一种扩展,允许开发者创建符合特定业务...
Java自定义标签是Java Web开发中的一个重要特性,它允许开发者创建可重用的代码段,类似于HTML标签,但具有更强大的功能和灵活性。这使得Java Web项目能够实现更高层次的抽象,提高代码的可读性和可维护性,是开发...
总的来说,Java自定义标签是JSP开发中的一个重要部分,它允许开发者创建可重用、模块化的组件,提高了代码的可维护性和复用性。通过理解并熟练掌握自定义标签的创建和使用,可以有效地提升Java Web应用的开发效率和...
在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而Java自定义标签则是JSP中增强可重用性和模块化的一种方法。本文将深入探讨如何使用Java自定义标签来实现分页功能,当前位置的显示以及数据的...
通过以上步骤,你已经掌握了创建Java自定义标签的基本流程。实践过程中,你还可以深入研究JSP API文档,理解更多的高级特性和最佳实践,以提升自定义标签的灵活性和性能。不断学习和实践,你将成为一名熟练的Java ...
Java JSP 自定义标签开发是Java Web开发中的一个重要组成部分,它允许开发者扩展JSTL提供的标准标签库,以满足特定的业务需求。JSTL(JavaServer Pages Standard Tag Library)包含四个主要的标签库,分别是核心标签...
创建Java自定义标签通常包括以下几个步骤: 1. **定义标签处理类**:这是自定义标签的核心,需要继承`javax.servlet.jsp.tagext.TagSupport`或`javax.servlet.jsp.tagext.SimpleTagSupport`,并覆盖其中的方法来...
- 使用TLD(Tag Library Descriptor)文件定义自定义标签的行为和属性。TLD文件是一个XML文档,其中包含标签的元数据,如标签名、方法调用、属性等。 - 创建对应的Java类(Tag Handler)来处理这些标签,这个类...
李宁老师的《Java Web开发速成宝典》中,详细讲解了自定义标签的创建步骤、实例分析及注意事项,配合《自定义标签的开发与应用.pdf》文件,读者可以深入理解并掌握这一技术。 总结,自定义标签是Java Web开发中的一...
总结来说,Java自定义标签的实现涉及创建TLD文件、编写标签处理器类以及在JSP页面中使用。这种机制使得开发者能够构建自己的函数库,提供定制化的功能,从而提高代码复用性和应用程序的可维护性。在本例中,我们学习...
在实际开发中,有时我们需要根据项目需求实现特定的功能,比如动态生成SQL或者进行复杂的业务逻辑处理,这时MyBatis的自定义标签功能就显得尤为重要。 自定义标签是MyBatis框架的一大特色,它允许我们扩展XML映射...
在Spring框架中,自定义标签是一项非常实用的功能,它允许我们创建符合XML语法的自定义元素,以便在配置...自定义标签可以作为扩展Spring功能的一种方式,使我们能够按照自己的需求定制框架行为,从而提升开发效率。
创建自定义标签通常需要两个步骤: 1. **编写Java类**:你需要定义一个处理自定义标签的Java类,这个类需要继承`freemarker.template.TemplateDirectiveModel`接口,并实现其方法。在这个类中,你可以编写处理逻辑...
在实际开发中,自定义标签可以实现许多高级功能,如数据库查询、缓存管理、国际化处理等。例如,你可以创建一个自定义标签用于处理分页数据,接受页码和每页数量作为参数,然后在后台查询数据库并返回相应的页面内容...
在JavaServer Pages (JSP)开发中,自定义标签是一种强大的工具,可以提高代码的可读性和可维护性。它们允许开发者封装复杂的逻辑或组件为简洁的标签形式,类似于HTML标签。本篇将详细介绍如何创建JSP自定义标签。 ...
三、自定义标签的实现步骤 1. 创建标签库描述文件(TLD,Tag Library Descriptor):这是定义自定义标签的关键文件,用于描述标签的属性、命名空间等信息。例如,`struts-tags.tld`。 2. 编写标签处理类(Tag Class...
一、自定义标签的开发步骤 1. **定义标签库(TLD)文件**:TLD(Tag Library Descriptor)文件是自定义标签的元数据,它定义了标签的名称、属性、行为等信息。例如,创建一个名为`myTags.tld`的文件,并在其中声明...
创建自定义标签通常涉及以下步骤: 1. **定义标签库描述符文件 (TLD, Tag Library Descriptor)**:TLD是XML格式的文件,用于声明自定义标签及其属性。例如,你可以创建一个名为`mytags.tld`的文件,并在其中定义一...