- JSP 基础教程
- JSP - 首页
- JSP - 概述
- JSP - 环境设置
- JSP - 架构
- JSP - 生命周期
- JSP - 语法
- JSP - 指令
- JSP - 动作
- JSP - 隐式对象
- JSP - 客户端请求
- JSP - 服务器响应
- JSP - HTTP 状态码
- JSP - 表单处理
- JSP - 编写过滤器
- JSP - 处理 Cookie
- JSP - 会话跟踪
- JSP - 文件上传
- JSP - 处理日期
- JSP - 页面重定向
- JSP - 访问计数器
- JSP - 自动刷新
- JSP - 发送电子邮件
- 高级 JSP 教程
- JSP - 标准标签库
- JSP - 数据库访问
- JSP - XML 数据
- JSP - JavaBean
- JSP - 自定义标签
- JSP - 表达式语言
- JSP - 异常处理
- JSP - 调试
- JSP - 安全性
- JSP - 国际化
- JSP 有用资源
- JSP - 问题与解答
- JSP - 快速指南
- JSP - 有用资源
- JSP - 讨论
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 浏览它。上述代码将生成以下结果:
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