Java中的EL和JSTl
一.EL
EL语法
1.以“${”作为开始,以“}”作为结束
直接使用变量名获取值$
${ username }
2.变量属性范围名称
page | pageScope,例如${pageScope.username},表示在page范围内查找username变量,找不到返回Null |
request | requstScope |
session | sessionScope |
application | applicationScope |
3.EL隐式对象
RequestScope的使用:
String name=(String)session.setAttribute("user",user);
在会员登入后将user对象保存到session中
在.jsp使用EL获取是就可以使用
欢迎您:${sessionScope.user.name}
其它作用域对象使用类似
Param的使用:
在一个登陆提交页面提交后,接受的页面可以这样接受参数
用户名:${param.uid}
密码:${param.pass}
Param获取的是单个的参数
Paramvalues的使用:
兴趣爱好:${paramValues.ch[0]},${paramValues.ch[1]},${paramValues.ch[2]}
Paramvalues获取的是一个集合
Pagecontext的使用:
请求的IP:${pageContext.request.remoteAddr}
Pagecontext可以获取到请求里包含的信息
二.JSTL
EL中不存在逻辑处理,JSTL实现JSP页面中逻辑处理,所有两者需要联合使用
在JSTL的使用前需要在网页顶部加入下面内容
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
(可能导入了这句话还是使用不了JSTL,这可能和版本有关,解决办法是在WEB-INFO目录下的lib导入两个jar包,网上可以下,我这里也有我的百度网盘的下载地址链接http://pan.baidu.com/share/link?shareid=64504&uk=909074031)
通用标签其实一般都用的很少,主要使用的还是条件标签和迭代标签
通用标签
Set的使用
<c:set var= "example" value="${100+1}" scope="session" />
Out的使用
<c:out value="${example}"/>
Remove的使用
<c:remove var= "example" scope="session"/>
条件标签
<c:if test="codition" var="name" scope="applicationArea" >
条件符合时执行的代码
</c:if>
Condition是判断的条件
Name是判断条件的结果是true或false
Scope是作用域的范围
如下:
<c:iftest="${user==null}"var="isLogin"></c:if>
判断登陆时是否获取到了user对象的结果,如果为null的话islogin的值为true
迭代标签
<c:forEach items=collection
var="varName" varStatus="vatStatusName" begin="start" end="end" step="count">
…循环体代码…
</forEach>
Items是要遍历的集合对象
Var 集合内数据的名称
Varstatus 指定var成员的信息
案例:
<c:forEachitems="${requestScope.pagelist}"var="news"varStatus="status">
<li>${news.title}<span>时间:${news.publictime}<a href='ManageNewsServlet?type=update&id=${news.newsid}'>修改</a>
</span></li>
每遍历5条数据后就间隔一个<li class='space'></li>
Status.index是当前变量的索引值
<c:iftest="$(status.index%5==0 && status.index>0)">
<liclass='space'></li>
</c:if>
</c:forEach>