一.JSP指令
1.简介
为JSP引擎而设计,不产生可见输出,告诉引擎如何处理JSP页面中的其余部分
基本语法:
<%@ 指令 属性名="值" %> (注意:属性名部分是大小写敏感的)
配置一个指令的多个属性时,可以分开成多条,也可以写成一条
有page、include和taglib这三种指令
2.page指令
page指令用于定义JSP页面的各种属性,它作用于整个JSP页面,一般是放在整个JSP页面的起始位置
<%@ page
[ language="java" ] //指定语言,但是唯一合法值只有“java”
[ extends="package.class" ]
[ import="{package.class | package.*}, ..." ] //导包
[ session="true | false" ] //当前JSP是否允许使用session,session隐藏对象在该jsp中不能被使用,即指定是否生产HttpSession对象
[ buffer="none | 8kb | sizekb" ] //
[ autoFlush="true | false" ]
[ isThreadSafe="true | false" ]
[ info="text" ]
[ errorPage="relative_url" ] //指定当前页面出现错误时的实际响应页面
[ isErrorPage="true | false" ] //指定该page为错误页面,可以使用exception隐藏对象
[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]//指定页面响应类型,JSP取值均为text/html;charset=utf-8
[ pageEncoding="characterSet | ISO-8859-1" ]//页面编码,通常与contentType中charset值一致
[ isELIgnored="true | false" ]//指定是否可以使用EL表达式
%>
errorPage和isErrorPage属性其他说明:
errorPage属性的设置值必须使用相对路径,如果以“/”开头,表示相对于当前WEB应用程序的根目录(注意不是站点根目录),否则,表示相对于当前页面。
可以在web.xml文件中使用<error-page>元素为整个WEB应用程序设置错误处理页面,其中的<exception-type>子元素指定异常类的完全限定名,
<location>元素指定以“/”开头的错误处理页面的路径。如果设置了某个JSP页面的errorPage属性,那么在web.xml文件中设置的错误处理将不对该页面起作用。
isErrorPage:指定当前页面是否为错误处理页面,若true,则可使用exception隐藏变量;注意若设置了true并且使用了exception的方法,那么一般不能直接访问该页面
3.include指令
include指令用于通知JSP引擎在翻译当前JSP页面时将其他文件中的内容合并进当前JSP页面转换成的Servlet源文件中,这种在源文件级别进行引入的方式称之为静态引入,
当前JSP页面与静态引入的页面紧密结合为一个Servlet,即最终只生成一个xxx_jsp.java文件。
<%@ include file="relativeURL"%> //file属性用于指定被引入文件的相对路径,以“/”开头,表示相对于当前WEB应用程序的根目录,否则,表示相对于当前文件
具体说明:
(1)被引入的文件必须遵循JSP语法;
(2)被引入的文件可以使用任意的扩展名,即使其扩展名是html,JSP引擎也会按照处理jsp页面的方式处理它里面的内容,为了见明知意,JSP规范建议使用.jspf(JSP fragments)
作为静态引入文件的扩展名;
(3)将JSP文件翻译成Servlet源文件时,JSP引擎将合并被引入的文件与当前JSP页面中的指令元素(设置pageEncoding属性的page指令除外),所以,除了import和pageEncoding
属性之外,page指令的其他属性不能在这两个页面中有不同的设置值;
(4)除了指令元素之外,被引入的文件中的其他元素都被转换成相应的Java源代码,然后插入进当前JSP页面所翻译成的Servlet源文件中,插入位置与include指令在当前JSP页面中的位置保持一致
(5)引入文件与被引入文件是在被JSP引擎翻译成Servlet的过程中进行合并,而不是先合并源文件后再对合并的结果进行翻译
4.taglib指令
等学习完标签后再补上
二.JSP标签
JSP还提供了一种称之为Action的元素,在JSP页面中使用Action元素可以完成各种通用的JSP页面功能,Action元素采用XML元素的语法格式,即每个Action元素在JSP页面中都以XML标签的形式出现,
标签名都以jsp作为前缀,并且全部采用小写,例如,<jsp:include>、<jsp:forward>
1.<jsp:include>标签
用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入;此时生成了两个xxx_jsp.java,通过方法将被包含页面包含尽量
<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />
//page属性用于指定被引入资源的相对路径
//flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端
静态引入和动态引入的区别:
1.<jsp:include>标签是在当前JSP页面的执行期间插入被引入资源的输出内容,当前JSP页面与被动态引入的资源是两个彼此独立的执行实体,被动态引入的资源必须是一个能独立
被WEB容器调用和执行的资源。include指令只能引入遵循JSP格式的文件,被引入文件与当前JSP文件共同合被翻译成一个Servlet的源文件;
2.<jsp:include>标签对JSP引擎翻译JSP页面的过程不起作用,它是在JSP页面的执行期间才被调用,因此不会影响两个页面的编译。由于include指令是在JSP引擎翻译JSP页面的
过程中被解释处理的,所以它对JSP引擎翻译JSP页面的过程起作用,如果多个JSP页面中都要用到一些相同的声明,那么就可以把这些声明语句放在一个单独的文件中编写,然后在
每个JSP页面中使用include指令将那个文件包含进来
3.<jsp:include>标签可以通过<jsp:param>标签传参
2.<jsp:forward>标签
用于把请求转发给另外一个资源,类似于request.getRequestDispatcher("relativeURL ").forward(request, response);
<jsp:forward page="relativeURL | <%=expression%>" /> //page属性用于指定请求转发到的资源的相对路径
区别:
1.RequestDispatcher.forward方法的JSP脚本代码的前后不能有JSP模版内容,而<jsp:forward>标签前后都可以有
2.可以通过<jsp:param>标签传参,而RequestDispatcher.forward方法则不可以
3.<jsp:param>标签
在<jsp:include>和<jsp:forward>标签中可以使用多个<jsp:param>标签来传递多个参数,name:参数名,value:参数值