EL表达式${ }非常简单,和jsp的表达式是一样的用法,但是要比jsp的表达式<% %>简化很多代码。让整个页面变得整洁。
下面看一些简单的例子:
<body>
输出字符串:${"张三" } <br>
运算符:${3/2}<br>
比较运算符:${3>2 }<br>
逻辑运算符:${1==2||2>3 }<br>
<%request.setAttribute("name","admin");%>
${name }<br>
获得request中对象值:<br>
<%
User user=new User();
user.setId(1);
user.setName("li");
user.setPassword("123");
request.setAttribute("u",user);
%>
${u.name } ${u.id } ${u.password } ${u["name"] }
</body>
输出的结果是:
同时,对于内部类的元素表达可以用${u.p.xxx }
获取List集合中的值,这样写:
<%
User user=new User();
user.setId(1);
user.setName("li");
user.setPassword("123");
User user2=new User();
user2.setId(2);
user2.setName("wa");
user2.setPassword("11123");
List list=new ArrayList();
list.add(user);
list.add(user2);
request.setAttribute("u",user);
request.setAttribute("list",list);
%>
获得request中对象的值
${u.name } ${u.id } ${u.password } ${u["name"] }<br>
获得request中List集合值:
${list[1].name }
关于El的作用域问题:
作用域从小到大:page request session application<br>
EL:pageScope requestScope sessionScope applicationScope<br>
EL要么从小域往大挨个找值,直到找到为止,或指定作用域找值<br>
<%request.setAttribute("age","20");
session.setAttribute("age","22");
%>
${age } ${sessionScope.age }
JSTL:
在建立支持JSTL的web project的时候,我们需要选择J2EE 1.4,点击支持JSTL,才可以建立成功。成功后,lib文件夹下面会有两个jar。
然后在jsp页面上方导入库
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
写一些简单的语句:
<%
//request.setAttribute("name","admin");
%>
赋值标签:
<c:set var="name" value="admin" scope="request">
</c:set>
<c:set var="age" value="${20}" scope="request">
</c:set>
<c:set var="age1" value="${10+10}" scope="request">
</c:set>
输出:
<c:out value="${name}"></c:out>
<br />
EL表达式:${age }
<br />
删除标签:
<c:remove var="name" />
<br />
条件标签:
<c:if test="${age<30}">
青年
</c:if>
<c:if test="${age>=30}">
中年
</c:if>
<br />
<%
User user = new User();
user.setId(1);
user.setName("里斯");
user.setPassword("123");
session.setAttribute("user", user);
%>
<c:if test="${user!=null}">
欢迎:${user.name }
</c:if>
<c:if test="${user==null}">
请登录:用户名:<input type="text" name="name" />密码:<input type="password"
name="pwd" />
</c:if>
<br>
循环(遍历)标签:
<br />
<%
User user1 = new User();
user1.setId(1);
user1.setName("里斯");
user1.setPassword("123");
User user2 = new User();
user2.setId(2);
user2.setName("里斯啊啊");
user2.setPassword("1啊啊23");
List list = new ArrayList();
list.add(user2);
list.add(user1);
request.setAttribute("list", list);
%>
<c:forEach var="u" items="${list}" begin="0" step="1" end="5"
varStatus="i">
${i.index} ${i.count} ${u.id } ${u.name }<br />
</c:forEach>
或者是将最后的forEach嵌套到表哥中:
<table border="2">
<tr>
<td>
编号
</td>
<td>
用户名
</td>
<td>
密码
</td>
</tr>
<c:forEach var="u" items="${list}" begin="0" step="1" end="5"
varStatus="i">
<tr>
<td>
${u.id }
</td>
<td>
${u.name }
</td>
<td>
${u.password }
</td>
</tr>
<!-- index=${i.index} count=${i.count} id=${u.id } name=${u.name } <br /> -->
</c:forEach>
</table>
Map遍历:
<%
Map map=new HashMap();
map.put("a",user1);
map.put("b",user2);
map.put("c",user);
request.setAttribute("map",map);
%>
<c:forEach var="s" items="${map}">
${s.value.id} ${s.value.name } ${s.value.password }<br/>
</c:forEach>
最后提到格式化:
没有什么特别的,按照格式来就行
<%
request.setAttribute("currentTimeStamp",new Date());
%>
${currentTimeStamp }---
<fmt:formatDate pattern="yyyy年MM月dd HH:mm:ss" value="${currentTimeStamp}"/> <br/>
<fmt:formatNumber value="12" type="currency" pattern="$.#"/> <br/>
<fmt:formatNumber value="12" type="currency" pattern="¥.00"/> <br/>
<fmt:formatNumber value="12.035" type="currency" pattern="#0.00元"/> <br/>