第四章 JSP页面组成

Download Report

Transcript 第四章 JSP页面组成

JSP标记



一般使用JSP标记控制页面属性。JSP标记分为
JSP注释、指令标记和动作标记三类。
指令标记有page、include和taglib。
动作标记主要有include、param、forward、
plugin、useBean。
语法格式
1.JSP注释
注释本身不产生语句功能,只用来增强JSP文件的可读性,
便于用户维护JSP文件。JSP注释分两种:HTML注释和
JSP注释。
(1)HTML注释
JSP页面使用这种注释时,客户端通过浏览器查看JSP源文
件时,能够看到HTML注释文字。其语法格式是:
<! -- 要注释的内容、文字、说明写在这里 -- >
(2)JSP注释
使用这种注释时, JSP引擎编译该页面时会忽略JSP注释。
下面是其语法格式:
<%-- 要注释的内容、文字、说明写在这里 --% >
例子:ex2-2_1.jsp
2. page指令标记
page指令主要用来定义整个JSP页面的各种属性。
一个JSP页面可以包含多个page指令,指令中,
除了import属性外,每个属性只能定义一次,否
则JSP页面编译将出现错误。下面是page指令格
式:
<%@ page
[language=”java”]
[extends=”classname”]
[import=”packname/classname”]
[session=”true/false]
[buffer=”none/sizekb]
[autoFlush=”true/false”]
[isThreadeSafe=”true/false”]
[info=”info_text”]
[errorPage=”error_url”]
[isErrorPage=”true/false”]
[contentType=”MIME_type”]
[pageEncoding=” “]
%>
本标记由多个 属性名=”属性值”对构成,通过这种方式设置
的属性。
页面
(1)language
 language属性定义了JSP页面中所使用的脚本
语言。目前JSP必须使用的是java语言,因此
该属性的默认值为“java”,因此也要求JSP页
面的编程语言必须符合java语言规则。
Language属性设置如下:
language=“java”
 使用该属性需要注意的是,在第一次出现脚本
元素之前,必须设置该属性的参数值,否则将
会导致严重的错误。
(2)extends
 该属性定义JSP页面产生的Servlet所继承的父
类。由于该属性将限制JSP引擎提供特定的超
类,这些超类可能会改善所提供服务的品质,
因此在使用该属性时必须十分注意。
(3)import
 该属性和一般的java语言中的import关键字意
义一样,它描述了脚本环境中要使用的类。
(4)session
 该属性指定JSP页面是否参与一个Http会话,
它的默认值是ture,表示该属性所在的页面参
与指定Http的会话。
(5)buffer
 该属性指定输出到客户端的流的缓冲模式,如
果属性值为none,将不缓冲,输出直接通过
ServletResponse的PrintWriter输出。如果该
属性值为一个数字,该数字就表示缓冲区的大
小,它的单位是千字节。并且输出的大小至少
不会小于这个值。通常,默认的缓冲区大小为
8KB。
(6)autoFlush
 该属性的默认值为ture,表示当缓冲区满时,
到客户端的输出将会自动刷新,若该属性为
false,则当缓冲区满时,将会出现缓冲区溢出
异常。
 需要注意的是,在buffer属性值取none的时候,
autoflush属性值不能设置为false。因为当
buffer取值为none时,表明没有设置缓冲区,
因而JSP页面的jspWriter本身将会自动刷新缓
冲区。
(7)isTheadSafe
 该属性用来设置JSP页面是否可以多线程使用。
默认值为ture,如果采用默认值,则在运行
JSP页面时,可能会同时接受多个客户的请求。
当该属性取值为false时,一个JSP处理器将会
逐个的接受客户的请求。
(8)info
 在该属性中定义了一个任意的字符串,可以用
来说明JSP页面中待说明的信息,该字符串将
会直接加入到翻译好的页面中,可以通过
Servlet.getservletInfo()方法获得该属性的值。
(9)errorPage
 该属性用于表示当发生异常错误时调用的JSP页面,通常
默认忽略。
(10)isErrorPage
 该属性定义了当前的JSP页面是否为另外一个JSP页面错
误显示的目标。
(11)contentType
 该属性定义了JSP页面及其相应的字符编码以及JSP页面
响应的MIME类型。对该属性设置的格式如下:
“TYPE ; charset=CHARSET”
(需要注意的是分号后面有一空格)
TYPE的默认值为“text/html”,字符编码的默认值为ISO8859-1。
(12)pageEncoding
 该属性描述JSP页面的字符编码,通常默认值
为。’’ISO-8859-1’’
(13)isELIgnored
 该属性用来设置EL(Expression Language,表
达语言,已纳入JSP2.0为标准规范之一)是否
被忽略,如果取值为ture,则忽略EL表达式计
算,反之则不忽略。该属性的默认值依
据”web.xml”描述文件的版本确定,
Servlet2.3以前的版本将忽略。
 例子page.jsp
3. include指令标记

该指令标记的语法格式如下:
<%@ include file=”文件名字” %>

该指令标记的作用是在该标记的位置处,静态插入一
个文件。所谓静态插入指用被插入的文件内容代替该
指令标记与当前JSP文件合并成新的JSP页面后,再由
JSP引擎转译为java文件。

