JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。在JSP 2.0规范中共定义了三个指令:

    page指令

    Include指令

    taglib指令


JSP指令简介

JSP指令的基本语法格式:

<%@ 指令 属性名="值" %>

    举例:<%@ page contentType="text/html;charset=gb2312"%>

    如果一个指令有多个属性,这多个属性可以写在一个指令中,也可以分开写。

例如:

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.util.Date"%>

也可以写作:

<%@ page contentType="text/html;charset=gb2312" import="java.util.Date"%> 


JSP_Page指令

web.xml中配置<error=page>标签,表示为整个web应用配置错误提示页面。

两种配置方式:
(1)  <error-page>
       <exception-type>java.lang.Throwable</exception-type>
       <location>/error/500.jsp</location>
    </error-page>

(2)  <error-page>
       <error-code>404</error-code>
       <location>/error/404.jsp</location>
    </error-page>

 

JSP指令

1page指令 

  用来通知翻译引擎,如何翻译当前的JSP

1language="java" 当前JSP使用的开发语言

2extends="package.class" 当前jsp翻译成servlet后要继承的类,注意此值必须是一个servlet的子类,一般情况下不要改

3import="{package.class | package.*}, ..."  导入需要使用到的包java.lang.*;javax.servlet.*;javax.servlet.jsp.*;javax.servlet.http.*;

4session="true | false"  用来指定当前页面是否使用session,如果设置为true,则翻译过来的servlet中将会有对session对象的引用,于是可以直接在jsp中使用session隐式对象。但是这将导致一旦访问jsp就会调用request.getSession()方法,可能导致不必要的空间浪费。如果确定jsp中不需要session可以设为false

5buffer="none | 8kb | sizekb"  out隐式对象所使用的缓冲区的大小

6autoFlush="true | false"  out隐式对象是否自动刷新缓冲区,默认为true,不需要更改

7isThreadSafe="true | false"  翻译过来的servlet是否实现SingleThreadModel

8errorPage="relative_url"  如果页面出错,将要跳转到的页面,除了在jsp中使用此属性指定错误页面外也可以在web.xml中配置整个web应用的错误页面,如果两个都设置则jsp中的此属性起作用

9isErrorPage="true | false"  如果在错误提示页面设置此属性为true,翻译过来的servlet中将含有Exception隐式对象,其中封装的就是上一个出错页面抛出的异常对象

10contentType="mimeType  ;charset=characterSet " | "text/html ; charset=ISO-8859-1"  jsp乱码相关的指令,用来指定jsp输出时,设置的Content-Type响应头用来指定浏览器打开的编码

11pageEncoding="characterSet | ISO-8859-1"  服务器翻译jsp时使用的编码集.如果防止jsp乱码,应该保证文件的保存编码和jsp翻译servlet用的编码以及输出到浏览器后浏览器打开的编码一致.此属性一旦设置好,翻译引擎会间接帮我们设置content-type属性. myeclipse会智能设置保存文件的编码与翻译的编码一致。

12isELIgnored="true | false"  当前页面是否使用el表达式,设置为false时表示启用el,j2ee4.0开始默认支持,j2ee4.0一下做开发时,如果要使用el表达式,需将此属性设置为fals

 

2include指令

<%@ incluede file="  "%> 静态引入其他页面的内容

*静态引入:在源文件级别进行合并,多个jsp生成一个servlet,最终由这一个servlet生成响应。推荐使用。

*动态引入:在运行时将多个输出进行合并,多个jsp分别生成多个servlet,最终由这多个servlet生成响应,组成一个输出流,提供响应。执行效率没有静态引入高。


3taglib指令

<%@ taglib uri="   " prefix=" "%>用来引入标签库。

uri指定被引入.tld文件的名称空间

prefix 对该名称空间的一个缩写