主要参考:《JSP 基础教程》耿祥义编著,清华大学出版社。
不举例子,纯粹是回顾式学习。
一JSP 页面的基本结构
1、普通的HTML标记符。
2、JSP标签,如指令标签、动作标签。
3、变量和方法的声明。
4、Java 程序片。
5、Java 表达式。
当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转义成一个Java文件,再将这个Java文件编译生成字节码文件,然后通过字节码文件响应客户端的请求。这个字节码文件的任务就是:
1、把JSP页面中普通的HTML标记符号交给客户端浏览器执行显示。
2、JSP标签。数据和方法声明、Java程序片由服务器负责执行,将需要显示的结果发送给客户端的浏览器。
3、Java表达式由服务器负责计算,并将结果转化为字符串,然后交给客户端的浏览器负责显示。
1.1变量和方法的声明
1、声明变量
在“<%! %>”标记符之间声明变量,即在“<%! %>”之间放置Java变量声明语句。变量的类型可以是Java语言允许的任何数据类型。我们将这些变量称为JSP页面的成员变量。
这些变量在整个JSP页面内都有效。JSP引擎会将JSP页面转义成Java文件是,将这些变量作为类的成员变量,这些变量的内存空间知道服务器关闭才会被释放。当多个客户请求一个JSP页面是,JSP引擎为每一个客户启动一个线程,这些线程由JSP引擎服务器来管理。这些线程共享JSP页面的成员变量,因此任何一个用户对JSP页面成员变量操作的结果,都会影响的其他用户。
2、声明方法
在“<%! %>”之间声明发发,该方法在整个JSP页面有效,但是该方法内定义的变量只在该方法内有效。注意通过synchnorized修饰方法。
3、声明类
1.2 Java 程序片
在“<% %>”之间插入Java程序片,顺序执行,局部变量。当程序片被调用执行时,这些变量被分配内存空间,当所有的程序片调用完毕,这些变量即可释放所占的内存。
当多个客户请求一个JSP页面时,JSP引擎为每个客户启动一个线程,一个客户的局部变量和另一个客户的局部变量被分配不同的内存空间。因此,一个客户对JSP页面局部变量操作的结果,不会影响到其他客户端的这个局部变量。
1.3表达式
可以在“<%= %>”之间插入一个表达式,不可以插入语句,这个表达式必须能够求值!表达式的值由服务器负责计算,并将结算结果以字符串的形式发送到客户端显示。
二JSP指令标签
2.1 page指令
page指令用来定义这个JSP页面的一些属性和这些属性的值。如:
<%@ pagecontentType=”text/html;charset=GB2312” %>
page指令格式:
<%@ page 属性1=”值1” 属性2=”值2” 。。。>
<%@ page import=”java.util.*” , “java.io.*”, “java.awt.*” %>
<%@ page contentType=”text/html;charset=GB2312”%>
<%@ page import=”java.util.*” %>
<%@ page import=”java.io.* %>”
仅有import属性可以使用多个page指令指定。
Page 指令对整个页面有效,与其书写的位置无关,但是习惯上还是把page指令写在JSP页面的最前面。
1、language属性:指定脚本运行语言
<%@ page language=”java” %>
2、import属性为:JSP页面引入Java核心包中的类。
默认包含如下:
Java.lang.*、javax.servlet.*、javax.servlet.jsp
3、contentType属性: 定义了JSP页面响应的MIME类型和JSP页面字符的编码。
如:
<%@ page contentType=”text/html:charset=GB2312” %>
4、session属性: 用于设置是否需要使用内置的session对象。
Session属性的属性值可以是true或false,默认的属性值是true。
5、buffer属性:内置输出流对象out负责将服务器的某些信息或运行结果发送到客户端显示,buffer属性用来指定out设置的缓冲区的大小或者不使用缓冲区。(取值none)
如:<@ page buffer=”24kb” %>
6、autoFlush属性: 指定out的或冲去被填满时,缓冲区是否自动刷新。(true或false,默认为true)。
7、isThreadSafe属性: 用来设置JSP页面是否可多线程访问。(true或false,默认是true)
2.2 include 指令标签
如果需要在JSP页面内某处整体的嵌入一个文件,就可以考虑使用这个指令标签。
<% @ include file=”文件的名字”%>
三 JSP 动作标签
动作标签是一种特殊的标签,他影响这JSP的运行时的功能。
3.1 include 动作标签
<jsp:includepage = “文件名字” %>
该动作标签告诉JSP页面动态包含一个文件,即JSP页面运行时才将文件加入。与静态插入文件的include指令标签不同,当JSP引擎吧JSP页面转译成Java文件时,不把JSP页面中动作指令include所包含的的文件与原JSP页面合并到一个新的JSP页面,而是告诉Java解释器,当这个文件JSP运行时(java文件的字节码文件被加载执行)才被包含进来。如果包含的文件是普通文本文件,就将文件的内容发送到客户端,有客户端负责显示,如果包含的文件是JSP文件,JSP引擎就执行这个文件,然后将执行结果发送到客户端,并由客户端负责显示这些结果。
注意:include动作标签与静态插入文件的include执行标签有很大的区别:动作标签是在执行时才对包含的文件进行处理,因此JSP页面和他所包含的文件在逻辑和语法上是多里的。如果你对包含的文件进行了修改,那么运行将看到包含文件修改后的结果。而静态include指令包含的 文件如果发生了变化,我们必须要重新将JSP页面转译java文件(可将该jsp页面重新保存,然后在访问,就可以产生新的转译java文件),否则只能看到所包含的文件修改前的内容。
3.2 param 动作标签
Param标签以“名字-值”对的形式为其他标签提供附加信息,这个标签与jsp:include、jsp:forward、jsp:plugin标签一起使用。
语法:
<jsp:paramname=” 名字” value=”指定给param的值” />
3.3 forward 动作标签
<jsp:forwardpage=”要转向的页面”>
</jsp:forward>
该指令的作用:从该指令处停止当前年页面的继续执行,而转向其他的一个JSP页面。
3.4 plugin 动作标签
<jsp:plugintype=”applet” code=”小应用程序的字节码文件”
Jreversion=”java虚拟机版本号” widti=”小程序宽度值” height=”小程序高度值”>/
3.5 userBean 动作标签
略,以后介绍吧。