欢迎大家来到IT世界,在知识的湖畔探索吧!
1.EL表达式
1.1 概念:Expression Language的简称,意为表达式语言,是JSP2.0中引入的一种计算和输出Java对象的简单语言。需Web服务器能够支持Servlet2.4/JSP2.0。
1.2 基本语法:以“${”开头,以”}”结束,中间为合法的表达式。语法格式为${expression}
1.3 EL表达式的禁用
1.3.1 使用”\”符号禁用EL表达式:\${expression}
1.3.2 使用page指令禁用EL表达式:<%@page isELIgnored=”false” %>
1.3.3 在web.xml文件中配置<el-ignored>元素:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
</jsp-property-group>
</jsp-config>
1.4.EL表达式中使用的变量范围前缀
1.5.EL表达式中的隐含对象
1.5.1 pageContext对象:访问JSP内置对象,如request、response、out、session、config、servletContext等。例如,以下语句使用EL表达式获取session中的变量username。
${pageContext.session.username}
1.5.2 param和paramValues对象:param对象用于获取请求参数的值,返回字符串;如果一个参数名对应多个值,则需使用paramValues,返回数组。
例如:
在页面中有一个名为username的文本框
<input type=”text” name=”username” id=”username”/>
使用param获取username文本框的值
${param.username}
或
在页面中有一个名为favor的复选框组
<input type=”checkbox” name=”favor” id=”favor” value=”体育”/>体育
<input type=”checkbox” name=”favor” id=”favor” value=”美术”/>美术
<input type=”checkbox” name=”favor” id=”favor” value=”音乐”/>音乐
使用paramValues获取每一项值
${paramValues.favor[0]} ${paramValues.favor[1]} ${paramValues.favor[2]}
2.JSTP:
2.1 概念:JavaServer Pages Standard Tag Library,JSP标准标签库,为JavaWeb开发人员提供一个标准的、通用的标签库。
2.2 配置JSTL:JSTL下载地址:http://tomcat.apache.org/download-taglibs.cgi。下载taglibs-standard-impl-1.2.5.jar、taglibs-standard-spec-1.2.5.jar、taglibs-standard-jstlel-1.2.5.jar、taglibs-standard-compat-1.2.5.jar,并将jar包复制到项目的WEB-INFO下的lib中。
2.3 JSTL的使用:使用JSTL标签之前必须首先在JSP页面的首行使用<%@ tablib %>指令定义标签库的位置和访问前缀。格式如下:
使用核心标签库:<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core”%>
使用格式标签库:<%@ taglib prefix=”fmt” uri=”http://java.sun.com/jsp/jstl/fmt” %>
使用SQL标签库:<%@ taglib prefix=”sql” uri=”http://java.sun.com/jsp/jstl/sql” %>
使用XML标签库:<%@ taglib prefix=”x” uri=”http://java.sun.com/jsp/jstl/xml” %>
使用函数标签库:<%@ taglib prefix=”fm” uri=”http://java.sun.com/jsp/jstl/functions” %>
2.4 JSTL核心标签库:表达式标签、条件标签、循环标签、URL操作标签
2.4.1 表达式标签:<c:out>、<c:set>、<c:remove>、<c:catch>
(1)<c:out>输出标签:用于将表达式的值输出到JSP页面中,可以替代<%=表达式%>。语法格式如下:
语法一:没有标签体 <c:out value=”expression” [escapeXml=”true|false”] [default=”defaultValue”] />
语法二:有标签体 <c:out value=”expression” [escapeXml=”true|false”] > 标签体 </c:out>
两种格式输出的结果相同。<c:out>标签的属性说明如下:
<c:out>标签的属性说明
属性 |
类型 |
描述 |
使用EL |
value |
Object |
用于指定将要输出的变量或表达式 |
可以 |
escapeXml |
boolean |
用于指定是否转换特殊字符,默认为true,表示转换,如“<”转换为”<“ |
不可以 |
default |
Object |
用于指定当value属性值等于null时,要显示的默认值 |
不可以 |
(2)<c:set>设置标签:在指定范围(page、request、session或application)内定义保存某个值的变量,或为指定的对象设置属性值。语法格式如下:
语法一:在scope指定的范围内将指定的值存储到变量中
<c:set value=”value” var=”name” [scope=”page|request|session|application”]
语法二:在scope指定的范围内将标签主体存储到变量中
<c:set var=”name” [scope=”page|request|session|application”]> 标签主体 </c:set>
语法三:将指定的值存储在target属性指定的目标对象的propName属性中
<c:set value=”value” target=”object” property=”propName” />
语法四:将标签主体存储在target属性指定的目标对象的propName属性中
<c:set target=”object” property=”propName”> 标签主体 </c:set>
<c:set>标签的属性说明
属性 |
类型 |
描述 |
使用EL |
value |
Object |
指定变量值 |
可以 |
var |
String |
指定变量名 |
不可以 |
target |
Object |
指定存储变量值或标签主体的目标对象,可以是JavaBean或Map集合对象 |
可以 |
property |
String |
指定目标对象存储数据的属性名 |
可以 |
scope |
String |
指定变量的作用域,默认为page |
不可以 |
(3)<c:remove>移除标签:从指定的JSP范围内移除指定的变量。语法格式如下:
<c:remove var=”name” [scope=”page|request|session|application”]
<c:remove>标签的属性说明
属性 |
类型 |
描述 |
使用EL |
var |
指定要移除的变量名 |
||
scope |
指定变量的存在范围 |
||
(4)<c:catch>捕获异常标签:捕获程序出现的异常;将异常信息保存在变量中。语法如下:
<c:catch [var=”exception”]> 可能存在异常的代码 </c:catch>
2.4.2 条件标签:<c:if>、<c:choose>、<c:when>、<c:otherwise>
(1)<c:if>标签:根据不同条件处理不同业务。语法格式如下:
<c:if test=”condition” var=”name” [scope=”page|request|session|application”]
标签主体
</c:if>
<c:if>标签的属性说明
属性 |
类型 |
描述 |
使用EL |
test |
boolean |
必选属性,指定条件表达式 |
可以 |
var |
String |
可选属性,指定变量名,保存test属性的判断结果 |
不可以 |
scope |
String |
变量的存在范围 |
不可以 |
(2)<c:choose>、<c:when>和<c:otherwise>标签:<c:choose>标签可根据不同条件完成不同的业务逻辑,如没有符合条件,则执行默认条件的业务逻辑。<c:choose>标签只能作为<c:when>和<c:otherwise>的父标签。这3个标签的语法格式如下:
<c:choose>
<c:when test=”condition”>
业务逻辑
</c:when>
…… 多个<c:when>
<c:otherwise>
业务逻辑
</c:otherwise> 一个<c:choose>只能有一个<c:otherwise>
</c:choose>
2.4.3 循环标签: <c:forEach>、<c:forTokens>
(1)<c:forEach>标签:根据循环条件遍历数组和集合类中的所有或部分数据。语法格式如下:
语法一:数字索引迭代
<c:forEach begin=”start” end=”finish” [var=”name”] [varStatus=”statusName”] [step=”step”]> 标签主体 </c:forEach>
语法二:结合成员迭代
<c:forEach items=”data” [var=”name”] [begin=”start”] [end=”finish”] [step=”step”] [varStatus=”statusName”]> 标签主体 </forEach>
<c:forEach>标签的属性说明
属性 |
类型 |
描述 |
使用EL |
items |
数组、集合、字符串、枚举 |
被循环遍历的对象,多用于数组和集合类 |
可以 |
var |
String |
循环体的变量,存储items指定的对象的成员 |
不可以 |
begin |
int |
循环的起始位置 |
可以 |
end |
int |
循环的终止位置 |
可以 |
step |
int |
循环的步长 |
可以 |
varStatus |
String |
循环的状态信息,见下表 |
不可以 |
(2)<c:forTokens>标签:用指定的分隔符将一个字符串分割,根据分割的数量确定循环次数。语法格式如下:
<c:forTokens items=”String” delims=”char” [var=”name”] [begin=”start”] [end=”end”] [step=”step”] [varStatus=”statusName”]>
标签主体
</forTokens>
<c:forTokens>标签的属性说明
属性 |
类型 |
描述 |
使用EL |
items |
String |
被遍历的对象,多用于数组和集合类 |
可以 |
delims |
String |
字符串的分割字符,可同时有个分割字符 |
不可以 |
var |
String |
变量的名称 |
不可以 |
begin |
int |
循环的起始位置 |
可以 |
end |
int |
循环的终止位置 |
可以 |
step |
int |
循环的步长 |
可以 |
varStatus |
String |
循环的状态变量 |
不可以 |
2.4.4 URL操作标签:<c:import>、<c:redirect>、<c:url>、<c:param>
(1)<c:import>文件导入标签:导入站内或其他网站的静态和动态文件到Web页面中。语法格式如下:
语法一:<c:import url=”url” [context=”context”] [var=”name”] [scope=”page|request|session|application”] [charEncoding=”encoding”]>
标签主体
</c:import>
语法二:<c:import url=”url” varReader=”name” [context=”context”] [scope=”page|request|session|application”] [charEncoding=”encoding”] />
<c:import>标签的属性说明
属性 |
类型 |
描述 |
使用EL |
url |
String |
被导入的文件资源的URL路径 |
可以 |
context |
String |
上下文路径,用于访同一个服务器的其他Web工程,其值必须以“/”开头;如果指定了该属性,则url属性的值必须以“/”开头 |
可以 |
var |
String |
变量名称,存储获取的资源 |
不可以 |
scope |
String |
变量的存在范围 |
不可以 |
varReader |
String |
以Reader类型存储被包含文件的内容 |
不可以 |
charEncoding |
String |
被导入文件的编码格式 |
可以 |
(2)<c:redirect>重定向标签:将客户端发出的request请求重定向到指定的URL服务端,期间可对请求中的属性进行添加或修改。语法格式如下:
语法一:<c:redirect url=”url” [context=”context”] />
语法二:<c:redirect url=”url” [context=”context”]> <c:param name=”” value=”” /> …多个<c:param> </c:redirect>
<c:redirect>标签的属性说明
属性 |
类型 |
描述 |
使用EL |
url |
带定向资源的URL |
可以 |
|
context |
上下文路径,用于访问同一个服务器的其他Web工程,其值必须以“/”开头;如果指定了该属性,则URL属性值必须以“/”开头 |
不可以 |
(3)<c:url>生成URL地址标签:生成一个URL路径的字符串,该字符串可用于HTML的<a>标记超链接,或者使用该URL字符串进行页面重定向等。语法格式如下:
语法一:<c:url value=”url” [var=”name”] [scope=”page|request|session|application”] [context=”context”] />
语法二:<c:url value=”url” [var=”name”] [scope=”page|request|session|application”] [context=”context”] > <c:param name=”” value=”” /> </c:url>
<c:url>标签的属性说明
属性 |
类型 |
描述 |
使用EL |
value |
String |
要处理的URL地址 |
可以 |
context |
String |
上下文路径,用于访问同一个服务器的其他Web工程,其值必须以“/”开头;如果指定了该属性,则URL属性值必须以“/”开头 |
可以 |
var |
String |
变量名,保存生成的URL字符串 |
不可以 |
scope |
String |
变量的存在范围 |
不可以 |
(4)<c:param>参数传递标签:只用于为其他标签提供参数,可与<c:import>、<c:redirect>、<c:url>组合实现动态定制参数。语法格式如下:
<c:param name=”paramName” value=”paramValue”/>
<c:param>标签的属性说明
属性 |
类型 |
描述 |
使用EL |
name |
参数名 |
可以 |
|
value |
参数值 |
可以 |
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/35357.html