指令元素
指令元素位于<%@之后和%>之前,指令元素分为:page、include和taglib三种。
Ø page指令
language:
目前只支持java这一种。
import:
在JSP页面中使用的完整的类和接口名称。
import有两种语法格式,一种是用逗号分隔,如:
<%@page include=”java.util.ArrayList,java.io.*”%>
另一种是重复设置import属性,如:
<%@page import=”java.util.ArrayList”%>
<%@page import=”java.io.*”%>
session:
true或false,默认值为true。
当session设置为true时,相当于JSP转换后的Servlet中调用了request.getSession()。
buffer:
none或sizekb,该属性指定out对象(JspWriter)所使用的缓冲区大小,如果设置为none,将不使用缓冲区,所有输出将通过ServletResponse和PrintWriter对象写出。该属性默认值为8kb。
autoFlush:
true和false,是否自动刷新缓冲区,默认值为true。
isThreadSafe:
该属性用于指定JSP页面的访问是否是线程安全的,如果设置为false,则JSP页面转换后的Servlet将继承SingleThreadModel接口,建议使用默认值true。
info:
设置页面的文字信息,该信息可以通过使用getServletInfo()方法得到。
errorPage:
定义JSP页面发生异常时,将转向哪一个错误处理页面。在web.xml配置文件中,也可以指定错误处理页面。
isErrorPage:
true和false,用于指定该JSP页面是否是错误处理页面。
contentType:
用于设定MIME类型和字符编码。
pageEncoding:
设置字符编码,如果该属性未设置,同时也没有通过contentType设置字符编码,则使用默认值iso-8859-1。
isELIgnored:
true和false,该属性用于定义在JSP页面是否执行或忽略EL表达式,在Servlet2.4及以上版本中该属性的默认值为false。
Ø include指令
该指令的语法格式为:
<%@include file=”relative URL”%>
Ø taglib指令
taglib指令允许页面使用用户定制的标签,taglib指令有uri、tagdir和prefix三个属性。
uri:
可以是绝对或相对的uri,用于定位标签库描述符的位置。
tagdir:
该属性指示前缀(prefix)将被用于标识安装在WEB-INF/tags/目录或其子目录下的标签文件。
prefix:
定义了标签的前缀。
脚本元素
Ø 声明
Ø 脚本段
Ø 表达式
动作元素
Ø <jsp:useBean>、<jsp:setProperty>和<jsp:getProperty>
Ø <jsp:param>
Ø <jsp:include>
Ø <jsp:forward>
Ø <jsp:plugin>、<jsp:params>和<jsp:fallback>
注释
JSP除了支持HTML的注释外,还支持<%– 注释内容 –%>的注释方式,这两者的区别在于后者不会将注释内容发送到客户端。
JSP隐含对象
request
response
pageContext
pageContext提供了获取其它隐含对象的方法,如getRequest()、getResponse()、getSession()、getServletContext()、getOut()、getServletConfig()、getPage()、getException()等。
六个重要的方法:
public abstract void setAttribute(String, Object [, int scope])
public abstract Object getAttribute(String[, int scope])
public abstract Object findAttribute(String[, int scope])
public abstract void removeAttribute(String[, int scope])
public void forward(String)
public void include(String)
scope表示范围属性,有四种。
session
application
out
out对象的类型是javax.servlet.jsp.JspWriter,是java.io.Writer的派生类,以字符流输出数据,是PrintWriter带缓冲的版本。
七个重要的方法:
public abstract void clear() throws IOException
public abstract void clearBuffer() throws IOException
public abstract void close() throws IOException
public abstract void flush() throws IOException
public int getBufferSize()
public abstract int getRemaining()
public boolean isAutoFlush()
config
page
exception
对象的范围
page
request
session
application
JavaBean
JavaBean组件本质就是一个类,它具有以下特性:
1) public类型。
2) 有一个默认的构造方法。
3) 提供get和set方法来获取和设置属性的值。
JSP标准标签库(JSTL)
JSTL规范由SUN公司制定,Apache的Jakarta小组负责实现。JSTL1.1支持Servlet2.4和JSP2.0,JSTL1.0支持Servlet2.3和JSP1.2。
使用JSTL时,需要jstl.jar和standard.jar两个包,在apache官方网站可以下载,网址是:http://www.apache.org/dist/jakarta/taglibs/standard/
它们在jakarta-taglibs-standard-current.zip压缩包中。
JSTL由五个不同的标签库组成:
功能范围 |
URI |
前缀 |
core |
http://java.sun.com/jsp/jstl/core |
c |
I18N |
http://java.sun.com/jsp/jstl/fmt |
fmt |
SQL |
http://java.sun.com/jsp/jstl/sql |
sql |
XML |
http://java.sun.com/jsp/jstl/xml |
x |
Functions |
http://java.sun.com/jsp/jstl/functions |
fn |
JSTL核心标签库
<c:out>标签
没有标签体:
<c:out value=”” default=””escapeXml=”true|false”>
有标签体:
<c:out value=””escapeXml=”true|false”>default value</c:out>
<c:set>标签
方式一:
<c:set var=”username” value=”pbz” scope=”page|request|session|application” />
方式二:
<c:set var=”username” scope=”page|request|session|application”>pbz</c:out>
方式三:
<c:set target=”对象名” property=”属性名” value=”值” />
<c:remove>标签
<c:remove var=”变量名” scope=”page|request|session|application” />
<c:catch>标签
<c:catch var=”exception”>
过程语句
</c:catch>
<c:out value=”${exception.message}” />
<c:if>标签
<c:if test=”表达式,结果为true或false” [var=”保存前面test结果的变量名” scope=”page|request|session|application”]>
过程语句
</c:if>
<c:choose>标签
<c:choose>、<c:when>和<c:otherwise>配合使用,相当于if…else。
<c:forEach>标签
<c:forEach var=”每次循环中的中间对象名” items=”被迭代的集合对象名” [begin=”” end=”” step=”” varStatus=”状态名”]>
<c:out value=”${每次循环中的中间对象名.属性名或键名}” />
</c:forEach>
状态名是迭代标签所产生的一个对象名,它具有以下属性:
count
index
first
last