JSP语法

以下内容引用自http://wiki.jikexueyuan.com/project/jsp/syntax.html

一、Scriptlet

Scriptlet可以包含任意数量的JAVA语言语句,变量或方法声明,或者在页面的脚本语言中有效的表达式。

下面是Scriptlet 的语法:

<% code fragment %>

可以编写相当于上述语法的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-7.0.2中。

把上面的代码写入JSP文件中的hello.jsp中,并把这个文件放在C:\apache-tomcat-7.0.2\webapps\ROOT中,并试图通 http://localhost:8080/hello.jsp浏览它。这将产生以下结果:

二、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> 

四、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> 

在一些情况下,有少量的特殊结构可以用来插入注释或字符,否则会被特殊对待。这里有一个总结:

语法目的
<%-- comment --%> JSP注释。JSP引擎会忽略。
<!-- comment --> HTML注释。浏览器会忽略。
<\% 代表静态,相当于转义字符
%\> 代表静态,相当于转义字符
\' 单引号属性,使用单引号。
\" 双引号属性,使用双引号。

五、JSP指令

JSP指令影响Servlet类的总体结构。它通常具有以下形式:

<%@ directive attribute="value" %>

有三种指令标签:

指令描述
<%@ page ... %> 定义page-dependent属性,比如脚本语言,错误页面和缓冲要求。
<%@ include ... %> 包括转换阶段的一个文件。
<%@ taglib ... %> 声明一个在页面中使用的标签库,包含自定义操作。

六、JSP操作

JSP操作使用XML语法结构来控制Servlet引擎的行为。可以动态地插入一个文件,重用JavaBean组件,将用户转到另一个页面,或为Java插件生成HTML。

操作元素只有一个语法,因为它符合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 定义了动态定义XM L元素的body
jsp:text 用于在JSP页面和文档中编写模板

七、JSP隐式对象

JSP支持9个自动定义的变量,这也称为隐式对象。这些变量是:

对象描述
request 这是与请求关联的HttpServletRequest对象。
response 这是与客户端响应关联的HttpServletResponse对象。
out 这是用于向客户端发送输出的PrintWriter对象。
session 这是与请求关联的HttpSession对象。
application 这是与应用程序上下文关联的ServletContext对象。
config 这是与页面关联的ServletConfig对象。
pageContext 这个封装特使用特定服务器的特性,如更高的性能jspwriter。
page 这是this的一个简单的同义词,是用来调用由转换的servlet类定义的方法。
Exception Exception对象允许指定的JSP访问异常数据。

八、控制流语句

JSP提供了强有力的Java工具来嵌入到Web应用程序中。可以在JSP编程中使用所有的API和Jave构建块,包括决策语句、循环等。

九、决策的语句

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> 
//这将产生如下所示的结果:
Today is not weekend

现在看看下面的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> 
//这将产生如下所示的结果:
It's Wednesday.

十、循环语句

还可以在Java中使用循环块的三种基本类型来实现JSP编程:for,while,和 do…while

看看下面的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支持的逻辑和算术运算符。下表列出了所有运算符的优先级,从上到下,优先级依次降低。

在一个表达式,优先级越高的运算符会越先计算。

类型 运算符 结合性 
后缀运算符  () [] . (dot operator) 从左到右 
一目运算符  ++ - - ! ~ 从右到左 
倍数运算符  * / %  从左到右 
加法运算符  + -  从左到右 
位移运算符   >> >>> <<   从左到右 
代数运算符  > >= < <=   从左到右 
赋值运算符   == !=  从左到右 
按位与运算符  从左到右 
按位异或运算符  从左到右 
按位或运算符  从左到右  
逻辑与运算符  &&  从左到右 
逻辑或运算符  ||  从左到右 
条件运算符  ?:  从右到左 
赋值运算符  = += -= *= /= %= >>= <<= &= ^= |=  从右到左 
逗号运算符  从左到右  

十二、JSP文字

JSP表达式语言定义了以下文字:

  • Boolean: true and false

  • Integer: 与Java相同

  • Floating point: 与Java相同

  • String: 带有单引号和双引号;’’转义为\’’,’转义为\’,\转义为\。

  • Null: null

 

测试工程:https://github.com/easonjim/5_java_example/tree/master/jspbasics/test1/

posted @ 2017-06-05 04:53  EasonJim  阅读(338)  评论(0编辑  收藏  举报