现在的位置: 首页 > 综合 > 正文

EL表达式 & JSTL标签

2014年08月30日 ⁄ 综合 ⁄ 共 3585字 ⁄ 字号 评论关闭

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

 

抱歉!评论已关闭.