①概要

在JSP页面中,脚本标识使用得最为频繁。因为它们能够很方便、灵活地生成页面中的动态内容,特别是Scriptlet脚本程序。

JSP中的脚本标识包括以下三种元素:声明识(Declaration)、JSP表达式(Expression)和脚本程序(Scriptlet)。

    通过这些元素,就可以在JSP页面中像编写Java程序一样来声明变量、定义函数或进行各种表达式的运算。在JSP页面中需要通过特殊的约定来表示这些元素,并且对于客户端这些元素是不可见的,它们由服务器执行。


>表达式      <%=  %>


>声明标识  <%! %>


>脚本程序  <%    %>


②JSP表达式

表达式用于向页面中输出信息,其使用格式为:
    <%= 变量或可以返回值的方法或Java表达式 %>
特别要注意,“<%”与“=”之间不要有空格。
JSP表达式在页面被转换为Servlet后,转换为了out.print()方法。所以JSP表达式与JSP页面中嵌入到小脚本程序中的out.print()方法实现的功能相同。如果通过JSP表达式输出一个对象,则该对象的toString()方法会被自动调用,表达式将输出toString()方法返回的内容。
JSP表达式可以应用到以下几种情况。
        (1)向页面输出内容,例如下面的代码:
                        <% String name="www.xxx.com"; %>
                        用户名:<%=name%>
        (2)生成动态的链接地址,例如下面的代码:
                        <% String path="welcome.jsp"; %>
                        <a href="<%=path%>">链接到welcom.jsp</a>
        (3)动态指定Form表单处理页面,例如下面的代码:
                        <% String name="logon.jsp"; %>
                        <form action="<%=name%>"></form>
        (4)为通过循环语句生成的元素命名,例如下面的代码:
                        <% for(int i=1;i<3;i++){ %> 
                               file<%=i%>:<input type="text" name="<%="file"+i%>"><br>
                        <% } %>

③声明表达式

在JSP页面中可以声明变量或方法,其声明格式为:
<%! 声明变量或方法的代码 %>

在页面中通过声明标识声明的变量和方法,在整个页面内都有效,它们将成为JSP页面被转换为Java类后类中的属性和方法。并且它们会被多个线程即多个用户共享。也就是说,其中的任何一个线程对声明的变量或方法的修改都会改变它们原来的状态。它们的生命周期从创建到服务器关闭后结束。下面将通过一个具体实例来介绍声明标识的应用。

<%@ page contentType="text/html;charset=UTF-8" %>
<%!
    int num=0;                       //声明一个计数变量
    synchronized void add(){     //该方法实现访问次数的累加操作
       num++;
    }
%>
<% add(); %>                       <%-- 该脚本程序调用实现访问次数累加的方法 --%>
<html>
       <body>

            <center>您是第<%=num%>位访问该页的游客!</center>

       </body>
</html>

④脚本程序

脚本程序是在JSP页面中使用“<%”与“%>”标记起来的一段Java代码。在脚本程序中可以定义变量、调用方法和进行各种表达式运算,且每行语句后面要加入分号。在脚本程序中定义的变量在当前的整个页面内都有效,但不会被其他的线程共享,当前用户对该变量的操作不会影响到其他的用户。当变量所在的页面关闭后就会被销毁。
脚本程序使用格式如下:
<% Java程序片段 %>

<%@ page contentType="text/html;charset=gb2312"%>
<% int able=1; %>
<html>
   <body>
      <table>
            <% if(able==1){ %>
                   <tr><td>欢迎登录!您的身份为“普通管理员”。</td></tr>
               <% }
                   else if(able==2){
               %>
               <tr><td>欢迎登录!您的身份为“系统管理员”。</td></tr>
          <% } %>
      </table>
    </body>
</html>