Scripting Elements
- 声明(declarations)——
- 程序片段(scriptlet)——
- 表达式(expression)——
<%! this is a declaration %>
<% this is a scriptlet %>
<%= this is an expression %>
<%!, <%, <%= 后的空格, %>前的空格可选;
JSP声明
JSP声明用于声明与JSP对应的Servlet类的成员变量和方法。声明必须为对应语言的一个完整的声明表达式。
声明不会在response中产生任何的输出。
声明在JSP页面初始化的时候进行初始化;声明对于其他声明,程序片段和表达式是可见(available)的。
语法:
<%! declaration;[declaration;] ... ... %>
例如:
<%! int v1 = 0; %>
<%! int v2, v3, v4; %>
<%! String v5 = "hello";
static int v6; %>
<%! public String amethod(int i){
int (i < 3){
return "i < 3";
}else{
return "i >= 3";
}
}
%>
每个JSP声明只在当前JSP文件中有效,如果希望在多个JSP文件中都包含这些声明,可以把这些声明语句写到一个单独的JSP文件中,然后在其他JSP文件中include指令把这个JSP文件包含进来。
程序片段
在JSP文件中,可以在“<%”和“%>”标记之间直接嵌入任何有效的Java程序代码,这种嵌入的程序片段成为Scriptlet。
这些程序片段默认为与JSP对应的Servlet类的service()方法中的代码;
程序片段将会在处理请求的时候被执行。
语法:
<% scriptlet %>
例如:example.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 Example</title>
</head>
<body>
<%
String result = "Y";
if (result.equals("Y")){
%>
The result is true;
<% }else{ %>
The result is false;
<% } %>
<br/>
<%
int a = 0;
while (a < 3){
%>
a = <%=a %> <br/>
<% a++;
}
%>
</body>
</html>
访问上面的JSP文件,浏览器显示如下:
表达式
如果在JSP文件的模板文本中使用该标记,那么它能把表达式的值输出到网页上;表达式中的类型的值都自动转换成字符串再进行输出。
语法:
<%= expression %>
i.e.
<%= (new java.util.Date()).toLocaleString() %>
JSP表达式除了可以直接插入到模板文件中,也可以作为某些JSP标签的属性的值:
<jsp:setProperty name="myPageBean" property="count"
value="<%=myPageBean.getCount + 1%>" />
总结
示例:example.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 Example</title>
</head>
<body>
You hit the page:
<br/>
<%! int hitcount=1; %>
<%
int count = 0;
hitcount++;
count++;
%>
hitcount = <%= hitcount %> times
<br/>
count = <%= count %> times
<br/>
</body>
</html>
在浏览器中多次访问上面的JSP文件,显示结果为:
在上面的JSP文件中, hitcount为类的成员变量,count为局部变量;成员变量(声明)只在JSP文件初始化的时候初始化一次,局部变量(程序片段)的生命周期仅限于每次的请求处理。