一、Jsp主要包含三种指令:page指令(页面指令)、include指令、taglib指令。
二、page指令:可以定义在整个jsp页面范围内有效的属性,使用格式:<%@ page attribute1="value1" attribute2="value2"%>,下面是常用属性:
1、language属性:设置当前页面中编写jsp脚本使用的语言,默认为Java
写法:<%@ page language="java"%>
2、contentType属性:设置页面响应的MIME类型,通常被设置为text/html,默认编码为ISO-8859-1
写法:<%@ page contentType="text/html;charset=UTF-8"%>
3、import属性:类似于Java中的import语句,用来向jsp文件中导入需要用到的包,在page指令中可多次使用该属性来导入多个包。
写法:<%@ page import="java.util.* java.text.*"
在jsp中默认导入了以下包的内容:
java.lang.*
javax.servlet.*
javax.servlet.jsp.*
javax.servlet.http.*
补充:若要在页面中使用编写的javabean,也可通过import属性来导入。还可以通过
4、extends属性:用来指定将一个jsp页面转换成servlet后继承的类。
补充:在jsp中通常不会设置该属性,jsp容器会提供继承的父类,如果设置了该属性,一些改动会影响jsp的编译能力。
5、session属性:该属性默认值为true,表示当前页面支持session。
6、buffer属性:该属性用来设置out对象(jspwriter类对象)使用的缓冲区大小。若设置为none,表示不使用缓存,而直接通过PrintWriter对象进行输出;如果将该属性指定为数值,则输出缓冲区的大小不应小于该值,默认值为8KB。
7、autoflush属性:该属性默认值为true,表示当缓冲区已满时,自动将其中的内容输出到客户端。如果数值为false,则当缓冲区的内容超过其设置的大小时,会产生“jsp buffer overflow”溢出异常
8、isthreadsafe属性:默认值为true,表示当前jsp页面被转换成servlet后,会以多线程的方式来处理来自多个用户的请求,如果设置为false,则转换后的servlet会实现siglethreadmodel接口,该servlet将以单线程的方式来处理用户请求,即其他请求必须等待直到前一个请求处理结束。
9、info属性:可设置为任意字符串,如当前页面的作者或其他有关的页面信息。可通过servlet.getservletinfo()方法拉力获取设置的字符串。
写法:<%@ page info="this is index.jsp!"%> <%=servlet.getservletinfo()%>
10、errorpage属性:用来指定一个当前页面出现异常时多要调用的页面。如果属性值是以“/”开头的路径,则将在当前应用程序的根目录下查找文件,否则,价格能在当前页面的目录下查找文件。
11、iserrorpage属性:将该属性设置为true,此时在当前页面中可以使用exception异常对象。若在其他页面中通过errorpage属性指定了该页面,则当前者出现异常时,会跳转到该页面,并可在该页面中通过exception对象输出错误信息。相反,如果将该属性设置为false,则在当前页面中不能使用exception对象。该属性默认值为false.
补充:只有在指定的转到错误页面中设置iserrorpage属性为true,然后才能调用exception对象输出错误信息。使用方法exception.getmessage()
12、isELIgnored属性:通过该属性的设置可以使jsp容器忽略表达式语言“${}”,其值只能为true或false,设置为true,则忽略表达式语言。
13、pageEncoding属性:该属性用来设置jsp页面字符的编码,默认为“ISO-8859-1”。
三、include指令:该指令用于在当前的jsp页面中,在当前使用该指令的位置嵌入其他的文件,如果被包含的文件中有可执行的代码,则显示代码执行后的结果。
使用格式:<%@ include file="文件的绝对路径或相对路径"%>
file属性:用来指定被包含的文件,该属性不支持任何表达式。如果该属性值以“/”开头,那么指定的是一个绝对路径,在将当前应用的根目录下查找文件,如果是以文件名称或者文件夹名开头,那么指定的是一个相对路径,将在当前页面的目录下查找文件。
四、使用taglib指令:用来在页面中使用jsp的基本标识或自定义的标识来完成特殊的功能。
使用格式:<%@ taglib uri="tagURI" prefix="tagPrefix"%>
uri属性:制定了标签描述符,该描述符是一个对标签描述文件的映射。在tld标签描述文件中定义了该标签库中的各个标签名称,并为每个标签指定一个标签处理类。
prefix属性:该属性指定一个在页面中使用由uri属性指定的标签库的前缀。前缀不能命名为jsp、jspx、Java、javax、sun、servlt、sunw。
示例:<%@ taglib uri="http://java.sum.com/jsp/jst1/core" prefix="c"%>
五、注释方式:
1、<%-- --%>
2、
六、
使用格式:
page属性:该属性指定了被包含文件的路径,其值可以是一个代表了相对路径的表达式。当路径是以“/”开头是,则按照当前应用的路径查找这个文件;如果路径是以文件名或目录名称开头,那么将按照当前的路径来查找被包含的文件。
flush属性:表示当输出缓冲区满时,是否清空缓冲区。该属性值为boolean类型,默认值为false,通常设置为true。
七、
1、属性:include指令通过file属性来指定被包含的页面,include指令将file属性值看做一个实际存在的文件的路径,所以该属性不支持任何表达式。若在file中应用了jsp表达式,则会抛出异常。
2、处理方式:使用include指令被包含的文件,他的内容会原封不动的插入到包含页中使用该指令的位置,然后jsp编译器再对这个合成的文件进行翻译。所以在一个jsp页面中使用include指令来包含另一个jsp页面,最终编译后的文件只有一个。
使用
3、包含方式:使用include指令包含文件,最终服务器执行的是将两个文件合成后由jsp编译器编译成的一个class文件,所以被包含文件的内容应是固定不变的,若改变了被包含的文件,则主文件的代码就发生了改变,因此服务器会重新编译主文件。include指令的这种包含过程称为静态包含。
使用
八、
补充: