在本节中,我们将讨论JSP中的语法。了解JSP开发中涉及的简单语法(即元素)的基本用法。
JSP的元素如下所述-
1.1. 脚本
脚本是一种包含任意数量的JAVA语言语句,变量或方法声明或在页面脚本语言中有效的表达式。
以下是脚本的语法-
<% code fragment %>
可以编写与上述语法等效的XML,如下所示:
<jsp:scriptlet> code fragment </jsp:scriptlet>
编写的任何文本,HTML标记或JSP元素都必须在脚本之外。 以下是JSP的简单第一个示例(文件:firstjsp.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(xntutor.com)</title> </head> <body> Hello World!<br/> <% out.println("你的IP地址是:" + request.getRemoteAddr()); %> </body> </html>
运行上面示例代码,产生以下结果-
1.2. 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); %>
1.3. JSP表达式
JSP表达式元素包含一种脚本语言表达式,脚本语言表达式经过评估计算,转换为字符串(String),然后插入该表达式在JSP文件中出现的位置。
由于表达式的值已转换为字符串,因此可以在JSP文件的一行文本中使用表达式。
表达式元素可以包含根据Java语言规范有效的任何表达式,但是不能使用分号来结束表达式。
以下是JSP表达式的语法-
<%= expression %>
可以编写与上述语法等效的XML,如下所示:
<jsp:expression> expression </jsp:expression>
以下示例显示了JSP表达式使用-
<!-- file: nowdate.html --> <html> <head><title>JSP表达式使用</title></head> <body> <p>今天日期是: <%= (new java.util.Date()).toLocaleString()%></p> </body> </html>
1.4. JSP注释
JSP注释标记了JSP容器应忽略的文本或语句。 当您想隐藏或“注释掉” JSP页面的一部分时,就可以使用JSP注释。
以下是JSP注释的语法-
<%-- 这是被注释掉的文本或语句 --%>
下面是一个JSP注释的示例(文件:comment.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>JSP注释的示例(xntutor.com)</title> </head> <body> <h2>标题内容H2</h2> <%-- 此注释将在页面源中不可见 --%> </body> </html>
运行上面示例代码,产生以下结果-
1.5. JSP指令
JSP指令影响Servlet类的整体结构,它通常具有以下形式-
<%@ directive attribute="value" %>
指令标记有三种类型-
编号 | 指令 | 描述 |
---|---|---|
1 | <%@ page ... %> |
定义与页面有关的属性,例如脚本语言,错误页面和缓冲要求。 |
2 | <%@ include ... %> |
在转换阶段包含文件。 |
3 | <%@ taglib ... %> |
声明页面中使用的包含自定义操作的标记库。 |
1.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页面和文档中编写模板文本。 |
1.7. 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访问异常数据。 |
1.8. 决策声明
if...else
块像普通的脚本一样,但是脚本在每一行都关闭,并且在脚本标记之间包含HTML文本。
<%! int day = 2; %> <html> <head><title>IF...ELSE示例</title></head> <body> <% if (day == 1 || day == 7) { %> <p>今天是周末</p> <% } else { %> <p>今天不是周末</p> <% } %> </body> </html>
执行上面示例代码后,得到以下结果:
今天不是周末
下面来看看switch...case
块,它与使用out.println()
和内部脚本的写法有些不同 –
<%! int day = 5; %> <html> <head><title>SWITCH...CASE示例</title></head> <body> <% switch(day) { case 0: out.println("今天是星期日"); break; case 1: out.println("今天是星期一"); break; case 2: out.println("今天是星期二"); break; case 3: out.println("今天是星期三"); break; case 4: out.println("今天是星期四"); break; case 5: out.println("今天是星期五"); break; default: out.println("今天是星期六"); } %> </body> </html>
执行上面示例代码后,得到以下结果:
今天是星期五
循环语句
JSP编程中还可以使用在Java中三种基本的循环块类型:for
,while
和do…while
块。
下面来看看如何在JSP中使用这几个循环 –
<%! int times=1; %> <html> <head><title>FOR LOOP示例</title></head> <body> <%for(times=1; times <= 3; times++){ %> <%= times %>. JSP教程<br /> <%}%> </body> </html>
执行上面示例代码后,得到以下结果:
1. JSP教程 2. JSP教程 3. JSP教程
上面的示例可以使用while
循环编写,如下所示(文件:while-loop.jsp)-
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%!int times = 1;%> <!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示例(xntutor.com)</title> </head> <body> <% while (times <= 3) { %> <%=times%>. JSP教程 <br /> <% times++; %> <% } %> </body> </html>
执行上面示例代码后,得到以下结果:
剩下的
do...while
循环示例,由读者自己去完成。
1.9. JSP文字/字面量
JSP表达式语言定义以下文字-
- 布尔值 –
true
与false
。 - 整数 – 与Java中的一样。
- 浮点数 – 与Java中的一样。
- 字符串 – 单引号和双引号;
- Null –
null
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/264028.html