在本章中,我们将了解和学习jsp语法。并了解jsp开发涉及的简单语法(即元素)的基本用法。
为了方便演示,使用eclipse创建一个动态web项目:jspsyntax,用于运行以下涉及到的示例代码。
jsp的元素
jsp的元素如下所述:
1.小脚本小脚本(scriptlet)可以将任何数量的小脚本包含在页面中,小脚本是有效的java语言语句,变量或方法声明或表达式。
以下是小脚本的语法 -
<% code fragment %>
可以将上述语法编写为xml的形式,效果相同,如下所示:
<jsp:scriptlet> code fragment </jsp:scriptlet>
编写的任何文本,html标签或jsp元素必须在scriptlet之外。 以下是jsp的简单和第一个例子 -
文件:helloworld.jsp -
<%@ page language="java" contenttype="text/html; charset=utf-8"
pageencoding="utf-8"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>hello world</title>
</head>
<body>
hello world!
<br />
<%
out.println("your ip address is " + request.getremoteaddr());
%>
</body>
</html> 执行上面示例代码,得到以下结果 -
2.jsp声明声明一个或多个变量或方法,可以在java代码中编写,之后在jsp文件中使用。 在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); %>3.jsp表达式
jsp表达式元素包含一个脚本语言表达式,它被评估求值,转换为一个字符串,并插入到表达式显示在jsp文件中的指定输出位置。
因为表达式的值被转换为字符串,所以可以在jsp文件中使用文本行内的表达式,无论是否使用html标记html。
表达式元素可以包含根据java语言规范有效的任何表达式,但不能使用分号来结束表达式。
以下是jsp表达式的语法 -
<%= expression %>
可以将上述语法编写为xml的形式,效果相同,如下所示:
<jsp:expression> expression </jsp:expression>
以下示例显示了jsp表达式 -
文件:express.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-2017 21:24:254.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指令影响servlet类的整体结构。它通常具有以下形式 -
<%@ directive attribute="value" %>
有三种类型的指令标签 -
| 1 | <%@ page ... %> | 定义页面相关属性,如脚本语言,错误页面和缓冲要求等。 |
| 2 | <%@ include ... %> | 在编译阶段包括文件。 |
| 3 | <%@ taglib ... %> | 声明页面中使用包含自定义操作的标签库 |
我们将在另一章专门介绍jsp指令 - jsp指令
6.jsp动作jsp动作使用xml语法中的结构来控制servlet引擎的行为。可以动态插入文件,重新使用javabeans组件,将用户转发到另一个页面,或为java插件生成html。
只有一个用于动作元素语法,因为它符合xml标准 -
<jsp:action_name attribute="value" />
动作元素基本上是预定义的功能,下表列出了可用的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动作
7.jsp隐式对象jsp支持九个自动定义的变量,也称为隐式对象。这些变量是 -
| 1 | request | 这是与请求相关联的httpservletrequest对象。 |
| 2 | response | 这是与客户端的响应关联的httpservletresponse对象。 |
| 3 | out | 这是用于将输出发送到客户端的printwriter对象。 |
| 4 | session | 这是与请求相关联的httpsession对象。 |
| 5 | application | 这是与应用程序上下文相关联的servletcontext对象。 |
| 6 | config | 这是与该页面相关联的servletconfig对象。 |
| 7 | pagecontext | 它封装了使用服务器特定的功能,如更高性能的jspwriter对象。 |
| 8 | page | 这只是一个同义词,用于调用由编译的servlet类定义的方法。 |
| 9 | exception | 异常对象允许指定的jsp访问异常数据。 |
我们将在单独的章节讲解jsp隐式对象 - jsp隐式对象。
8.控制流程语句在jsp编程中使用java的所有api和构建块,包括决策语句,循环等。如:if,if..else等语句。
9.决策语句if...else块开始像一个普通的小脚本,但是小脚本在每一行都会被闭合,并且包含小脚本标签在html文本中。参考以下示例代码 -
文件:ifelse.jsp -
<%@ page language="java" contenttype="text/html; charset=utf-8"
pageencoding="utf-8"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>if...else示例</title>
</head>
<body>
<%!int day = 3;%>
<%
if (day == 1 | day == 7) {
%>
<p>今天是周末,不用上班,oyes ~</p>
<%
} else {
%>
<p>今天是工作日,乖乖去上班 ~</p>
<%
}
%>
</body>
</html> 上述代码将产生以下结果 -
现在看看下面的switch...case块,对于不同选项匹配使用out.println()输出不同结果 -
<%! 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 saturday.10.循环语句
在java中使用三种基本类型的循环块:for, while 以及 do…while均可在jsp编程中使用。
下面来看看for循环语句的示例 -
<%@ page language="java" contenttype="text/html; charset=utf-8"
pageencoding="utf-8"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>for循环语句示例</title>
</head>
<body>
<%!int fontsize;%>
<%
for (fontsize = 1; fontsize <= 5; fontsize++) {
%>
<font color="green" size="<%=fontsize%>"> jsp教程 </font>
<br />
<%
}
%>
</body>
</html> 上述代码将产生以下结果 -
以上示例可以使用while循环编写,代码如下:
<%@ page language="java" contenttype="text/html; charset=utf-8"
pageencoding="utf-8"%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en" "http://www.w3.org/tr/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>while循环语句示例</title>
</head>
<body>
<%!int fontsize;%>
<%
while (fontsize <= 5) {
%>
<font color="green" size="<%=fontsize%>"> jsp教程 </font>
<br />
<%
fontsize++;
%>
<%
}
%>
</body>
</html> 上述代码将产生以下结果 -
11.jsp运算符jsp支持java支持的所有逻辑和算术运算符。下表列出了所有具有最高优先级的运算符放在表格的顶部,优先级较低的运算符放在底部。
在一个表达式中,将首先评估计算较高优先级的运算符。
| 后缀 | () [] . | 左到右 |
| 一元运算符 | ++ -- ! ~ | 右到左 |
| 乘法 | * / % | 左到右 |
| 加法 | + - | |
| 位移 | >> >>> << | 左到右 |
| 关系 | > >= < <= | 左到右 |
| 等于 | == != | 左到右 |
| 按位与 | & | 左到右 |
| 按位异或 | ^ | 左到右 |
| 按位或 | 左到右 | |
| 逻辑与 | && | |
| 逻辑或 | 左到右 | |
| 条件 | ?: | 右到左 |
| 分配 | = += -= *= /= %= >>= <<= &= ^= | 右到左 |
| 逗号 | , | 左到右 |
jsp表达式语言定义了以下文字 -
- 布尔 - true和false
- 整数 - 与java中的一样。
- 浮点 - 与java中的一样。
- 字符串 - 带单引号和双引号; "被转义为",'被转义为',被转义为。
- 空 - null
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!