JSTL&EL

Posted Observer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSTL&EL相关的知识,希望对你有一定的参考价值。

1.EL:

Expression Language,可以很方便地获取各种参数:

${参数名}

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>//不同版本的tomcat是否默认开启对EL表达式的支持,是不一定的,加这一句保险些
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
    <%
        request.setAttribute("name","god");
        session.setAttribute("name","session");
        application.setAttribute("name","apply");
        pageContext.setAttribute("name","page");
        Cookie c = new Cookie("cookie","cool");
        response.addCookie(c);
    //EL会按照从小到大的优先级顺序获取 
    //${name}
    //pageContext>request>session>application
    %>
    ${requestScope.name }
    ${sessionScope.name }
    ${applicationScope.name }
    ${pageScope.name }
    <%--获取cookie名称(键)--%>
    ${cookie.cookie.name }
    <%--获取cookie值 --%>
    ${cookie.cookie.value }
    <%--获取request传过来的值--%>
    ${param.hero }
    <%--获取web根路径--%>
    ${pageContext.request.contextPath }
    <%--空判断--%>
    ${empty name };
    <%--equals判断--%>
    ${name eq \'god\' }
</body>
</html>

EL表达式能够很方便的获取对象的属性,像这样 ${hero.name} ,就会自动调用getName方法了。

EL也可以使用三目运算符:

${product.is_hot==1 ?"是":"否"}

2.JSTL:

JSTL JSP Standard Tag Library 标准标签库 
JSTL允许开人员可以像使用HTML标签 那样在JSP中开发Java功能。 
JSTL库有core, i18n, fmt, sql 等等。 
i18n和sql用的很少,core和fmt在工作中会用到

常用语法:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 首先要导入标签库

<c:set var="name" value="${\'gareen\'}" scope="request" />

在作用域request中设置name,相当于<%request.setAttribute("name","gareen")%>

<c:out value="${name}" />

相当于 <%=request.getAttribute("name")%>

<c:remove var="name" scope="request" />

在作用域request中删掉name,相当于<%request.removeAttribute("name")%>

作用域可以是pageContext, request, session, application

if else: JSTL中没有else标签,但我们可以使用!来获得相同效果

<c:if test="布尔值"></c:if>,结合EL来使用

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 
<c:set var="hp" value="${10}" scope="request" />
 
<c:if test="${hp<5}">
    <p>这个英雄要挂了</p>
</c:if>
 
<c:if test="${!(hp<5)}">
    <p>这个英雄觉得自己还可以再抢救抢救</p>
</c:if>
 
<%
    pageContext.setAttribute("weapon", null);
    pageContext.setAttribute("lastwords", "");
    pageContext.setAttribute("items", new ArrayList());
%>
 
<c:if test="${empty weapon}">
    <p>没有装备武器</p>
</c:if>
<c:if test="${empty lastwords}">
    <p>挂了也没有遗言</p>
</c:if>
<c:if test="${empty items}">
    <p>物品栏为空</p>
</c:if>

<c:forEach></c:forEach> 增强型for循环

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false" import="java.util.*" import="bean.User"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<%
    List<User> ulist = new ArrayList<User>();
    User u1 = new User("张三","123",20,"");
    User u2 = new User("李四","123",22,"");
    User u3 = new User("王五","123",18,"");
    ulist.add(u1);
    ulist.add(u2);
    ulist.add(u3);
    request.setAttribute("ulist",ulist);
%>
<table border="1px">
    <c:forEach items="${ulist }" var="user" varStatus="st">//要遍历的对象 形参 遍历状态
            <tr>
                <td><c:out value="${st.count}" /></td>//获取遍历的位次
                <td><c:out value="${user.uname}" /></td>
                <td><c:out value="${user.pwd}" /></td>
                <td><c:out value="${user.sex}" /></td>
                <td><c:out value="${user.age}" /></td>
                </tr>
    </c:forEach>
</table>
</body>
</html>

循环一定次数并输出数字:<c:forEach  var="s" begin="1" end="10">${s}</c:forEach>

format格式化:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix=\'fmt\' %> 导入标签库

格式化小数:

<fmt:formatNumber type="number" value="${money}" minFractionDigits="2"/>

fmt:formatNumber 表示格式化数字
minFractionDigits 小数点至少要有的位数
maxFractionDigits 小数点最多能有的位数

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
     
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix=\'fmt\' %> 
 
<c:set var="money" value="888.8" />
<c:set var="pi" value="3.1415926" />
最少两个小数点:
<fmt:formatNumber type="number" value="${money}" minFractionDigits="2"/>
<br>
最多两个小数点:
<fmt:formatNumber type="number" value="${pi}" maxFractionDigits="2" />

格式化日期:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
     
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix=\'fmt\' %> 
 
<%
    Date now = new Date();
    pageContext.setAttribute("now",now);
%>
 
完整日期: <fmt:formatDate value="${now}" pattern="G yyyy年MM月dd日 E"/><br>
完整时间: <fmt:formatDate value="${now}" pattern="a HH:mm:ss.S z"/><br>
常见格式: <fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss"/>

 

以上是关于JSTL&EL的主要内容,如果未能解决你的问题,请参考以下文章

JSTL&EL

jsp&el&jstl

JSTL&EL

EL技术&JSTL技术

JSP MVC EL ——JSTL && 三层架构

JSP MVC EL ——JSTL && 三层架构