<%! this is a declaration %> <% this is a scriptlet %> <%= this is an expression %> <%!, <%, <%= 后的空格, %>前的空格可选;
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文件初始化的时候初始化一次,局部变量(程序片段)的生命周期仅限于每次的请求处理。