JSP页面主要由JSP元素和HTML代码构成,其中JSP代码完成相应的动态功能。JSP基础语法包括注释、指令、脚本以及动作元素,此外,JSP还提供了一些由容器实现和管理的内置对象。本章完整介绍了JSP的基本语法,并以实例加深理解。

4.1 JSP语法概述

在JSP页面中,可分为JSP程序代码和其他程序代码两部分。JSP程序代码全部写在<%和%>之间,其他代码部分如JavaScript和HTML代码按常规方式写入。换句话说,在常规页面中插入JSP元素,即构成了JSP页面。

4.1.1 JSP工作原理

当客户端请求浏览JSP页面时,JSP服务器在把页面传递给客户端之前,先将JSP页面编译成Servlet(纯Java代码),然后由Java编译器生成的服务器小程序编译为Java字节码,最后再转换成纯HTML代码,这样客户端接收到的只是HTML代码。

JSP到Servlet的编译过程一般在第一次页面请求时进行。因此,如果希望第一个用户不会由于JSP页面编译成Servlet而等待太长的时间,希望确保Servlet已经正确地编译并装载,你可以在安装JSP页面之后自己请求一下这个页面。JSP页面工作过程如图4.1所示。



图4.1 JSP工作原理

4.1.2 JSP页面结构

JSP程序的成分主要有如下四种:注释(Comment)、指令(Directive)、脚本元素(Scripting Element)、动作(Action)。JSP指令用来从整体上控制Servlet的结构;脚本元素用来嵌入Java代码,这些Java代码将成为转换得到的Servlet的一部分;动作用来引入现有的组件或者控制JSP引擎的行为。

为了简化脚本元素,JSP定义了一组由容器实现和管理的对象(内置对象)。这些内置对象在JSP页面中可以直接使用,不需要JSP页面编写者实例化。通过存取这些内置对象,可以实现与JSP页面Servlet环境的互访。

JSP页面构成如图4.2所示.



图4.2 JSP程序构成

【例4.1】 一个简单的JSP页面。文件名为showJsp.jsp。

<!-- JSP指令 -->

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>无标题文档</title>

</head>

<body>

<!-- 下面代码为脚本元素,其中out为内置对象,直接引用即可,不需要实例化,其作用为输出字节流。 -->

<% out.println("Hello World!");%>

</body>

</html>

上述代码运行结果是输出"Hello World!"。

4.2注释

和其他的程序语言一样,JSP也同样提供注释语句。JSP注释分为HTML注释和隐藏注释两种。JSP隐藏注释语句在JSP页面执行的时候会被忽略,不会执行。并且注释语句信息不会被送到客户端的浏览器中,也就是说,用户通过查看源文件是无法看到这些注释信息的,所以称之为隐藏注释。HTML注释和JSP注释的不同之处在于HTML注释在客户端浏览器能通过查看源文件而被查看到。

4.2.1 JSP隐藏注释

JSP注释语句的语法:

<%--comment--%>

【例4.2】文件comment.jsp

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>测试JSP的注释语句</title>

</head>

<body>