首先说明这是一个HelloWorld程序。
解决的问题有:1.工程中无法使用EL表达式处理; 2.TLD应如何定义; 3.自定义一个JSP标签
1.EL表达式无法使用
(我使用的是今天晚上刚下载的tomcat.6.0.36版本,不过这个问题和tomcat版本没有关系)
1)之前总会出现的问题。我原来的解决方法是将web.xml文件中的版本号由2.5修改为2.4
例如:<web-app version="2.4" 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-app_2_4.xsd">
但是这样感觉不大好。
2)现解决方法是将JAVA EE 5 Libraries中的JAR包复制到工程中的lib目录下就解决了这个问题。
(我的下载地址:http://download.csdn.net/detail/cl61917380/5227429)
2.TLD应如何定义
1)如上图,将tag.tld文件复制到WEB-INF目录下。
2)有的人问如何可以找到官方的TLD文件定义的格式。其实只要在文档头部添加xsd,告诉IDE我的XML应该如何定义就行了,这样在写XML文件的时候IDE会给我们提示。
<?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"> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <tag> <name>tag</name> <tagclass>com.jungle.tag.PageTag</tagclass> <bodycontent>empty</bodycontent> <!-- 定义属性 --> <attribute> <name>currentPage</name><!-- 属性名字 --> <type>int</type><!-- 属性类型 --> <required>true</required><!-- 是否必须 --> <rtexprvalue>true</rtexprvalue><!-- 支持EL表达式 --> </attribute> <attribute> <name>pageCount</name><!-- 属性名字 --> <type>int</type><!-- 属性类型 --> </attribute> </tag> </taglib>
3.创建标签类
public class PageTag extends TagSupport { private int currentPage = 1; private int pageCount = 10; @Override public int doStartTag() throws JspException { ServletResponse resp = this.pageContext.getResponse(); try { PrintWriter writer = resp.getWriter(); writer.print("doStartTag()..." + "currentPage = " + currentPage + " pageCount = " + pageCount); writer.flush(); writer.close(); } catch (IOException e) { e.printStackTrace(); } return super.doStartTag(); } public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public int getPageCount() { return pageCount; } public void setPageCount(int pageCount) { this.pageCount = pageCount; } }
JSP页面:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%@ taglib uri="/WEB-INF/tag.tld" prefix="pt"%><!--引入自定义标签--> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><!--这里用的是1.2的uri,1.1的uri是http://java.sun.com/jstl/core 我用这两个uri页面都正常--> <% request.setAttribute("currentPage",3);//当前页 request.setAttribute("content","查询关键字");//查询关键字 %> <pt:tag currentPage="${currentPage}" pageCount="123"/> <br>
相关推荐
在JSP页面的EL表达式中,可以直接调用自定义函数,如`${myFunction('参数')}`。 **三、示例解析** "jsp 2.0自定义标签.doc"文件很可能包含了一个关于如何创建和使用自定义标签的详细教程。它可能涵盖了从创建TLD...
自定义EL表达式是Java Web开发中的一个高级技巧,它允许开发者扩展标准的JSP Expression Language(EL)功能,以满足特定项目需求。EL是一种简洁的语法,用于在JSP页面中获取JavaBean属性或者调用Java方法。通过...
- **配置TLD文件**:创建一个`.tld`文件(Tag Library Descriptor),这是XML格式的文件,用于定义自定义标签的元数据。在这个文件中,你需要指定标签的名字、对应的Java类、属性以及它们的配置。 2. **TLD文件...
自定义标签可以与Servlet、JavaBean、EL(表达式语言)和JSTL(JavaServer Pages Standard Tag Library)等技术结合使用,增强JSP应用的功能和性能。 10. **最佳实践** - **设计清晰的API**:确保自定义标签接口...
在这个例子中,`messageCount`和`currentPage`通常是从后台服务获取的数据,通过EL(Expression Language)表达式传递给自定义标签。 自定义标签的优势在于代码复用和分离关注点,使得业务逻辑和视图层更加清晰。在...
这里的`my:if`是自定义标签的前缀,`condition`是传递给处理程序类的属性,`${user.isAdmin}`是EL表达式,用于判断条件。 **自定义标签的优势**: 1. **代码分离**:将视图逻辑封装到自定义标签中,可以使得JSP页面...
TLD 文件是XML文档,用于定义自定义标签库,它描述了JSP页面中可使用的自定义标签及其行为。下面将详细阐述TLD文件以及与之相关的几个关键知识点。 1. **什么是TLD文件?** TLD文件是JSP标准标签库(JSTL)的一...
首先,我们需要定义一个标签库描述文件(TLD),该文件用于描述自定义标签的行为和属性。 ```xml <tlib-version>1.0 <short-name>FormatTags <name>formatDate <tag-class>...
3. **标签文件(Tag File)**:使用JSP语法定义的自定义标签,可以包含其他JSP元素,如脚本元素、EL表达式等。这种方式适合简单的标签,可以直接在JSP页面中编写,无需编写Java类。 **自定义标签的生命周期方法** ...
在自定义标签之前,我们需要了解JSTL(JavaServer Pages Standard Tag Library),这是一个官方推荐的JSP标签库,包含许多预定义的标签,如表达式语言(EL)、XML处理、数据库操作等。自定义标签可以作为JSTL的补充...
此外,JSP自定义标签还有其他优势,比如支持EL(Expression Language)表达式,可以更方便地获取和设置页面作用域内的变量;支持国际化和主题,可以更好地适应多语言和多风格的需求。 在实际开发中,除了自定义标签...
在JavaServer Pages (JSP) 技术中,自定义标签是实现页面逻辑与表现分离的重要手段之一。...在实际开发中,自定义标签常常与Servlet、JavaBeans以及EL表达式等技术结合使用,以构建更加健壮的Web应用。
3. **在JSP页面中使用自定义标签**: 在JSP页面中引入TLD文件,并使用自定义标签: ```jsp ... ``` 四、自定义标签的进阶特性 1. **属性**: 可以为自定义标签添加属性,这些属性在标签使用时传递参数,比如在...
在JSP中,自定义标签由两部分组成:标签处理类(Tag Handler Class)和标签库描述符(TLD, Tag Library Descriptor)。标签处理类负责执行标签逻辑,而TLD则定义了标签的属性、行为以及与其关联的Java类。 1. **...
5. **属性和表达式语言(Expression Language, EL)**:自定义标签可以接收属性参数,这些参数可以是静态值,也可以是EL表达式,EL提供了一种简洁的方式来访问JavaBean或其他数据源。 6. **国际化(i18n)与资源包...
2. EL:标签体内的EL表达式可以访问页面上下文中的数据,与自定义标签交互。 六、自定义标签的扩展 JSP标准标签库(JSTL)提供了更强大的功能,如条件判断、循环、XML处理等,开发者可以基于这些基础构建更复杂的...
3. 与EL(Expression Language)结合:自定义标签可以与EL表达式一起使用,方便数据的获取和传递。 六、Webwork框架中的自定义标签 提到的两个压缩文件名,"webworkDemo.rar"和"webwork-ppt.rar"可能与Webwork框架...
此外,自定义标签也可以方便地与其他Java Web组件,如Servlet、JSTL、EL表达式等进行集成,构建出功能强大的Web应用程序。 在工具方面,开发JSP自定义标签通常需要IDE支持,如Eclipse、IntelliJ IDEA等,它们提供了...
EL表达式通常被用来获取和设置页面、请求、会话和应用程序范围内的对象属性,以及处理JSP页面中的各种数据。 在Tomcat服务器中,EL表达式默认是启用的,但在某些情况下可能需要手动配置。有以下两种方法来确保...
在JSP中,自定义标签通常由两个部分组成:标签处理类(Tag Handler Class)和标签库描述符文件(TLD, Tag Library Descriptor)。标签处理类负责处理标签逻辑,而TLD则定义了标签的元数据,如标签名、属性、返回类型...