JSP - 语法



在本章中,我们将讨论 JSP 中的语法。我们将了解与 JSP 开发相关的基本简单语法(即元素)的使用。

JSP 元素

JSP 元素描述如下:

脚本片段

脚本片段可以包含任意数量的 JAVA 语言语句、变量或方法声明,或在页面脚本语言中有效的表达式。

以下是脚本片段的语法:

<% code fragment %>

您可以将上述语法的 XML 等效形式编写如下:

<jsp:scriptlet>
   code fragment
</jsp:scriptlet>

您编写的任何文本、HTML 标签或 JSP 元素都必须位于脚本片段之外。以下是 JSP 的简单且第一个示例:

<html>
   <head><title>Hello World</title></head>
   
   <body>
      Hello World!<br/>
      <%
         out.println("Your IP address is " + request.getRemoteAddr());
      %>
   </body>
</html>

注意 - 假设 Apache Tomcat 安装在 C:\apache-tomcat-7.0.2 中,并且您的环境已根据环境设置教程进行设置。

让我们将上述代码保存在 JSP 文件 hello.jsp 中,并将此文件放在 C:\apache-tomcat7.0.2\webapps\ROOT 目录中。使用 URL https://127.0.0.1:8080/hello.jsp 浏览它。上述代码将生成以下结果:

Hello World

JSP 声明

声明声明一个或多个变量或方法,您可以在 JSP 文件中稍后在 Java 代码中使用这些变量或方法。您必须在 JSP 文件中使用变量或方法之前声明它。

以下是 JSP 声明的语法:

<%! declaration; [ declaration; ]+ ... %>

您可以将上述语法的 XML 等效形式编写如下:

<jsp:declaration>
   code fragment
</jsp:declaration>

以下是 JSP 声明的示例:

<%! int i = 0; %> 
<%! int a, b, c; %> 
<%! Circle a = new Circle(2.0); %> 

JSP 表达式

JSP 表达式元素包含一个被评估、转换为字符串并在 JSP 文件中表达式出现的位置插入的脚本语言表达式。

由于表达式的值被转换为字符串,因此您可以在一行文本中使用表达式,无论它是否在 JSP 文件中用 HTML 标记。

表达式元素可以包含根据 Java 语言规范有效的任何表达式,但您不能使用分号来结束表达式。

以下是 JSP 表达式的语法:

<%= expression %>

您可以将上述语法的 XML 等效形式编写如下:

<jsp:expression>
   expression
</jsp:expression>

以下示例显示了一个 JSP 表达式:

<html> 
   <head><title>A Comment Test</title></head> 
   
   <body>
      <p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>
   </body> 
</html> 

上述代码将生成以下结果:

Today's date: 11-Sep-2010 21:24:25

JSP 注释

JSP 注释标记 JSP 容器应忽略的文本或语句。当您想要隐藏或“注释掉”JSP 页面的某一部分时,JSP 注释很有用。

以下是 JSP 注释的语法:

<%-- This is JSP comment --%>

以下示例显示了 JSP 注释:

<html> 
   <head><title>A Comment Test</title></head> 
   
   <body> 
      <h2>A Test of Comments</h2> 
      <%-- This comment will not be visible in the page source --%> 
   </body> 
</html> 

上述代码将生成以下结果:

A Test of Comments

在各种情况下,您可以使用少量特殊结构来插入注释或字符,否则这些注释或字符将被特殊处理。以下是摘要:

序号 语法和用途
1

<%-- comment --%>

JSP 注释。JSP 引擎忽略。

2

<!-- comment -->

HTML 注释。浏览器忽略。

3

<\%

表示静态 <% 文字。

4

%\>

表示静态 %> 文字。

5

\'

使用单引号的属性中的单引号。

6

\"

使用双引号的属性中的双引号。

JSP 指令

JSP 指令影响 servlet 类的整体结构。它通常具有以下形式:

<%@ directive attribute="value" %>

指令标签有三种类型:

序号 指令和描述
1

<%@ page ... %>

定义页面相关的属性,例如脚本语言、错误页面和缓冲要求。

2

<%@ include ... %>

在翻译阶段包含一个文件。

3

<%@ taglib ... %>

声明一个标签库,其中包含在页面中使用的自定义操作

我们将在单独的章节中解释 JSP 指令 JSP - 指令

JSP 动作

JSP 动作使用 XML 语法中的构造来控制 servlet 引擎的行为。您可以动态插入文件、重用 JavaBean 组件、将用户转发到另一个页面或为 Java 插件生成 HTML。

Action 元素只有一个语法,因为它符合 XML 标准:

<jsp:action_name attribute="value" />

Action 元素基本上是预定义的函数。下表列出了可用的 JSP 动作:

序号 语法和用途
1

jsp:include

在请求页面时包含一个文件。

2

jsp:useBean

查找或实例化一个 JavaBean。

3

jsp:setProperty

设置 JavaBean 的属性。

4

jsp:getProperty

将 JavaBean 的属性插入输出。

5

jsp:forward

将请求者转发到新页面。

6

