jsp标签和el表达式
(1)什么是jsp标签?
jsp标签类似于html标签(有开始标记,结束标记以及相应的属性),用来代替jsp文件中的java代码。
注:
a.因为直接在jsp文件中写java代码,不利于jsp文件的维护(比如,将包含有java代码的jsp 文件交给美工去修改就很麻烦),所以,sun才制订了jsp标签技术规范。
b.可以将jsp标签看作是一个占位符,容器遇到 jsp标签之后,会依据标签名找到对应的标签类, 然后执行标签类中的java代码。
c.jsp标签的优点:
c1.可以复用代码
c2.利于jsp文件的维护
(2)el表达式是什么?
是一套简单的运算规则,用于给jsp标签的属性 赋值,也可以脱离标签直接使用(输出计算结果)。
(3)el表达式的使用
1)访问bean的属性 (e1.jsp)
方式一
${user.name}
执行过程:
容器依次从pageContext,request,session,application中查找绑订名为"user"的对象(即getAttribute("user")),找到之后,调用该对象的getName方法,然后输出。
注意:
a.对于null,会转换成"",再输出。
b.找不到对象,会输出""。
c,可以使用"pageScope,requestScope, sessionScope,applicationScope"指定查找范围。
方式二
${user["name"]}
注意:
a.[]里面允许出现变量(绑订名)。
b.[]里面允许出现从0开始的下标,用于由于访问数组中的某个元素。
2)进行一些简单的计算,计算结果可以用来给jsp的标签的属性赋值,也可以直接输出。
(e2.jsp)
a.算术运算 "+","-","*","/","%"
注:
"+"号运算,只能求和,不能够连接字符串。
b.关系运算 ">",">=","<","<=","==","!="
c.逻辑运算 "&&","||","!"
d.empty运算 用来判断集合是否为空,或者是否是一个空字符串。
3)获取请求参数值 (e3.jsp)
a. ${param.name}
等价于 request.getParameter("name");
b. ${paramValues.city}
等价于 request.getParameterValues("city");
(4)jstl(java standard tag lib)
1)jstl是什么?
apache提供的一套jsp标签,后来捐献给了sun,sun将其命名为jstl。
2)如何使用jstl?
step1,将jstl相关的jar文件拷贝到 WEB-INF\lib下。
注:
如果是javaee5.0或者以上的版本,则不用拷贝了(javaee5.0包含了jstl.jar)。
step2,使用taglib指令引入要使用的标签。
<%@taglib uri="" prefix=""%>
uri:标签的命名空间。
prefix:命名空间的前缀。
3)jstl核心标签 (a1.jsp)
a. if标签
<c:if test="" var="" scope="">
标签体
</c:if>
用法:
当test属性值为true时,容器会执行标签体的内容(html和java代码)。
test属性一般使用el表达式来进行计算。
var属性:指定一个绑订名称。
scope属性:指定绑订范围("page","request","session","application")
b. choose标签 (a2.jsp)
<c:choose>
<c:when test=""></c:when>
<c:otherwise></c:otherwise>
</c:choose>
用法:
when标签可以出现1次或者多次,表示一个分支条件,当test属性值为true时,执行标签体的内容。otherwise标签可以出现0次或者1次,表示例外。
c. forEach标签 (a3.jsp)
<c:forEach items="" var="" varStatus=""></c:forEach>
用法
forEach标签用来遍历集合或者数组。
items属性:指定要遍历的集合或者数组,一般使用el表达式来赋值。
var属性:指定一个绑订名称,绑订值是集合当中的一个元素(每次从集合当中取一个元素),绑订范围是pageContext。
varStatus属性:指定一个绑订名称,绑订值是一个封装了当前遍历状态的对象,该对象提供了一些方法来返回遍历状态,比如getIndex():返回正在被遍历的元素的下标(从0开始),getCount():返回当前是第几次遍历。