JSP指令用于提供整个JSP页面的相关信息以及用于JSP页面与容器之间的通信。JSP指令有三种:page指令、include指令、taglib指令
1.page指令
用于设定整个JSP页面的属性和相关功能,page指令共有11个属性
- contentType属性和pageEncoding属性: contentType属性指定JSP页面的MIME和编码格式<%@page contentType="text/html;charset=UTF-8"%> pageEncoding属性用来指定JSP文件的编码格式(JSP文件保存时选择的编码格式)<%@page contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>。其实pageEncoding和contentType这两个属性的关系很“暧昧”:当设 置了pageEncoding,而没设置contentType时: contentType的默认值为 pageEncoding;当设置了contentType,而没设置pageEncoding时: pageEncoding的默认值contentType;
- import属性:在JSP中引入Java的包和类,多个包之间以逗号隔开 <%@page import="mypackage.test.*,java.util.Date"%>
- session属性:指定当前页面是否能获得当前用户的session对象,缺省是true,如果指定为false,那么在该页面中无法使用session,使用的话会提示500错误。<%@page session="true"%>
- errorPage属性:如果当前页面发生异常,网页会重定向到errorPage所指定的页面进行处理<%@page errorPage="error.jsp" isErrorPage="false"%> 当前页面发生异常,并且没有对异常进行捕获的时候,跳转到error.jsp页面,不指定errorPage的话,画面上直接显示异常的相关信息,这样对使用的用户不是很友好
- isErrorPage属性:允许指定的JSP页面为错误处理页面
- language属性:指定页面中使用的脚本语言种类,目前只支持java <%@page language="java"%>
- extends属性:指定该JSP生成的servlet继承自哪个父类,必须指定包名加类名<%@page extends="mypackage.test.MyJspBase"%>
- buffer属性和autoFlush属性:buffer属性用来设置输出流缓冲区,缓冲区的作用就是为了提高IO性能,也就是说减少write的次数。autoFlush属性用来指定当输出流缓冲区满了的时候,是否自动刷新缓冲区,true的话,自动把缓冲区的内容输出到底层输出流,false的话,缓冲区满的话,会抛出IO异常。
- isThreadSafe属性:缺省值为true,指定该JSP文件是否支持多线程访问<%@page isThreadSafe="true"%> 此时,多个线程共用同一个servlet实例。<%@page isThreadSafe="false"%> 此时,每个线程都有一个自己的servlet实例,比较消耗内存资源,所以不建议使用
- info属性:设置该jsp文件的介绍信息 <%@page info="This is a jsp page."%>
- isELIgnored属性:标示是否支持EL表达式<%@page isELIgnored="true"%> 不支持EL表达式,EL表达式会被当做普通的html文本。<%@page isELIgnored="false"%> 支持EL表达式
2.include指令
表示在JSP编译时插入一个包含文件或者代码的文件,是一种静态包含
- include指令只有一个属性:file,指定要包含的页面,例如:<%@include file=”b.jsp”%>。静态包含:当hel.jsp页面包含了lo.jsp页面后,在编译hel.jsp页面时,需要把hel.jsp和lo.jsp页面合并成一个文件,然后再编译成Servlet(Java文件)。include指令所包含的文件名不能是一个变量url,只能是静态的文件名。 在被包含页面中,一般不包含标记,两个页面之间不能存在相同的局部变量。
3.taglib指令
声明JSP文件使用了标签库(JSP标准标签库,第三方标签库,自定义标签库)
- <%@taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core"%> 声明使用JSTL的核心标签库taglib指令让用户能够自定义标签