jsp:plugin

生成特定于浏览器的代码,为 Java 插件创建 OBJECT 或 EMBED 标签。

7

jsp:element

动态定义 XML 元素。

8

jsp:attribute

定义动态定义的 XML 元素的属性。

9

jsp:body

定义动态定义的 XML 元素的主体。

10

jsp:text

用于在 JSP 页面和文档中编写模板文本。

我们将在单独的章节中解释 JSP 动作 JSP - 动作

JSP 隐式对象

JSP 支持九个自动定义的变量,也称为隐式对象。这些变量是:

序号 对象和描述
1

request

这是与请求关联的 HttpServletRequest 对象。

2

response

这是与对客户端的响应关联的 HttpServletResponse 对象。

3

out

这是用于向客户端发送输出的 PrintWriter 对象。

4

session

这是与请求关联的 HttpSession 对象。

5

application

这是与应用程序上下文关联的 ServletContext 对象。

6

config

这是与页面关联的 ServletConfig 对象。

7

pageContext

这封装了服务器特定功能的使用,例如更高性能的 JspWriters

8

page

这只是 this 的同义词,用于调用已翻译的 servlet 类定义的方法。

9

Exception

Exception 对象允许指定 JSP 访问异常数据。

我们将在单独的章节中解释 JSP 隐式对象 JSP - 隐式对象

控制流语句

您可以在 JSP 编程中使用 Java 的所有 API 和构建块,包括决策语句、循环等。

决策语句

if...else 块的开始方式类似于普通的脚本片段,但脚本片段在每一行都用包含在脚本片段标签之间的 HTML 文本关闭。

<%! int day = 3; %> 
<html> 
   <head><title>IF...ELSE Example</title></head> 
   
   <body>
      <% if (day == 1 || day == 7) { %>
         <p> Today is weekend</p>
      <% } else { %>
         <p> Today is not weekend</p>
      <% } %>
   </body> 
</html> 

上述代码将生成以下结果:

Today is not weekend

现在看看以下使用 out.println() 和在脚本片段内编写的略有不同的 switch...case 块:

<%! int day = 3; %> 
<html> 
   <head><title>SWITCH...CASE Example</title></head> 
   
   <body>
      <% 
         switch(day) {
            case 0:
               out.println("It\'s Sunday.");
               break;
            case 1:
               out.println("It\'s Monday.");
               break;
            case 2:
               out.println("It\'s Tuesday.");
               break;
            case 3:
               out.println("It\'s Wednesday.");
               break;
            case 4:
               out.println("It\'s Thursday.");
               break;
            case 5:
               out.println("It\'s Friday.");
               break;
            default:
               out.println("It's Saturday.");
         }
      %>
   </body> 
</html> 

上述代码将生成以下结果:

It's Wednesday.

循环语句

您还可以在 Java 中使用三种基本类型的循环块:for、while 和 do…while 块在您的 JSP 编程中。

让我们看看以下 for 循环示例:

<%! int fontSize; %> 
<html> 
   <head><title>FOR LOOP Example</title></head> 
   
   <body>
      <%for ( fontSize = 1; fontSize <= 3; fontSize++){ %>
         <font color = "green" size = "<%= fontSize %>">
            JSP Tutorial
      </font><br />
      <%}%>
   </body> 
</html> 

上述代码将生成以下结果:


   JSP Tutorial

JSP Tutorial
JSP Tutorial

以上示例可以使用 while 循环编写如下:

<%! int fontSize; %> 
<html> 
   <head><title>WHILE LOOP Example</title></head> 
   
   <body>
      <%while ( fontSize <= 3){ %>
         <font color = "green" size = "<%= fontSize %>">
            JSP Tutorial
         </font><br />
         <%fontSize++;%>
      <%}%>
   </body> 
</html> 

上述代码将生成以下结果:


   JSP Tutorial



   JSP Tutorial



   JSP Tutorial

JSP 运算符

JSP 支持 Java 支持的所有逻辑和算术运算符。下表列出了所有运算符,其中优先级最高的运算符位于表顶部,优先级最低的运算符位于底部。

在一个表达式中,优先级较高的运算符将首先被评估。

类别 运算符 结合性
后缀 () [] . (点运算符) 从左到右
一元 ++ - - ! ~ 从右到左
乘法 * / % 从左到右
加法 + - 从左到右
移位 >> >>> << 从左到右
关系 > >= < <= 从左到右
相等 == != 从左到右
按位与 & 从左到右
按位异或 ^ 从左到右
按位或 | 从左到右
逻辑与 && 从左到右
逻辑或 || 从左到右
条件 ?: 从右到左
赋值 = += -= *= /= %= >>= <<= &= ^= |= 从右到左
逗号 , 从左到右

JSP 字面量

JSP 表达式语言定义以下字面量:

  • 布尔值 - true 和 false

  • 整数 - 如 Java 中所示

  • 浮点数 - 如 Java 中所示

  • 字符串 - 使用单引号和双引号;" 被转义为 \,' 被转义为 \,\ 被转义为 \\。

  • - null

广告