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

原创 2004年02月20日 11:17:00

经典入门教程: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经典书籍推荐

曾几何时,国外的Java图书出现过三大系列鼎足而立的态势。这就是Pearson集团旗下的 Prentice Hall和Addison Wesley与Sun公司合作推出的Sun Press Java系列...
  • kingmax54212008
  • kingmax54212008
  • 2016年06月22日 10:39
  • 10146

最新最经典的黑客入门教程(必备技能)

无论那类黑客都是黑客联盟,他们最初的学习内容都将是本部分所涉及的内容,而且掌握的基本技能也都是一样的。即便日后他们各自走上了不同的道路,但是所做的事情也差不多,只不过出发点和目的不一样而已 第一...
  • qq78069460
  • qq78069460
  • 2016年07月05日 16:20
  • 947

超越之JSP总结(经典)

JSP 定义:     1)Java Server Page, Java EE 组件,本质上是 Servlet。     2)运行在 Web Container.接收 Http Request,生成 ...
  • cyjch
  • cyjch
  • 2016年05月25日 15:36
  • 3167

MySQL 经典入门教程

MySQL 经典入门教程,SQL语句,范式,聚合函数
  • u013451048
  • u013451048
  • 2016年10月18日 23:02
  • 2795

最简单的小型商城实现:Serlvet+Jsp经典案例

后台代码 管理员和客户两种基本角色各自一个Servlet解决: 客户servlet:ClientServlet public class ClientServlet extends Http...
  • a769901686
  • a769901686
  • 2015年04月26日 23:05
  • 4892

小博老师收集Java经典面试题 ——Servlet和JSP常见面试题

[面试题] 1、简单说说tomcat的配置? JAVA_HOME=JDK的根目录 CATALINA_HOME=tomcat的根目录   CATALINA-HOME\conf\server.x...
  • bwf_erg
  • bwf_erg
  • 2016年11月08日 13:11
  • 939

mvc5入门,经典教程

转子 http://www.yanjinnan.com/archives/category/tech/efmvc ASP.NET MVC 5  一 入门 发表于 2013 年 8 月 12 日 ...
  • wangmj518
  • wangmj518
  • 2015年12月05日 20:40
  • 880

JSP快速入门教程——全十讲

第一讲(参考《Java Web程序设计基础教程》第1章) 1 JSP 和 Java的关系    一般Java指的标注版 Java SE    另外两个版本:Java EE 和 Java ME...
  • hunannanhu
  • hunannanhu
  • 2015年05月22日 14:37
  • 7916

强烈推荐visual c++ 2012入门经典适合初学者入门

强烈推荐visual c++ 2012入门经典适合初学者入门 此书循序渐进,用其独特、易于理解的教程风格来介绍各个主题,无论是编程新手,还是经验丰富的编程人员,都很容易理解。 此书的目录基本覆盖了...
  • yincheng01
  • yincheng01
  • 2013年07月26日 15:43
  • 6591

Kafka入门经典教程

问题导读 1.Kafka独特设计在什么地方? 2.Kafka如何搭建及创建topic、发送消息、消费消息? 3.如何书写Kafka程序? 4.数据传输的事务定义有哪三种? 5.Kafka...
  • kingice1014
  • kingice1014
  • 2017年05月17日 13:46
  • 2679
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:经典入门教程:JSP标准模板库(下)
举报原因:
原因补充:

(最多只允许输入30个字)