指令元素:
JSP指令用来向JSP容器提供编译信息。指令并不向客户端产生任何输出,所有的指令都只在当前页面中有效。
JSP指令元素包括了3种,page指令、include指令、taglib指令。
page指令:
page指令描述了和页面相关的信息,如导入所需类包,指明输出内容类型和控制Session等。page指令一般位于JSP页面的开头部分,一个JSP页面中,page指令可以出现多次,但是每个page指令中每种属性只能出现一次,重复的属性设置将覆盖先前的设置。
属性名 | 说明 |
language | 设置jsp页面使用的脚本语言,目前只能使用java |
import | 指定导入的java软件包或类名列表,若有多个类,中间以逗号隔开 |
isThreadSafe | 指定JSP容器是否使用多线程的方式执行JSP程序,默认为true |
pageEncoding | 指定JSP文件本身的编码方式 |
session | 指定JSP页面是否使用Session |
errorPage | 设定JSP页面发生异常的时重新只想的页面URL,指向的页面要把isErrorPage设为true |
isErrorPage | 设定此JSP页面是否是处理异常错误的页面 |
isELIgnored | 指定JSP页码是否忽略EL表达式,默认为false |
contentType | 指定MIME类型和JSP页面响应时的编码方式,默认为text/html;charset=iso8859-1 |
buffer | 指定输出流是否需要缓冲,默认是8KB,与autoFlush一起使用,确定是否自动刷新缓冲 |
autoFlush | 如果页面缓冲区满时要自动刷新输出,则设置为true,否则,若设置为false,当页面缓冲区要满的时候,要抛出一个异常 |
include指令:
include指令的作用是在页面翻译期间引入另一个文件,被包含的文件可以使JSP,HTML或文本文件。
<%@include file = "test.jsp"%>
include指令包含的过程发生在将JSP翻译成Servlet时,当前JSP被包含的文件会融合形成一个Servlet,然后在进行编译运行。这个过程也被称为静态包含。
taglib指令:
taglib指令用于其他指定JSP页面所使用的标签库,通过该指令可以在JSP页面中使用标签库中的标签。
<%@taglib uri="标签库URI" prefix="标签前缀"%>
之后便可以使用标签前缀使用导入标签库的功能。
动作元素:
在JSP中可以使用XML语法格式的一些特殊标记来控制行为,称为JSP标准动作。利用JSP动作可以试想更多功能,如动态插入文件,调用JavaBean组件,重定向页面和为Java插件生成HTML代码。
<jsp:include>:
其用于在页面运行时引入一个静态或动态的页面,也称为动态包含。当容器把JSP页面翻译成一个Java文件时,并不会把JSP页面中动作指令include指定的文件与原JSP页面合并成为一个新页面,而是告诉Java解释器,这个文件在JSP运行时才会被处理。如果包含的文件时普通的文本文件,就见文件的内容发到客户端,有客户端负责显示,如果包含的文件时JSP文件,JSP容器就执行这个文件,然后将执行结果发送到客户端,有客户端显示这些结果。
<jsp:include>动作可以包含一个或几个<jsp:param>子动作,用于向要引入的页面传递数据。
<jsp:include page="test3.jsp" > <jsp:param value="2" name="a"/> <jsp:param value="2" name="b"/> </jsp:include>
test3.jsp
<% int a = Integer.valueOf(request.getParameter("a")); int b = Integer.valueOf(request.getParameter("b")); out.print(a+b); %>include指令元素对比include动作元素:
共同点:都是用来实现包含文件代码的复用
区别:对包含文件的处理方式和处理时间不同。
include指令元素是在翻译阶段就引入所包含的文件,被处理的文件在逻辑和语法上依赖于当前JSP页面,其优点是页面的执行速度快。
include动作元素是在JSP页面运行时才引入包含文件所产生的应答文本,被包含的文件在逻辑上和语法上独立于当前JSP页面,其优点是可以使用param 子元素更加灵活地处理所需要的文件,缺点是执行速度慢一些。
<jsp:forward>
其用于引导客户端的请求到另一个页面或另一个Servlet。并且可以携带参数。
<jsp:forward page="test2.jsp"> <jsp:param name="name" value="abc"/> </jsp:forward>
<jsp:useBean>
其实JSP中一个非常重要的动作,使用这个动作,JSP可以动态使用JavaBean组件来扩充JSP的功能,由于JavaBean在开发商以及<jsp:useBean>在使用上简单明了,使得JSP与其他动态网页开发技术有了本质的区别。
<jsp:useBean id="name" class="classname" scope="page|request|session|application"/>
或
<jsp:useBean id="name" type="typename" scope="page|request|session|application"/>
id:指的是javabean实例的变量名
class:指定javabean的类名
scope:指定javabean的作用范围
type:指定javabean对象的类型,通常在查找已存在的javabean时使用,这时使用type将不会产生新对象。
<jsp:setProperty>
用于向一个javabean的属性复制
<jsp:setProperty name="beanname" property="propertyname" value="propertyvalue"/>
或
<jsp:setProperty name="beanname" property="propertyname" param="parametername"/>
name:指定javabean对象名
property:指定要赋值的属性名
value:指定要为属性设置的值
param:指定请求中的参数名,并将该参数的值赋给property所指定的属性
<jsp:getProperty>
<jsp:getProperty name="beanname" property="propertyname"/>
name:指定javabean对象名
property:指定javabean中需要访问的属性名
例子:
<jsp:useBean id="person" class="com.javabean.Person" scope="page"/> <jsp:setProperty name="person" property="name" value="zhangsan"/> <jsp:getProperty name="person" property="name"/>
结果:
zhangsan