JSP的元素如下所述:
脚本可以包含任意数量的JAVA语言语句、变量或方法声明或在页面脚本语言中有效的表达式。
以下是JSP脚本的语法:
<% 代码片段 %>
您可以编写与上述语法等效的XML,如下所示:
代码片段
您编写的任何文本,HTML标记或JSP元素都必须在jsp脚本之外。以下是JSP的简单第一个示例:
Hello World
Hello World!
<%
out.println("Your IP address is " + request.getRemoteAddr());
%>
声明在JSP文件中声明的一个或多个变量或方法,您可以在稍后的Java代码中使用它们。在JSP文件中使用变量或方法之前,必须先声明该变量或方法。
以下是JSP声明的语法:
<%! 声明语句; [ 声明语句; ]+ ... %>
您可以编写与上述语法等效的XML,如下所示:
代码片段
以下是JSP声明的示例:
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
JSP表达式元素包含脚本语言表达式,该脚本语言表达式经过评估,转换为String,并插入该表达式在JSP文件中出现的位置。
由于表达式的值已转换为字符串,因此可以在JSP文件的一行文本中使用表达式,无论是否用HTML标记。
表达式的元素可以包含根据Java语言规范有效的任何表达式,但是您不能使用分号结束表达式。
以下是JSP表达式的语法:
<%= JAVA规范的字符串%>
您可以编写与上述语法等效的XML,如下所示:
JAVA规范的字符串
以下示例显示了JSP表达式:
A Comment Test
<%= "Today's date:"+(new java.util.Date()).toLocaleString()+"
"%>
上面的代码将产生以下结果:
Today's date: 31-Jan-2020 16:24:25
JSP注释标记了JSP容器应忽略的文本或语句。当您想隐藏或“注释掉” JSP页面的一部分时,JSP注释非常有用。
以下是JSP注释的语法:
<%-- JSP注释 --%>
以下示例显示了JSP注释:
A Comment Test
注释的文本:
<%-- 我是注释,你看不到我 --%>
上面的代码将产生以下结果:
注释的文本:
您可以在各种情况下使用少量特殊结构来插入注释或字符,否则这些注释或字符将被特殊对待。
序号 | 语法和目的 |
---|---|
1 | <%-- JSP注释。被JSP引擎忽略。 --%> |
2 |
|
3 | //单行Java代码注释,可以写在jsp脚本中。 |
4 | /*多行Java代码注释,可以写在jsp脚本中。*/ |
5 | “ <\% ”写在jsp脚本中表示静态的“<%”文本。 |
6 | “ %\> ”写在jsp脚本中表示静态的“%>”文本。 |
7 | “ \' ”写在jsp脚本中表示单引号。 |
8 | “ \" ”写在jsp脚本中表示双引号。 |
另外,一个JSP文件,除了HTML注释,只要JSP文件经过浏览器的HTTP请求被servlet引擎编译成可执行文件形成HTML展示在浏览器之后,直接在该浏览器上查看源码是看不到其他注释的。
JSP指令会影响Servlet类的整体结构。它通常具有以下形式:
<%@ directive attribute="value" %>
指令标记有三种类型:
序号 | 指令与说明 |
---|---|
1 | <%@ page ... %>:定义与页面相关的属性,例如脚本语言,错误页面和缓冲要求。 |
2 | <%@ include ... %>:在翻译阶段包含文件。 |
3 | <%@ taglib ... %>:声明页面中使用的包含自定义操作的标记库 |
后续会单独讲JSP指令,点我查看
JSP Actions使用XML语法的结构来控制Servlet引擎的行为。您可以动态插入文件,重(chong)用JavaBeans组件,将用户转发到另一个页面或为Java插件生成HTML。
Action元素只有一种语法,因为它符合XML标准-
动作元素基本上是预定义的功能。下表列出了可用的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 Actions
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编程中使用所有API和Java构建块,包括选择,循环等。
if…else语句块开始时像一个普通的Scriptlet,但Scriptlet在每一行HTML文本和Scriptlet标记之间的关闭:
<%! int day = 3; %>
IF...ELSE Example
<% if (day == 1 || day == 7) { %>
Today is weekend
<% } else { %>
Today is not weekend
<% } %>
上面的代码将产生以下结果-
Today is not weekend
现在看下面的switch … case语句块的例子:
<%! int day = 3; %>
SWITCH...CASE Example
<%
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:
%>
It's Wednesday.
<%
break;
case 4:
out.println("It\'s Thursday.");
break;
case 5:
out.println("It\'s Friday.");
break;
default:
%>
It's Saturday.
<%
}
%>
上面的代码将产生以下结果:
It's Wednesday.
您还可以在Java中使用三种基本的循环块类型:JSP编程中的for,while和do…while块。
让我们看下面的循环示例:
<%! int fontSize; %>
FOR LOOP Example
<%for ( fontSize = 1; fontSize <= 3; fontSize++){ %>
JSP Tutorial
<%}%>
上面的代码将产生以下结果:
上面的示例可以使用while循环编写,如下所示:
<%! int fontSize; %>
WHILE LOOP Example
<%while ( fontSize <= 3){ %>
JSP Tutorial
<%fontSize++;%>
<%}%>
JSP支持Java支持的所有逻辑和算术运算符。下表列出了优先级最高的所有运算符出现在表格的顶部,优先级最低的运算符出现在表格的底部。
在表达式中,优先级更高的运算符将首先被评估。
类别 | 操作员 | 关联性 |
---|---|---|
后缀 | () [] . (点运算符) | 左到右 |
一元 | ++ - - ! ~ | 右到左 |
乘性 | * / % | 左到右 |
添加剂 | + - | 左到右 |
转移 | >> >>> << | 左到右 |
关系型 | > >= < <= | 左到右 |
平等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | |
左到右 |
逻辑与 | && | 左到右 |
逻辑或 | || |
左到右 |
条件运算 | ?: | 右到左 |
分配 | = += -= *= /= %= >>= <<= &= ^= | = |
逗号 | , | 左到右 |