被插入的文件要求满足以下条件:
(1) 被插入的文件必须与当前JSP页面在同一WEB服务
目录下。
(2) 被插入的文件与当前JSP页面合并后的JSP页面必
须符合JSP语法规则。
例如, 下面的程序是实现相同功能的两种程序结构:第一
种程序结构中,使用了include指令标记,即在ex22_2.jsp页面中静态插入一个Computer.jsp文件。第二种程
序结构中(ex2-2_2_1.jsp),没有使用include指令标记。
下面是实现这两种程序结构的代码。
第一种程序结构
本程序由两个文件组成,它们是ex2-2_2.jsp页面和
Computer.jsp页面。
ex2-2_2.jsp
Computer.jsp
第二种程序结构
本程序直接将ex2-2_2.jsp页面内容和Computer.jsp页
面内容合并在一起,构成页面ex2-2_2_1.jsp。
ex2-2_2_1.jsp

4. taglib指令标记

该指令用来扩展标记指令的,其语法格式如下:
<%@taglib uri=”taglibURI” prefix=”tagPrefix” %>
其中:
uri是一个标记库描述器,用来唯一地命名一组定制
的标记,并且告诉包容器,如何处理特殊的标记。
TagPrefix定义了JSP页面里要引用该标记时的前缀,
需要注意的是,这些前缀不能是jsp、jspx、java、
javax、sun、servlet和sunw。
5. include动作标记
include动作标记的语法格式如下:
<jsp:include page=”文件的名字” />
或者
<jsp:include page=”文件的名字”>
</jsp:include>
该标记的作用是当前JSP页面动态包含一个文件,
即将当前JSP页面、被包含的文件各自独立转译和编
译为字节码文件。当前JSP页面执行到该标记处时,才
加载执行被包含文件的字节码。
6. param动作标记
 param动作标记的语法格式是:
<jsp:param name=”变量名字” value=”变量值” />

该标记经常与jsp:incluede、jsp:forward、
jsp:plugin标记一起使用, 将param标记中的变
量值传递给动态加载的文件。
7. forward动作标记
forward动作标记的语法格式:
<jsp:forward page=”要转向的页面”>
</jsp:forward>
或者
<jsp:forward page=”要转向的页面” />
该指令的作用是:当前页面执行到该指令处后转
向其它JSP页面执行。
8. plugin动作标记
plugin动作标记的语法格式:
<jsp:plugin type=”applet” code=”applet程序字节码文件名”
codebase=”applet程序字节码文件所在目录” width=”宽度”…>
<jsp:fallback> 提示信息…
</jsp:plugin>

该动作标记指示JSP页面加载 Java plugin 插件,该插件由客户负
责下载,并使用该插件运行java applet小应用程序。
9.useBean动作标记
该标记创建并使用一个javaBean,在后面章介绍。
计算三角形面积并对程序进行注释
[例子1]由用户输入三条边的长度,判断这三条边能否构成一个三角形,
若能构成三角形,则输出三角形的面积和周长。
问题分析:
通过表单获得三角形三条边的值,然后根据三角形面积计算公式
计算面积,最后输出计算结果。
程序结构:
程序名:ex2-2-1.jsp。
程序算法:
1.创建表单。表单中包含三个文本框,从三个文本框获取三条边的长度。
2.判断三条边能否构成一个三角形,如果不能构成三角形,则输出信息”
不能构成三角形”。
3.如果能构成一个三角形,则计算三角形的面积并输出。
在jsp页面中静态包含文件
[例子2]计算某数据的平方根
问题分析:
在一个页面中使用指令标记”include”,静态包含另一页面文件。
程序结构:
程序包含两个文件。ex2-2_2.jsp页面静态包含Computer.jsp页面。
程序算法
ex2-2_2.jsp :
使用”include”指令标记静态包含页面Computer.jsp
Computer.jsp:
1.创建表单,该表单包含一个文本框,从文本框获取正整数。
2.计算整数的平方根
3.输出平方根
动态加载页面并传递数据
[例子3] 求1到300的连续和
问题分析:
本程序由两个页面构成,由主页面动态加载次页面,并传递参数
300给次页面,由次页面实现求和功能。
程序结构:
页面ex2-2_3.jsp动态加载页面addPage.jsp,并将数据300传递给
变量computer。
程序算法
ex2-2_3.jsp:
1.动态加载页面addPage.jsp。
2.给参数Computer传递数据300。
addPage.jsp:
1.获得参数Computer的值
2.求1到computer的和
3.输出数据
程序代码:
ex2-2_3.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY BGCOLOR=Cyan >
<P>动态加载页面文件addPage计算1~300的连续和
<jsp:include page="addPage.jsp">
<jsp:param name="computer" value="300"/>
</jsp:include>
</BODY>
</HTML>
addPage.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY>
<%
String str=request.getParameter("computer"); //获取值
int n=Integer.parseInt(str);
int sum=0;
for(int i=1;i<=n;i++)
{
sum=sum+i;
}
%>
<P>
从1到<%=n%>的连续和是:
<BR>
<%=sum%>
</BODY>
</HTML>
重定向页面并传递数据
[例子4]输出随机数(0~1)
问题分析:
本程序由两个页面构成,由一个主页面产生随机数并传递给另一
重定向页面,重定向页面获得随机数并输出此数据。
程序结构:
主页面ex2-2_4.jsp重定向到redirect.jsp页面。
程序算法:
ex2-2_4.jsp:
1. 产生随机数number,
2. 转向页面redirect.jsp
redirect.jsp:
1.获得number值
2.输出number的值
程序代码:
ex2-2_4.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY>
<%
double i=Math.random();
%>
<jsp:forward page="redirect.jsp">
<jsp:param name="number" value="<%=i%>" />
</jsp:forward>
</BODY>
</HTML>
redirect.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML>
<BODY bgcolor=cyan>
<FONT size=8>
<%
String str=request.getParameter("number");
if(str==null) str="0";
double n=Double.parseDouble(str);
%>
<P>您传过来的数值是:<BR>
<%=n%>
</FONT>
</BODY>
</HTML>