JSP的元素
脚本
脚本可以包含任意数量的JAVA语言语句,变量或方法声明或在页面脚本语言中有效的表达式。以下是Scriptlet的语法-
您可以编写与上述语法等效的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-9.0.34中,并且您的环境已根据环境设置教程进行了设置。让我们将以上代码保存在JSP文件hello.jsp中,然后将此文件放在C:\apache-tomcat9.0.34\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 表达式的语法-
您可以编写与上述语法等效的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: 2020-7-1 17:13:23
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>
<%-- 此注释将在页面源中不可见 --%>
</body>
</html>
尝试一下
上面的代码将产生以下结果-
您可以在各种情况下使用少量特殊结构来插入注释或字符,否则这些注释或字符将被特殊对待。这是一个摘要-
语法 |
目的 |
<%-- comment --%> |
JSP注释。 被JSP引擎忽略。 |
<!-- comment --> |
HTML注释。 被浏览器忽略。 |
<\% |
表示静态<%文字。 |
%\> |
表示静态%>文字。 |
\' |
使用单引号的属性中的单引号。 |
\" |
使用双引号的属性中的双引号。 |
JSP指令
JSP指令影响Servlet类的整体结构。它通常具有以下形式-
<%@ directive attribute="value" %>
指令标记有三种类型-
指令 |
说明 |
<%@ page ... %> |
定义与页面相关的属性,例如脚本语言,错误页面和缓冲要求。 |
<%@ include ... %> |
在翻译阶段包含文件。 |
<%@ taglib ... %> |
声明页面中使用的包含自定义操作的标记库 |
在以后的章节我们还会单独的讲解JSP指令。
JSP动作
JSP操作使用结构的XML语法来控制Servlet引擎的行为。您可以动态插入文件,重用JavaBeans组件,将用户转发到另一个页面或为Java插件生成HTML。Action元素只有一种语法,因为它符合XML标准-
<jsp:action_name attribute="value" />
动作元素基本上是预定义的功能。下表列出了可用的JSP动作-
语法 |
目的 |
jsp:include |
在请求页面时包含一个文件。 |
jsp:useBean |
查找或实例化JavaBean。 |
jsp:setProperty |
设置JavaBean的属性。 |
jsp:getProperty |
将JavaBean的属性插入输出。 |
jsp:forward |
将请求者转发到新页面。 |
jsp:plugin |
生成特定于浏览器的代码,为Java插件创建OBJECT或EMBED标签。 |
jsp:element |
动态定义XML元素。 |
jsp:attribute |
定义动态定义的XML元素的属性。 |
jsp:body |
定义动态定义的XML元素的主体。 |
jsp:text |
用于在JSP页面和文档中编写模板文本。 |
在以后的章节我们还会单独的讲解JSP动作。
JSP隐式对象
JSP支持九个自动定义的变量,这些变量也称为隐式对象。这些变量是-
对象 |
描述 |
request |
这是与请求关联的HttpServletRequest对象。 |
response |
这是与对客户端的响应相关联的HttpServletResponse对象。 |
out |
这是用于将输出发送到客户端的PrintWriter对象。 |
session |
这是与请求关联的HttpSession对象。 |
application |
这是与应用程序上下文关联的ServletContext对象。 |
config |
这是与页面关联的ServletConfig对象。 |
pageContext |
这封装了服务器特定功能的使用,例如更高性能的JspWriters。 |
page |
这只是它的同义词,用于调用已翻译的Servlet类定义的方法。 |
Exception |
Exception对象允许指定的JSP访问异常数据。 |
在以后的章节我们还会单独的讲解JSP隐式对象。
控制流语句
您可以在JSP编程中使用所有API和Java构建块,包括决策语句,循环等。
决策声明
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>
尝试一下
上面的代码将产生以下结果-
现在看下面的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>
尝试一下
上面的代码将产生以下结果-
循环语句
您还可以在Java中使用三种基本的循环块类型:JSP编程中的for,while和do…while块。 让我们看下面的循环示例-
<%! 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>
尝试一下
上面的示例可以使用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运算符
JSP支持Java支持的所有逻辑和算术运算符。下表列出了所有优先级最高的运算符出现在表格的顶部,而优先级最低的运算符出现在表格的底部。在表达式中,优先级较高的运算符将首先被计算。
类别 |
描述 |
关联 |
后缀 |
() [] .(点运算符) |
左到右 |
一元 |
++ -- ! 〜 |
右到左 |
乘性 |
* / % |
左到右 |
加减 |
+ - |
左到右 |
位移 |
>> >>> << |
左到右 |
关系型 |
> >= < <= |
左到右 |
平等 |
== != |
左到右 |
按位与 |
& |
左到右 |
按位异或 |
^ |
左到右 |
按位或 |
| |
左到右 |
逻辑与 |
&& |
左到右 |
逻辑或 |
|| |
左到右 |
三元运算 |
? : |
右到左 |
分配 |
= += -= *= /= %= >>= <<= &= ^= |= |
右到左 |
逗号 |
, |
左到右 |
JSP字面量
JSP表达式语言定义以下字面量-
- Boolean − true 和 false
- Integer −跟 Java 中一样
- Floating 跟 Java 中一样
- String − 单引号和双引号; :以\",以\'进行转义,并且\以\\进行转义。
- Null − null