• JSP教程:1天玩转JSP网站开发技术
  • JSP是什么?
  • JSP的特点与工作流程
  • JSP与ASP、PHP的比较
  • JSP页面的组成及其元素
  • JSP开发环境搭建(Tomcat的安装和配置)
  • 第一个JSP程序
  • JSP注释(多种注释详解)
  • JSP声明:变量、方法和类的声明
  • JSP中嵌入Java代码
  • JSP表达式
  • JSP开发模式(四种模式)
  • JSP常见错误以及解决方案
  • JSP指令详解(三大指令)
  • JSP page指令
  • JSP include指令
  • JSP指令应用实例
  • JSP动作
  • JSP include动作
  • JSP param动作
  • JSP forward动作
  • JSP plugin动作
  • JSP useBean动作
  • JSP setProperty动作
  • JSP getProperty动作
  • JSP application 对象
  • JSP out对象:向客户端输出数据
  • JSP request对象:获取客户端的请求信息
  • JSP response对象:响应客户端的请求并向客户端输出信息
  • JSP session对象
  • JSP pageContext对象
  • JSP page对象
  • JSP config对象
  • JSP获取并显示字符串长度
  • 什么是JavaBean?
  • JavaBean工具
  • JavaBean规范
  • JavaBean的属性(Simple、Indexed、Bound、Constrained)
  • JavaBean的Scope属性
  • JavaBean事件
  • JavaBean实现用户登录界面
  • Servlet是什么?
  • Servlet的生命周期
  • Servlet的类和方法
  • Servlet客户端跳转
  • EL是什么?(详解)
  • JSP EL表达式的基本语法及运算符的优先级(一览表)
  • JSP EL 点(.)运算符和下标([])运算符
  • JSP EL算数运算符
  • JSP EL关系运算符
  • JSP EL逻辑运算符
  • JSP EL条件运算符
  • JSP EL empty空运算符
  • EL表达式中的常量与变量
  • EL表达式的保留字
  • EL表达式的内置对象及其作用域
  • 使用EL表达式访问JavaBean
  • 使用EL表达式访问集合
  • EL表达式内置对象param和paramValues
  • EL表达式内置对象cookie
  • EL表达式内置对象initParam
  • JDBC 的定义及产品组件
  • 建立JDBC连接
  • 利用JDBC发送SQL语句
  • JDBC API ResultSet接口(记录集接口)
  • JDBC RowSet接口
  • JDBC BaseRowSet类和CachedRowSet类
  • 填充CachedRowSet对象记录集(三种方法)
  • File类(在JSP中的使用)详解
  • 使用字节流读/写文件
  • RandomAccessFile类
  • JSP文件上传
  • XML是什么?
  • XML的基本语法
  • JDK 中的 XML API
  • DOM解析XML
  • SAX解析XML
  • DOM4j解析XML
  • JSP page 指令是页面指令,可以定义在整个 JSP 页面范围有效的属性和相关的功能。利用 page 指令,可以指定脚本语言,导入需要的类,指明输出内容的类型,指定处理异常的错误页面,以及指定页面输出缓存的大小,还可以一次设置多个属性。

    page 指令的属性如下:

    提示:

    1. 语法格式说明中的“[”和“]”符号括起来的内容表示可选项。
    2. 可以在一个页面上使用多个 page 指令,其中的属性只能使用一次(import 属性除外)。

    JSP page 指令将使用这些属性的默认值来设置 JSP 页面,下面介绍 page 指令的 13 个属性。

    (1) language 属性:设置当前页面中编写 JSP 脚本所使用的语言,默认值为 java。

    例如:

    1. <%@ page language="java" %>

    目前只可以使用 Java 语言。

    (2) contenType 属性:设置发送到客户端文档响应报头的 MIME(Multipurpose Internet MailExtention)类型和字符编码,多个值之间用“;”分开。contenType 的用法如下:

    1. <%@ page contenType="MIME 类型; charset=字符编码" %>

    MIME 类型被设置为 text/html,如果该属性设置不正确,如设置为 text/css,则客户端浏览器显示 HTML 样式时,不能对 HTML 标识进行解释,而直接显示 HTML 代码。

    在 JSP 页面中,默认情况下设置的字符编码为 ISO-8859-1,即 contentType=”text/html;charset=ISO-8859-1”。但一般情况下,应该将该属性设置为

    1. contentType="text/html;charset=utf-8"

    此处设置 MIME 类型为 text/html,网页所用字符集为 utf-8。

    (3) import 属性:用来导入程序中要用到的包或类,可以有多个值,无论是 Java 核心包中自带的类还是用户自行编写的类,都要在 import 中引入。import 属性的用法如下:

    1. <%@ page import="包名.类名" %>

    如果想要导入包里的全部类,可以这样使用:

    1. <%@ page import="包名.*" %>

    在 JSP page 指令中,可多次使用该属性来导入多个类。例如:

    1. <%@ page import="包名.类1" %> <%@ page import="包名.类2" %>

    或者通过逗号间隔来导入多个类:

    1. <%@ page import="包名.类1,包名.类2" %>

    在 JSP 中,已经默认导入了以下包:

    1. java.lang.*
    2. javax.servlet.*
    3. javax.servlet.jsp.*
    4. javax.servlet.http.*

    所以,即使没有用 import 属性进行导入,在 JSP 页面中也可以调用上述包中的类。

    【例1】显示欢迎信息和用户登录的日期时间。

    本例通过导入 java.util.Date 类来显示当前的日期时间。具体步骤如下。

    ① 使用 page 指令的 import 属性将 java.util.Date 类导入,然后向用户显示欢迎信息,并把当前日期时间显示出来。具体代码如下:

    1. <%@ page import="java.util.Date" language="java" contentType="text/html;charset=utf-8"%>
    2. <html>
    3. <body>
    4. 您好,欢迎光临蒲公英云!<br/>
    5. 您登录的时间是<%=new Date() %>
    6. </body>
    7. </html>

    ② 运行该页面,结果如图 1 所示。
    显示欢迎信息和用户登录的日期时间
    图1 显示欢迎信息和用户登录的日期时间

    (4) info 属性:设置 JSP 页面的相关信息,如当前页面的作者、编写时间等。此值可设置为任意字符串,由 Servlet.getServletInfo() 方法来获取所设置的值。

    【例2】设置并显示 JSP 页面的作者等相关信息。

    本例通过 page 指令的 info 属性来设置页面的相关信息,通过 Servlet.getServletInfo() 方法来获取所设置的值,具体步骤如下。

    ① 使用 page 指令的 info 属性设置页面的作者、版本以及编写时间等。具体代码如下:

    1. <%@ page import="java.util.Date" language="java" contentType="text/html;charset=utf-8"%>
    2. <%@ page info="作者:dandelioncloud.cn <br/> 版本: v1.0 <br/> 编写时间:2018年11月21 星期三 <br/> 敬请关注, 谢谢!"%>
    3. <html>
    4. <body>
    5. <%
    6. String str=this.getServletInfo();
    7. out.print (str) ;
    8. %>
    9. </body>
    10. <html>

    ② 运行该页面,结果如图 2 所示。

    设置并显示JSP页面的作者相关信息
    (5)extends 属性:指定将 JSP 页面转换为 Servlet 后继承的类。在 JSP 中,通常不会设置该属性,JSP 容器会提供继承的父类。并且,如果设置了该属性,一些改动会影响 JSP 的编译能力。

    (6) session 属性:表示当前页面是否支持 session,如果为 false,则在 JSP 页面中不能使用 session 对象以及 scope=session 的 JavaBean 或 EJB。该属性的默认值为 true。

    (7) errorPage 属性:用于指定JSP文件的相对路径,在页面出错时,将转到这个 JSP 文件来进行处理。与此相适应,需要将这个 JSP 文件的 isErrorPage 属性设为 true。

    设置 errorPage 属性后,JSP 网页中的异常仍然会产生,只不过此时捕捉到的异常将不由当前网页进行处理,而是由 errorPage 属性所指定的网页进行处理。如果该属性值设置为以“/”开头的路径,则错误处理页面在当前应用程序的根目录下;否则在当前页面所在的目录下。

    (8) isErrorPage 属性:指示一个页面是否为错误处理页面。设置为 true 时,在这个 JSP 页面中的内置对象 exception 将被定义,其值将被设定为调用此页面的 JSP 页面的错误对象,以处理该页面所产生的错误。

    isErrorPage 属性的默认值为 false,此时不能使用内置对象 exception 来处理异常,否则将产生编译错误。

    例如,在发生异常的页面上有如下用法:

    1. <%@ page errorPage="error.jsp" %>

    用上面的代码,就可以指明当该 JSP 页面出现异常时,跳转到 error.jsp 去处理异常。而在 error.jsp 中,需要使用下面的语句来说明可以进行错误处理:

    1. <%@ page isErrorPage="true" %>

    【例3】页面出现异常的处理。

    本例通过 page 指令的 errorPage 和 isErrorPage 两个属性来演示当页面出现异常时应如何处理。具体步骤如下。

    ① 创建 2-18.jsp 页面,使用 page 指令的 errorPage 属性指定页面出现异常时所转向的页面。具体代码如下:

    1. <%@ page contentType="text/html; charset=utf-8" errorPage="2-18error.jsp" %>
    2. <html>
    3. <body>
    4. <%
    5. //此页面如果发生异常,将向2-18error.jsp抛出异常,并令其进行处理
    6. int x1=5;
    7. int x2=0;
    8. int x3=x1/x2;
    9. out .print (x3);
    10. %>
    11. </body>
    12. </html>

    该程序执行的是除法运算,如果除数为 0,将会拋出一个数学运算异常,从 errorPage=”2-18error.jsp” 可以看出,程序指定 2-18error.jsp 为其处理异常。

    ② 创建 2-18error.jsp 页面,使用 page 指令的 isErrorPage 属性指定为出错页面,此页面可以使用 exception 异常对象处理错误信息。具体代码如下:

    1. <%@ page contentType="text/html; charset=utf-8" isErrorPage="true" %>
    2. <html>
    3. <body>
    4. 出现错误,错误如下:<br/>
    5. <hr>
    6. <%=exception.getMessage() %>
    7. </body>
    8. </html>

    ③ 运行 2-18.jsp 页面,结果如图 3 所示。

    页面出现异常处理
    图3 页面出现异常处理

    提示:

    为了确译当页面出错时跳转到 errorPage 所指的页面,需要打开 IE 浏览器,选择“工具”→“Internet 选项”菜单命令,在弹出的对话框中选择“高级”选项卡,取消选中“显示友好 HTTP 错误信息”复选框。

    (9) buffer 属性:内置输出流对象 out 负责将服务器的某些信息或运行结果发送到客户端显示,buffer 属性用来指定 out 缓冲区的大小。其值可以是 none、8KB 或是给定的 KB 值。

    值为 none 表示没有缓存,直接输出至客户端的浏览器中;如果将该属性指定为数值,则输出缓冲区的大小不应小于该值,默认为 8KB(因不同的服务器而不同,但大多数情况下都为 8KB)。

    (10) autoFlush 属性:当缓冲区满时,设置是否自动刷新缓冲区。默认值为 true,表示当缓冲区满时,自动将其中的内容输出到客户端;如果设为 false,则当缓冲区满时会出现 JSP Buffer overflow 溢出异常。

    提示:

    当 buffer 属性的值设置为 none 时,autoFush 属性的值不能设置为 false。

    (11) isThreadSafe 属性:设置 JSP 页面是否可以多线程访问。默认值为 true,表示当前 JSP 页面被转换为 Servlet 后,会以多线程的方式处理来自多个用户的请求;如果设置为 false,则转换后的 Servlet 会实现 SingleThreadMode 接口,并且将以单线程的方式来处理用户请求。

    (12) pageEncoding 属性:设置 JSP 页面字符的编码,常见的编码类型有 ISO-8859-1、gb2312、utf-8 和 GBK 等。默认值为 ISO-8859-1。其用法如下:

    <%@ page pageEncoding=”字符编码” %>

    例如:

    1. <%@ page pageEncoding="utf-8" %>

    这表示网页使用了 utf-8 编码,与 contentType 属性中的字符编码设置作用相同。

    (13) isELIgnored 属性:其值可设置为 true 或 false,表示是否在此 JSP 网页中执行或忽略表达式语言 ${}。设置为 true 时,JSP 容器将忽略表达式语言。