第10章 JSP的指令和隐式对象
前面我们学习了JSP 脚本元素,包括:JSP表达式、JSP Scriptlet和JSP声明等,在此基础上本章学习JSP的指令和隐式对象。
JSP指令一共有3个,包括page指令、inbclude指令和taglib指令。page指令每次新建JSP页面都会带出来带出来的指令,page指令包含,他描述这个页面使用什么样的编码?这个页面使用什么样的包?以及使用什么样的语言作为脚本语言等等。inbclude指令是用于来包含一系列的文件,taglib指令是为了去引用一些标签库文件。JSP中有4大类9种隐式对象:包括输入\\输出对象:request、respone、out, 作用域通信对象:session、application、pageContext, Servlet对象:page、config和错误对象:exception等。
本章学习目标: 1.熟练掌握JSP的指令 2.理解掌握JSP的隐含对象 3.熟悉掌握JSP的脚本 4.熟悉掌握JSP的注释
5.熟悉掌握综合应用实例编程的方法
10.1 JSP 指令的组成及语法
10.1.1 JSP的指令
在上一讲中,我们简单介绍了JSP页面的组成元素:模板、指令、脚本、操作等,现在对其中的一些内容作进一步介绍。 1.指令概述:在JSP翻译成Servlet期间提供整个JSP页面的相关信息,指令不会产生任何输出信息到当前输出流中
格式:<%@ 指令 属性名1=“?” 属性名2=“?” ? %> 或
page指令的属性有15个,参表10-1所示。 表10-1:Page指令的属性 属性 language =“语言\extends = “基类名\import= \功能 指定JSP 容器要用什么语言来编译JSP 网页。JSP 2.0 规范中指出,目前只可以使用Java 语言 定义JSP 网页转换Servlet 时继承的父类,通常不使用该属性 定义此JSP 网页可以使用哪些Java类库,默认已导入四个包:java.lang.*,java.servlet.*, java.servlet.http.*,java.servlet.jsp.*。如果要导入多个包,既可以在一个语句写完,也可以分多个语句来写,例如: <%@ page import=“java.io.*” %> <%@ page import=“java.sql.*” %> 与<%@ page import=“java.io.*,java.sql.*” %>等效 session=\buffer=\autoFlush=\isThreadSafe=\决定此JSP 网页是否可以使用session 对象。默认值为true 决定输出流是否有缓冲区。默认值为8KB 的缓冲区 决定输出流的缓冲区是否要自动清除,如果为false,缓冲区满了会产生异常。默认值为true 告诉JSP 容器,此JSP 网页是否能同时处理多个请求。默认值为true,如果此值设为false,JSP在转换成Servlet时会实现SingleThreadModel接口。 指定此JSP 网页的相关信息,可用Servlet接口的getServletInfo()应运得到 如果发生异常错误时,网页会被重新指向指定的URL 表示此JSP Page 是否为专门处理错误和异常的网页 指定MIME 类型和JSP 网页的编码方式,其作用相当于HttpServletResponse接口的setContentType()方法,例如: <%@ page contentType=\指定JSP页面的编码方式,如果设置了该属性,JSP页面就以此方式编码,否则,就使用contentType()属性指定的字符集,假若两个属性都没有指定,就默认为“iso-8859-1” 如果为true,则忽略EL表达式;否则,EL表达式有效 info =\errorPage=\isErrorPage=\contentType = \pageEncoding=“peinfo” isELIgnored=“true|false” 说明:还有两个属性不常用,这里不作介绍 例1 contentType属性设置
<%@ page contentType=\%>
这个文件可以用MS word打开!
2.程序运行结果:
例2 异常处理程序
举例说明:mustBeError.jsp
<%@ page contentType=\language=\ <% %>
在此中通过errorPage=\来指定出错时错误处理页面
<---------------------------> error.jsp
<%@ page contentType=\language=\
isErrorPage=\import=\%>
//这个页面一定会出错。 int i = 0; int j = 1;
out.println(j / i);
import=\ errorPage=\%>
charset=gb2312\>
出错了!
发生了以下的错误:
getMessage():
getLocalizedMessage():
PrintStatckTrace():
<%
<%=exception.getMessage()%>
<%=exception.getLocalizedMessage()%>
StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); exception.printStackTrace(pw); out.println(sw);
%>
在error.jsp中,page指令中指定:isErrorPage=\
<---------------------->
在web.xml中声明异常和错误页面 例如:
xmlns:xsi=\ xsi:schemaLocation=\version=\> web-app_2_4.xsd\

