JSP - 语法


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

JSP 的要素

JSP 的元素描述如下 -

小脚本

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

以下是 Scriptlet 的语法 -

<% code fragment %>

您可以编写与上述语法等效的 XML,如下所示 -

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

您编写的任何文本、HTML 标记或 JSP 元素都必须位于 scriptlet 之外。以下是 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 http://localhost:8080/hello.jsp浏览相同的内容。上面的代码将生成以下结果 -

你好世界

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

<%-- 注释 --%>

JSP 注释。被 JSP 引擎忽略。

2

<!-- 评论 -->

HTML 注释。被浏览器忽略。

3

<\%

表示静态 <% 文字。

4

%\>

表示静态 %> 文字。

5

\'

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

6

\"

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

JSP 指令

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

<%@ directive attribute="value" %>

指令标签分为三种类型 -

编号 指令和说明
1

<%@ 页 ... %>

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

2

<%@ 包括...%>

包括翻译阶段的文件。

3

<%@ 标签库 ... %>

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

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

JSP 操作

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

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

<jsp:action_name attribute="value" />

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

编号 语法和目的
1

jsp:包含

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

2

jsp:useBean

查找或实例化 JavaBean。

3

jsp:设置属性

设置 JavaBean 的属性。

4

jsp:获取属性

将 JavaBean 的属性插入到输出中。

5

jsp:转发

将请求者转发到新页面。

6

jsp:插件

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

7

jsp:元素

动态定义 XML 元素。

8

jsp:属性

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

9

jsp:正文

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

10

jsp:文本

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

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

JSP 隐式对象

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

编号 对象及描述
1

要求

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

2

回复

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

3

出去

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

4

会议

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

5

应用

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

6

配置

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

7

页面上下文

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

8

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

9

例外

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

我们将在单独的一章“JSP - 隐式对象”中解释 JSP 隐式对象。

控制流语句

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

决策声明

if ...else块开始时与普通 Scriptlet 类似,但 Scriptlet 在每一行处关闭,并在 Scriptlet 标记之间包含 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

现在看看下面的switch...case块,它使用out.println()和 Scriptletas 内部编写得有点不同-

<%! 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.

循环语句

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

让我们看一下下面的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 中

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

  • - 空