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文件初始化的时候初始化一次,局部变量(程序片段)的生命周期仅限于每次的请求处理。