1.7jsp页面的基本结构在传统的html页面文件中加入java程
* 1.7 JSP页面的基本结构 在传统的HTML页面文件中加入java程序片和JSP标签就构成了一个JSP页面文件。一个JSP页面可由5种元素组合而成: (1)普通的HTML标记符。 (2)JSP标签:如,指令标签、动作标签。 (3)变量和方法的声明。 (4)Java 程序片。 (5)Java 表达式。 我们称(3)、(4)、(5)形成的部分为JSP的脚本部分。
您是第 个访问本站的客户。 观察以下代码,分析各个部分: 当服务器上的一个jsp页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个java文件,再将这个java文件编译生成字节码文件,然后通过执行字节码文件响应客户的请求。这个字节码文件的任务就是: 把JSP页面中普通的HTML标记符号,交给客户的浏览器执行显示。 JSP标签、数据和方法声明、Java程序片由服务器负责执行,将需要显示的结果发送给客户的浏览器。 Java 表达式由服务器负责计算,并将结果转化为字符串,然后交给客户的浏览器负责显示。 1.8 变量和方法的声明 在“”标记符号之间声明变量和方法。 1.8.1 声明变量 在“”标记符之间声明变量,即在“”之间放置Java的变量声明语句,变量的类型可以是Java 语言允许的任何数据类型,我们将这些变量称为JSP页面的成员变量。如, “”之间声明的变量在整个JSP页面内都有效,因为JSP引擎将JSP页面转译成Java 文件时,将这些变量作为类的成员变量。这些变量的内存空间直到服务器关闭才释放。当多个客户请求一个JSP页面时,JSP引擎为每个客户启动一个线程,这些线程由JSP引擎服务器来管理,这些线程共享JSP页面的成员变量,因此任何一个用户对JSP页面成员变量操作的结果,都会影响到其他用户。 下面的例子3利用成员变量被所有用户共享这一性质,实现了一个简单的计数器 例子3 Example1_3.jsp:
您是第 个访问本站的客户。 在处理多线程问题时,我们必须注意这样一个问题:当两个或多个线程同时访问同一个共享的变量,并且一个线程需要修改这个变量时,我们应对这样的问题作出处理,否则可能发生混乱。在上面的例子3中,可能发生两个客户同时请求Example1_3.jsp页面。在Java语言中我们已经知道,在处理线程同步时,可以将线程共享的变量放入一个synchronized块,或将修改该变量的方法用synchronized来修饰。这样,当一个客户用synchronized块或synchronized方法操作一个共享变量时,其它线程就必须等待,直到该线程执行完该方法或同步块。下面的例子4对例子3进行了改进。 例子4 Example1_4.jsp:
您是第 个访问本站的客户。 1.8.2 声明方法 在“”之间声明方法,该方法在整个JSP页面有效,但是该方法内定义的变量只在该方法内有效。这些方法将在Java程序片中被调用,当方法被调用时,方法内定义的变量被分配内存,调用完