1. JSP页面的基本结构
JSP页面可由5种元素组合而成:① 普通的HTML标记符;② JSP标记,如指令标记、动作标记;③ 成员变量和方法;④ Java程序片;⑤ Java表达式
处理过程:
1.把JSP页面中普通的HTML标记符号,交给客户的浏览器执行显示。
2.JSP标记、数据和方法声明、Java程序片由Tomcat服务器负责执行,将需要显示的结果发送给客户的浏览器。
3. Java表达式由Tomcat服务器负责计算,将结果转化为字符串,交给客户的浏览器负责显示。
2. JSP页面的成员变量和方法
1.在JSP页面的标记符“<%!”和“%>”之间声明的变量称作JSP页面的成员变量 .
2. JSP页面在“<%!”和“%>”之间声明定义 方法 .
3. Java程序片
在“<%”和“%>”之间插入Java程序片
程序片中声明的变量称为JSP页面的局部变量
多个客户请求一个JSP页面时 , Java程序片将被执行多次,分别在不同的线程中执行。
4. Java表达式
“<%=”和“%>”之间可以是一个Java表达式 .
表达式的值由服务器负责计算,并将计算结果用字符串形式发送到客户端显示。 .
5.JSP中的注释
HTML注释格式:
<!-- 注释内容 -->
JSP注释格式:
<%-- 注释内容 --%>
6. JSP 指令标记
page 指令标记:
page 指令用来定义整个JSP页面的一些属性和这些属性的值,属性值用单引号或双引号括起来。可以用一个page指令指定多个属性的值 ,也可以使用多个page指令分别为每个属性指定值 .
page指令的作用对整个JSP页面有效,与其书写的位置无关,习惯把page指令写在JSP页面的最前面。例如:
<%@ page 属性1=“属性1的值” 属性2= “属性2的值” ……%>
或
<%@ page 属性1="属性1的值" %>
<%@ page 属性2="属性2的值" %>
… …
<%@ page 属性n="属性n的值" %>
page 指令标记可以指定如下属性的值:
contentType、import、language、session、buffer、auotFlush 、isThreadSafe、pageEncoding
contentType属性
contentType 属性值确定JSP页面响应的MIME(Multipurpose Internet Mail Extention)类型和JSP页面字符的编码。
例如:
<%@ page contentType="text/html;charset=GB2312" %>
不允许两次使用page 指令给contentType属性指定不同的属性值.
import 属性
该属性的作用是为JSP页面引入Java运行环境提供的包中的类,这样就可以在JSP页面的程序片部分、变量及函数声明部分、表达式部分使用包中的类。
例如:
<%@ page import="java.io.*", "java.util.Date" %>
language属性
定义JSP页面使用的脚本语言,该属性的值目前只能取"java"。
为language属性指定值的格式:
<%@ page language="java" %>
session 属性
用于设置是否需要使用内置的session对象。session的属性值可以是true或false。session属性默认的属性值是true。
buffer 属性
内置输出流对象out负责将服务器的某些信息或运行结果发送到客户端显示,buffer属性用来指定out设置的缓冲区的大小或不使用缓冲区。例如:
<%@ page buffer= “24kb” %>buffer属性的默认值是8kb 。buffer属性可以取值" none",设置out不使用缓冲区。
autoFlush 属性
指定out的缓冲区被填满时,缓冲区是否自动刷新。
isThreadSafe 属性
用来设置JSP页面是否可多线程访问。
include 指令标记
如果需要在JSP页面内某处整体嵌入一个文件,就可以考虑使用include指令标记,其语法格式如下:
<%@ include file= "文件的URL " %>
如果该文件和当前JSP页面在同一Web服务目录中,那么“文件的URL”就是文件的名字;如果该文件在JSP页面所在的Web服务目录的一个子目录中,比如fileDir子目录中,那么“文件的URL”就是“fileDir/文件的名字”。
静态插入,就是当前JSP页面和插入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。
7.JSP 动作标记
include 动作标记
<jsp:include page= "文件的URL"/>
或
<jsp:include page= "文件的URL">
param子标记
</jsp:include>
include 动作标记是在JSP页面运行时才处理文件,被处理的文件在逻辑和语法上独立于当前JSP页面. 要与include 指令标记相区别。
param动作标记
param标记以“名字—值”对的形式为其它标记提供附加信息.
param标记不能独立使用,需作为jsp:include、jsp:forward、jsp:plugin标记的子标记来使用。
param动作标记语法格式:
<jsp:param name= “名字” value= “指定给param的值”>
当该标记与jsp:include动作标记一起使用时,可以将param标记中的值传递到include动作标记要加载的文件中去,被加载的JSP文件可以使用Tomcat服务器提供的request内置对象获取include动作标记的param子标记中name属性所提供的值
forward 动作标记
该指令的作用是:从该指令处停止当前页面的继续执行,而转向执行page属性指定的JSP页面。
<jsp:forward page="要转向的页面" />
或
<jsp:forward page="要转向的页面" >
param子标记
</jsp:forward>
useBean 动作标记
该标记用来创建并使用一个Javabean,是非常重要的一个动作标记,我们将在第4课详细讨论。Sun公司的倡导是:用HTML完成JSP页面的静态部分,用Javabean完成动态部分,实现真正意义上的静态和动态分离。
例子1
example2_1.jsp
<%@ page contentType="text/html;charset=GB2312" %> <!-- jsp指令标记 -->
<%@ page import="java.util.Date" %> <!-- jsp指令标记 -->
<%! Date date; // 数据声明
int start,end,sum;
public int continueSum(int start,int end) // 方法声明
{ for(int i=start;i<=end;i++)
sum=sum+i;
return sum;
}
%>
<HTML><BODY bgcolor=cyan> <!—html标记 -->
<FONT size=4><P>程序片创建Date对象:
<% date=new Date(); //java程序片
out.println("<BR>"+date);
start=1;
e
JSP页面可由5种元素组合而成:① 普通的HTML标记符;② JSP标记,如指令标记、动作标记;③ 成员变量和方法;④ Java程序片;⑤ Java表达式
处理过程:
1.把JSP页面中普通的HTML标记符号,交给客户的浏览器执行显示。
2.JSP标记、数据和方法声明、Java程序片由Tomcat服务器负责执行,将需要显示的结果发送给客户的浏览器。
3. Java表达式由Tomcat服务器负责计算,将结果转化为字符串,交给客户的浏览器负责显示。
2. JSP页面的成员变量和方法
1.在JSP页面的标记符“<%!”和“%>”之间声明的变量称作JSP页面的成员变量 .
2. JSP页面在“<%!”和“%>”之间声明定义 方法 .
3. Java程序片
在“<%”和“%>”之间插入Java程序片
程序片中声明的变量称为JSP页面的局部变量
多个客户请求一个JSP页面时 , Java程序片将被执行多次,分别在不同的线程中执行。
4. Java表达式
“<%=”和“%>”之间可以是一个Java表达式 .
表达式的值由服务器负责计算,并将计算结果用字符串形式发送到客户端显示。 .
5.JSP中的注释
HTML注释格式:
<!-- 注释内容 -->
JSP注释格式:
<%-- 注释内容 --%>
6. JSP 指令标记
page 指令标记:
page 指令用来定义整个JSP页面的一些属性和这些属性的值,属性值用单引号或双引号括起来。可以用一个page指令指定多个属性的值 ,也可以使用多个page指令分别为每个属性指定值 .
page指令的作用对整个JSP页面有效,与其书写的位置无关,习惯把page指令写在JSP页面的最前面。例如:
<%@ page 属性1=“属性1的值” 属性2= “属性2的值” ……%>
或
<%@ page 属性1="属性1的值" %>
<%@ page 属性2="属性2的值" %>
… …
<%@ page 属性n="属性n的值" %>
page 指令标记可以指定如下属性的值:
contentType、import、language、session、buffer、auotFlush 、isThreadSafe、pageEncoding
contentType属性
contentType 属性值确定JSP页面响应的MIME(Multipurpose Internet Mail Extention)类型和JSP页面字符的编码。
例如:
<%@ page contentType="text/html;charset=GB2312" %>
不允许两次使用page 指令给contentType属性指定不同的属性值.
import 属性
该属性的作用是为JSP页面引入Java运行环境提供的包中的类,这样就可以在JSP页面的程序片部分、变量及函数声明部分、表达式部分使用包中的类。
例如:
<%@ page import="java.io.*", "java.util.Date" %>
language属性
定义JSP页面使用的脚本语言,该属性的值目前只能取"java"。
为language属性指定值的格式:
<%@ page language="java" %>
session 属性
用于设置是否需要使用内置的session对象。session的属性值可以是true或false。session属性默认的属性值是true。
buffer 属性
内置输出流对象out负责将服务器的某些信息或运行结果发送到客户端显示,buffer属性用来指定out设置的缓冲区的大小或不使用缓冲区。例如:
<%@ page buffer= “24kb” %>buffer属性的默认值是8kb 。buffer属性可以取值" none",设置out不使用缓冲区。
autoFlush 属性
指定out的缓冲区被填满时,缓冲区是否自动刷新。
isThreadSafe 属性
用来设置JSP页面是否可多线程访问。
include 指令标记
如果需要在JSP页面内某处整体嵌入一个文件,就可以考虑使用include指令标记,其语法格式如下:
<%@ include file= "文件的URL " %>
如果该文件和当前JSP页面在同一Web服务目录中,那么“文件的URL”就是文件的名字;如果该文件在JSP页面所在的Web服务目录的一个子目录中,比如fileDir子目录中,那么“文件的URL”就是“fileDir/文件的名字”。
静态插入,就是当前JSP页面和插入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。
7.JSP 动作标记
include 动作标记
<jsp:include page= "文件的URL"/>
或
<jsp:include page= "文件的URL">
param子标记
</jsp:include>
include 动作标记是在JSP页面运行时才处理文件,被处理的文件在逻辑和语法上独立于当前JSP页面. 要与include 指令标记相区别。
param动作标记
param标记以“名字—值”对的形式为其它标记提供附加信息.
param标记不能独立使用,需作为jsp:include、jsp:forward、jsp:plugin标记的子标记来使用。
param动作标记语法格式:
<jsp:param name= “名字” value= “指定给param的值”>
当该标记与jsp:include动作标记一起使用时,可以将param标记中的值传递到include动作标记要加载的文件中去,被加载的JSP文件可以使用Tomcat服务器提供的request内置对象获取include动作标记的param子标记中name属性所提供的值
forward 动作标记
该指令的作用是:从该指令处停止当前页面的继续执行,而转向执行page属性指定的JSP页面。
<jsp:forward page="要转向的页面" />
或
<jsp:forward page="要转向的页面" >
param子标记
</jsp:forward>
useBean 动作标记
该标记用来创建并使用一个Javabean,是非常重要的一个动作标记,我们将在第4课详细讨论。Sun公司的倡导是:用HTML完成JSP页面的静态部分,用Javabean完成动态部分,实现真正意义上的静态和动态分离。
例子1
example2_1.jsp
<%@ page contentType="text/html;charset=GB2312" %> <!-- jsp指令标记 -->
<%@ page import="java.util.Date" %> <!-- jsp指令标记 -->
<%! Date date; // 数据声明
int start,end,sum;
public int continueSum(int start,int end) // 方法声明
{ for(int i=start;i<=end;i++)
sum=sum+i;
return sum;
}
%>
<HTML><BODY bgcolor=cyan> <!—html标记 -->
<FONT size=4><P>程序片创建Date对象:
<% date=new Date(); //java程序片
out.println("<BR>"+date);
start=1;
e