JSP核心(二)-三大指令

JSP  指令(directive)
  JSP 指令的作用是为当前页面做一些基本的属性设置,为当前的页面的运行提供基本的环境。
    根据功能的不同,JSP 中包含三类指令:

      page 指令,即页面指令;

      include 指令,即包含指令;

      taglib 指令,即标签库指令。

  无论哪种指令,其使用的语法格式均为如下形式:

  

 

   如: page指令

  

 

 


 一、page指令

  page 指令用于设置当前 JSP 页面的相关信息。一个 JSP 文件中可以包含多个 page 指令。
  常用的 page 指令的属性意义及用法如下:

 

 

1 ) pageEncoding  属性
  pageEncoding 属性用于设置当前 JSP 页面所使用的字符编码格式。即,用户在浏览器中通过右击查看编码所看到的编码格式。

  

 

 

 

   其被 JSP 翻译引擎翻译到 Servlet 中的语句,是_jspService()方法中的 setContentType()。

   

2 ) contentType  属性

  contentType 属性用于设置当前 JSP 页面呈现于用户浏览器中的内容类型,通常为”text/html”类型,即 html 格式的文本。

  若在 JSP 页面中设置如下:

  

 

   对应 JSP 翻译引擎翻译过的 Servlet 中的语句,则为_jspService()方法中的如下语句:

  JSP核心(二)-三大指令_第1张图片

 

   但,若直接通过 contentType 属性指定内容类型与字符编码:

  

 

 

  则生成的 Servlet 语句仍为:

  

 

   所以,当内容类型为”text/html”时,使用 pageEncoding 属性与 contentType 属性效果是相同的。

  只有当内容类型不为”text/html”时,才专门使用 contentType 属性指定。在指定字符编码时,这两个属性一般不同时使用

 

 3 ) import  属性
  import 属性,用于完成在 JSP 页面中导入指定的类。其被 JSP 引擎翻译为 Servlet 中的import 语句。

  例如,

  JSP核心(二)-三大指令_第2张图片

 

 

  结果:

  

 

 

 

  

 

   

  在 Servlet 中被翻译为了:

  JSP核心(二)-三大指令_第3张图片

 

   若要导入多个类,则在 import 属性值中可使用逗号将这些类分隔

  

 

   在 Servlet 中将被翻译为多个 import 语句:

  JSP核心(二)-三大指令_第4张图片

 

 

 (4 ) errorPage  属性
  errorPage 属性用于指定,当前页面运行过程中发生异常时所要跳转到的页面。

  JSP核心(二)-三大指令_第5张图片

 

   需要注意的是,该属性会被翻译到 Servlet 的_jspService()方法中,即这里出现的路径是一个后台路径,而非前台路径。所以这里指定的发生异常后所要跳转的页面,需要使用以斜杠开头的后台路径。

  JSP核心(二)-三大指令_第6张图片

 

 

  

  发生错误时,会跳转到    指定的 error.jsp中

 

(5 ) isErrorPage  属性
  若一个页面中指定了发生异常后所要跳转的页面,将会出现一个问题:异常信息被隐藏了。

  在控制台看不到异常信息,在所跳转的页面中也看不到异常信息。这对于程序员来说,不是件好事,没有足够的信息提示。
  此时,一般是希望当异常发生后,在所要跳转的页面中能够给出相应的异常信息。

  而异常信息是封装在异常对象 exception 中的。也就是说,我们需要在所要跳转的页面中能够获取到异常对象。此时,就需要将这个所要跳转的页面指定为“错误处理页面”。
  当一个页面的 page 指令中设置 isErrorPage 的值为 true 时,表明当前页面为一个“错误处理页面”。默认 isErrorPage 的值为 false。

  JSP核心(二)-三大指令_第7张图片

 

 

 

  一旦一个页面 page 指令的 isErrorPage 属性被指定为了 true,查看 JSP 页面所翻译为的Servlet 则会发现:

  在_jspService()方法中,多出了一个变量 exception。这就是内置对象exception,可以在 JSP 的 Java 代码块、表达式块中直接使用的内置对象。

  JSP核心(二)-三大指令_第8张图片

 

(6 ) session属性

  session 属性用于指定当前页面中是否可以直接使用内置对象 session。默认为 true,可以使用。

  查看JSP翻译为的Servlet,可以看到session的创建,使用的是无参方法getSession()。
  该方法的功能是,若当前具有 session,则使用当前的 session;若当前没有 session,则会新建一个 session。即 session 对象肯定不为 null。

  JSP核心(二)-三大指令_第9张图片

 

   但,有些情况下,我们希望的仅仅是获取到之前已经存在的 session,若之前没有 session,则并不需要创建 session,即让 session 为 null。

  显示使用默认的 session 属性为 true 已经无法满足需求了。此时,就需要将 session 属性设置为 false,即不使用内置对象 session,而是在JSP 页面的代码块中使用 request 的带参 getSession()方法。
          HttpSession session = request.getSession(false);

  若设置 session 属性的值为 false,查看生成的 Servlet 代码,会发现根本就没有出现内置对象 session。

  JSP核心(二)-三大指令_第10张图片

 

 


 

 

二、include 指令

 


 

三、taglib 指令

 

 


你可能感兴趣的:(JSP核心(二)-三大指令)