JSP的3个编译指令、7个动作指令.doc
JSP的3个编译指令、7个动作指令
3个编译指令:page、include、taglib
JSP的编译指令是通知JSP引擎(Tomcat、WebLogic)的消息,它不直接生成输出。
JSP引擎的工作原理:
当一个JSP页面第一次被访问的时候,JSP引擎将执行以下步骤:
〔1〕将JSP页面翻译成一个Servlet,这个Servlet是一个java文件,同时也是一个完整的java程序
〔2〕JSP引擎调用java编译器对这个Servlet进行编译,得到可执行文件class
〔3〕JSP引擎调用java虚拟机来解释执行class文件,生成向客户端发送的应答,然后发送给客户端
以上三个步骤仅仅在JSP页面第一次被访问时才会执行,以后的访问速度会因为class文件已经生成而大大提高。当JSP引擎街道一个客户端的访问请求时,首先判断请求的JSP页面是否比对应的Servlet新,如果新,对应的JSP需要重新编译。
编译指令都有其默认值,因此无须为每个指令设置其值。
常见的编译指令有3个:
(1)、page:是针对当前页面的指令;
(2)、include:用于指定包含另一个页面;
(3)、taglib:用于定义和访问自定义标签。
使用编译指定的语法格式如下:
%@编译指令名属性1=属性值属性2=属性值...%
1、page指令:
是针对当前页面的指令,通常位于JSP页面的顶端,一个JSP页面可以使用多page指令。
常用的page指令如下的格式:
%@pagecontentType=text/html;charset=GBKlanguage=javaerrorPage=%
%@pageimport=java.sql.*%
常用的page的属性如下:
(1)、contentType:用于设定生成网页的文件格式和编码字符集,即MIME类型和页面字符集类型,默认MIME类型是text/html,默认的字符集类型为:ISO-8859-1;
(2)、language:声明当前JSP页面使用的脚本语言的种类,因为页面是JSP页面,所以该属性的值通常都是java。
(3)、errorPage:指定错误处理页面,如果本页面产生了异常或者错误,而该页面没有对应的处理代码,那么会自动调用该属性指定的JSP页面;
(4)、pageEncoding:指定生成网页的编码字符集;
(5)、import:用于导入包。下面几个包是默认自动导入的,不需要显示导入。默认导入的包有:java.lang.*、javax.servlet.*、javax.servlet.jsp.*、javax.servlet..*;
2、include指令:
语法格式为:%@includefile=要包含的页面路径%
jsp中有两种包含模式,一种是%@includefile=要包含的页面路径%,这种叫静态包含;
另一种是jsp:includepage=要包含的页面路径/,这叫做动态包含。
静态包含是直接把要包含的页面原样嵌入总的页面后再统一编译,而动态包含总的页面和要嵌入的页面是分开编译的。
jsp是建议但凡*.jsp的页面如果要被另一个页面包含,那么应该用jsp:include...动态包含,如果只是html或者是一段文本,那么用动态包含和静态包含都可以。因此原那么上我们都倾向于使用jsp:include动态包含。
7个动作指令
动作指令和编译指令不同,编译指令是通知Servlet引擎的处理消息,而动作指令只是运行时的动作。
编译指令在将JSP编译成Servlet时起作用;而处理指令通常可替换成JSP脚本,它只是JSP脚本的标准化写法。
JSP动作指令主要有如下的7个:
jsp:forward:执行页面转向,将请求的处理转发到下一个页面。
jsp:param:用于传递参数,必须与其他支持参数的标签一起使用。
jsp:include:用于动态引入一个JSP页面。
jsp:plugin:用于下载JavaBean或Applet到客户端执行。
jsp:useBean:创立一个JavaBean的实例。
jsp:setProperty:设置JavaBean实例的属性值。
jsp:getProperty:输出JavaBean实例的属性值
一、jsp:forward指令
jsp:forward指令用于将页面响应转发到另外的页面。既可以转发到静态的HTML页面,也可以转发到动态的JSP页面,或者转发到容器中的Servlet中。
jsp:forward指令的语法格式:
jsp:forwardpage=path%expression%
jsp:paramname=value=/