`
djsl6071
  • 浏览: 593374 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

JSP标准模板库(上)(zz)

阅读更多

经典入门教程:JSP标准模板库(上)

简介

JSP标准模板库(JSTL)是SUN公司发布的一个针对JSP开发的新组件。JSTL允许你使用标签(tags)来进行JSP页面开发,而不是使用多数JSP程序员已经习惯了的scriptlet代码方式开发。JSTL几乎能够做到传统JSP scriptlet代码能做的任何事情。你可能会疑惑,为什么我们需要另一种这样的HTML生成语言呢?

STL允许JSP程序员使用tags而不是JAVA代码来编程。为了展示为什么这个是更优越的,下面将给出示例。我们会检查一个非常简单的从1数到10的JSP页面。我们将通过两种方法来检查,一种是基于JSP的scriptlet,一种是JSTL。当这个计数器页面的例子是用JSP scriptlet来编写时,JSP页面如下所示:

<html>
  <head>
    <title>Count to 10 in JSP scriptlet</title>
  </head>
  <body>
<%
  for(int i=1;i<=10;i++)
{%>
<%=i%><br/>
<%
}
%>
  </body>
</html>

正如你在上例中看到的看到的那样,使用scriptlet代码产生的页面源代码会包含混合的HTML标签和JAVA语句。这种混合型的编程方式不是最佳的方式,其主要原因有以下几点。

主要的原因是它的可读性。这个可读性主要依赖于人类和计算机。JSTL可以允许程序员查看一个只包含完整HTML和类似HTML的标签的页面。

SP scriptlet代码的可读性不适合人类。这种混合的scriptlet和HTML代码对于计算机来说也很难读。尤其是针对那些HTML官方工具如Dreamweaver和Microsoft FrontPage,所表现出来的不直观性更突出。目前,大多数HTML官方工具会以不可编辑块(non-editable blocks)的形式来隔离JSP scriptlet代码。这种HTML官方工具通常是不能直接修改JSP scriptlet代码的。

下面这段代码展示这个计数器范例如何使用JSTL方式来编写。正如你所看到的,这个代码列表有不变性,仅仅一个标签被使用。HTML和JSTL标签混合起来产生了这个程序。

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<html>
  <head>
    <title>Count to 10 Example (using JSTL)</title>
  </head>

  <body>
    <c:forEach var="i" begin="1" end="10" step="1">
      <c:out value="${i}" />

      <br />
    </c:forEach>
  </body>
</html>

当你检查上面这个例子的代码时,你会看到,JSP页面只包含标签。上面的代码使用诸如<head>和<br>这样的HTML标签。这种标签用法不限制于HTML标签。这段代码也可以使用诸如<c:forEach>和<c:out>这样的JSTL标签。在本文中,将会介绍一些JSTL的基础。

安装JSTL

要使用JSTL,你必须安装有一个JSP1.2(或者更高版本)的容器。最普通的JSP容器是Apache Tomcat。你能够从http://jakarta.apache.org/tomcat/这里下载到。独立的Tomcat允许你使用常规的JSP scriptlet代码。要使用JSTL,你必须在Tomcat中安装JSTL。JSTL的主要URL是 http://java.sun.com/products/jsp/jstl/。要使用JSTL,必须解压这个文件,然后将它安装到Tomcat的正确位置。

要在Tomcat中安装JSTL,有下面三个步骤:

  1. 拷贝JSTL JAR文件到Tomcat的lib目录中.
  2. 拷贝JSTL TLD文件到Tomcat的web-inf目录中
  3. 修改web.xml文件包含这些TLD文件。


  4. 如果你使用的是Windows, 那么lib目录最可能的位置是C:\Program Files\Apache Tomcat 4.0\webapps\ROOT\WEB-INF\lib。你应该拷贝这些JAR包到你的Tomcat JAR目录。


    你检查JSTL发布文件时,你应该会注意到有8个文件是以TLD扩展名结尾的。所有这8个文件都应该复制到你的web-inf目录中。


    最后,你必须修改你的web.xml,添加8个标签库的表项(entry)。需要添加的表项如下所示:

<taglib>
    <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
    <taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>

<taglib>
    <taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
    <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
</taglib>

<taglib>
    <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
    <taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>

<taglib>
    <taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
    <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
</taglib>

<taglib>
    <taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
    <taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>

<taglib>
    <taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
    <taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
</taglib>

<taglib>
    <taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
    <taglib-location>/WEB-INF/x.tld</taglib-location>
</taglib>

<taglib>
    <taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
    <taglib-location>/WEB-INF/x-rt.tld</taglib-location>
</taglib>

完成上面这三步后,你现在可以准备测试你的JSTL安装了。可以通过创建一个包含JSTL的JSP页面来验证。一个最简单的范例程序就是上面的那个计数器程序。你应该将它放置在你的Webroot目录中(C:\Program Files\Apache Tomcat 5.0\webapps\ROOT)。一旦Tomcat启动后,你应该能够通过浏览 http://127.0.0.1:8080/count.jsp来查看这个页面。

如果你没有正确安装JSTL,那么可能不会出现错误信息。如果JSTL不能解释你的标签含义,那么它在Web浏览器上会直接跳过。然后Web浏览器将解释这些未知的HTML标签。多数浏览器仅仅只是忽略这些未知的HTML标签。

To be continued......

Translated by Caiyi0903(Willpower),2004.2.19

经典入门教程:JSP标准模板库(上)

 

JSTL标签库
JSTL通常被认为是一种单标签库。但JSTL实际上有4个标签库。这些标签库被概括为如下:

核心标签库—包含一些Web应用的必要的标签。核心标签库的实例包括循环,表达式赋值和基本输入输出。.


格式化/国际化标签库—包括被用来解析数据的标签库。这种标签会解析数据,比如日期,不同的场所区域等。


数据库标签库—包含被用来访问SQL数据库的标签。这些标签通常仅仅只创建原形(prototype)程序。这个是因为大多数程序不会直接从JSP页面中来处理数据库访问。数据库访问应该被嵌入到能够被JSP页面所访问的EJB中。


XML标签库—包含被用来访问XML元素的标签。因为XML广泛使用于Web开发,XML的处理是JSTL的一个重要的特征。 
在本文中,我们将仅仅只对核心标签做一个简单介绍。我们将考察一个简单的范例,来说明如何处理用户在表单中输入的数据。在我们开始检查程序之前,我们必须先看看JSTL是如何处理表达式的,JSTL的表达式处理是通过使用EL表达式语言来完成的,仅仅只能在JSP2.0被使用。下一节,我们会考察EL表达式语言。

EL表达式语言
JSP2.0的一个主要的组件就是这个新的叫做EL的表达式语言。EL被广泛用在JSTL中。然而,重要的是记住,EL是JSP的功能而不是JSTL的。被用在JSP2.0中JSP scriptlet代码能够包含EL表达式。下面这行代码演示了JSP scriptlet代码中的EL:

<p>
  Your total, including shipping is ${total+shipping}
</p>

正如你看到的,total和shipping相加后会产生HTML并且在浏览器中显示它们的值。这些表达式也可以在JSTL标签中使用。JSTL1.0的一个重要问题是,JSTL不能用在JSP1.2的版本上。因为JSP1.2不支持EL,所以有必要提供一些额外的JSTL标签来帮助EL的使用。例如,如果你想使用JSTL来显示上面的表达式,你可以使用下面的代码。

<p>
  Your total, including shipping is <c:out var="${total+shipping"/>
</p>

值得注意的是,JSTL不需要JSP2.0来运行。通过提供一个能够显示EL表达式的标签,就可以达到这样的需求。

JSTL范例
我们将考察一个简单的使用JSTL的范例。在这个例子里,我们将考察Web应用中的一个常见过程。我们会看到如何提交(POST)一个表单,并处理POST的结果。程序代码如下:

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<html>
  <head>
    <title>If with Body</title>
  </head>

  <body>
    <c:if test="${pageContext.request.method=='POST'}">
      <c:if test="${param.guess=='Java'}">You guessed it!
      <br />

      <br />

      <br />
      </c:if>

      <c:if test="${param.guess!='Java'}">You are wrong
      <br />

      <br />

      <br />
      </c:if>
    </c:if>

    <form method="post">Guess what computer language
                        I am thinking of?
    <input type="text" name="guess" />

    <input type="submit" value="Try!" />

    <br/>
    </form>
  </body>
</html>

这个简单的Web页面显示一个表单,要求用户猜测程序所想的计算机语言。当然,计算机想的是“Java”。这个页面通过检查“是否已提交”来开始。这使得表单和处理表单的代码可以放在同一个页面中。是通过下面的JSTL if语句实现的。

<c:if test="${pageContext.request.method=='POST'}">

现在你看到了,<c:if>标签使用EL表达式来决定是否请求的方式是POST的。如果数据被post到页面,那么用户输入的他们的猜想值就会存储在名为“guest”的参数中。这是因为“guest”是表单输入项的名字。我们现在必须检查是否这个参数等于“Java”。这个是通过下面的<c:if>标签来完成:

<c:if test="${param.guess=='Java'}">
          You guessed it!
      </c:if>


正如你所看到的,如果表达式为true,<c:if>标签的标签体就被执行。在本文中,我们开始考察了JSTL如何被安装,以及它是如何运转的,也提供了一些JSTL小范例帮助大家理解。

JSTL的核心标签也包含循环,叠代器和变量处理。通过使用标签,你能在collections里进行iterate,访问用户的会话数据(session data),执行其他的核心任务等。除了核心标签库,XML,数据库和格式化标签库也提供了更多高级的用处。

(End)

注:EL Expression Language这里翻译成EL表达式语言,有的是翻译成EL表达语言,是一个意思。

Translated by Caiyi0903(Willpower),2004.2.19

分享到:
评论

相关推荐

    很有用的java试题

    如果Action执行完毕,ActionInvocation会根据配置找到对应的返回结果,通常是一个JSP或FreeMarker模板,用于渲染视图。 8. **视图展示**:Struts2提供了一系列标签库,如,用于在视图层显示错误信息,方便用户交互...

    JavaEE源码oracleWEB的仓库系统源码数据库sql文档

    Java Platform, Enterprise Edition (Java EE) 是一个为开发企业级应用提供的一套标准规范。JavaEE 4.1 版本进一步完善了 JavaEE 的核心功能,并增加了对最新 Web 技术的支持,例如 RESTful Web 服务等。 ### 二、...

    JavaEE源码超市积分源码数据库sql文档

    它基于Java标准版(Java SE),并在其基础上添加了多种组件和服务,以支持企业级应用的开发、部署和管理。JavaEE主要针对大型、复杂的分布式系统设计。 #### 1.2 超市积分管理系统 超市积分管理系统是一种用于记录...

    JavaEE源码在线考试系统无数据库源码文档

    综上所述,“JavaEE源码在线考试系统无数据库源码文档”介绍了一个基于JavaEE技术栈的在线考试系统项目。该系统不仅涵盖了基本的功能模块,还涉及到了一些关键技术点,如动态页面生成、XML数据处理、并发控制等。...

    JavaEE源码图书销售系统GUI源码数据库sql文档

    Java EE的核心技术包括Servlets、JavaServer Pages (JSP)、Enterprise JavaBeans (EJB)等。 #### 2. JavaEE 3.4版本特性 尽管“JavaEE 3.4”这个表述在官方文档中并不存在,但从上下文中可以推测这可能是指一个基于...

    JavaEE百货中心供应链系统源码数据库sql文档

    Java Platform, Enterprise Edition(Java EE)是用于开发可移植、健壮、可伸缩且安全的服务器端应用程序的标准。它基于Java SE并提供了许多企业级服务,如Web服务、事务管理和安全性等。JavaEE平台的核心组件包括...

    struts2开发包全下载

    同时,为了更好地理解和使用Struts2,开发者还需要了解其配置文件(如struts.xml)、Action类的设计、视图层的创建(如JSP页面或FreeMarker模板)、拦截器的定制等知识。通过这个完整的开发包,开发者可以快速搭建起...

    都市供求信息网设计免费下载

    3. **View** - JSP或Freemarker模板文件,展示用户界面。 4. **Configurations** - Struts2的配置文件,定义动作映射和其他设置。 5. **Database Scripts** - 创建和初始化SQL Server 2000数据库的SQL脚本。 6. **...

    JavaEE源码陶瓷工厂进销存源码数据库sql文档

    - **Web 应用程序开发**:增强了Servlet、JSP等技术,提供更好的Web开发支持。 - **企业级服务**:包括事务管理、安全性和消息传递等。 - **持久化层**:支持Java Persistence API (JPA),简化对象关系映射。 - **...

    JavaEE源码汽车销售系统源码数据库sql文档

    JavaEE(Java Platform, Enterprise Edition)是一种利用Java平台帮助开发、部署和管理多层企业应用程序的标准。它提供了一系列用于构建复杂企业级应用的技术和服务。在这个项目中提到的“JavaEE 3.0”可能是指一个...

    PanaderiaZZ:面包店页面,对webcontent中的make-ddbb进行了改进-src

    - `src/main/resources`:资源文件,可能有数据库连接配置(如`application.properties`)、模板文件等。 - `src/main/webapp`:Web应用目录,可能包含`WEB-INF`、`js`、`css`、`images`等子目录,用于存放HTML、...

    JavaEE源码企业合同系统源码数据库sql文档

    - **强大的表单标签库**: Struts 2提供了一系列丰富的标签库,可以方便地创建表单和处理用户输入。 - **集成性**: 它可以轻松地与Spring和Hibernate等其他流行框架进行集成。 - **国际化支持**: 支持多语言环境,...

Global site tag (gtag.js) - Google Analytics