简单的JSTL例子
### 知识点一:JavaServer Pages Standard Tag Library (JSTL) JSTL,即JavaServer Pages Standard Tag Library,是Java平台上的一个标准标签库,用于简化JSP页面的开发工作。它提供了一系列预定义的标签,可以执行常见的Web应用程序功能,如条件判断、循环、国际化等,而无需编写自定义的Java代码。 ### 知识点二:自定义JSTL标签 在给定的文件中,我们看到一个自定义的JSTL标签`HelloWorldTag`的实现。这个标签继承自`TagSupport`类,这是一个抽象类,提供了实现JSP标签的基本框架。在`doStartTag()`方法中,我们可以看到如何使用`JspWriter`对象来向页面输出文本“Hello, world!”。 ### 知识点三:TLD文件的定义 `jsp-taglib.tld`文件是一个DTD(Document Type Definition)文件,用于定义自定义标签库的行为。在这个文件中,我们定义了`HelloWorldTag`的标签名`hwt`,它的类路径`cn.com.jsp.sample.tag.HelloWorldTag`,以及它没有体内容(`bodycontent`属性为`empty`),这表明它不接受任何子标签或文本内容。 ### 知识点四:在JSP页面中使用自定义标签 在`HelloWorld.jsp`文件中,我们首先通过`<%@ taglib %>`指令引入了自定义的标签库,指定其URI为`/WEB-INF/jsp-taglib.tld`,并为其设置了一个前缀`jtl`。然后,在JSP页面的主体部分,我们使用了自定义标签`<jtl:hwt/>`,这将调用`HelloWorldTag`类,并在页面上输出“Hello, world!”。 ### 知识点五:文件目录结构 为了使JSP应用正常运行,文件的存放位置非常重要。在这个例子中: - `HelloWorldTag.java`位于`<wwwroot>/WEB-INF/cn/com/jsp/sample/`目录下。 - `jsp-taglib.tld`位于`<wwwroot>/WEB-INF/`目录下。 - `HelloWorld.jsp`位于`<wwwroot>/`目录下。 这样的目录结构遵循了Servlet容器的标准,其中`WEB-INF`目录通常包含了应用程序的配置文件和类文件,而根目录则包含了可以直接访问的JSP页面和其他静态资源。 ### 知识点六:部署与访问 要使这个简单的JSTL示例运行,首先需要将这些文件部署到一个支持JSP的Web服务器上,如Tomcat。然后,可以通过访问`http://localhost:8080/HelloWorld.jsp`(假设服务器运行在本地主机上,端口为8080)来查看结果。服务器将解析JSP页面,执行自定义的JSTL标签,最终返回包含“Hello, world!”的HTML页面给客户端。 通过创建自定义的JSTL标签,开发者可以封装特定的功能,提高代码的复用性和可维护性。同时,利用TLD文件和正确的目录结构,可以确保这些标签在JSP应用中被正确识别和调用。
package cn.com.jsp.sample.tag;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class HelloWorldTag extends TagSupport {
public int doStartTag() {
try {
JspWriter out = pageContext.getOut();
out.print("Hello,world!");
} catch (Exception ex) {
System.out.println("Error in HelloWorldTag class" + ex);
}
return (SKIP_BODY); // 返回一常量,告知已无标记体需处理
}
}
二.编写jsp-taglib.tld文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion> <!-- taglib版本号 -->
<jspversion>1.1</jspversion> <!-- JSP版本号 -->
<shortname>jtl</shortname> <!-- 声明该taglib的简称 -->
<tag> <!-- 标记定义开始 -->
<name>hwt</name> <!-- 标记名即JSP内部调用名 -->
- www_shizhen2014-04-25很好的入门例子。谢谢!
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助