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/>