黑马程序员技术交流社区

标题: 【石家庄校区】就业班_JavaEE_day18_EL_JSTL [打印本页]

作者: 风中的消逝    时间: 2018-5-21 15:49
标题: 【石家庄校区】就业班_JavaEE_day18_EL_JSTL
本帖最后由 小石姐姐 于 2018-6-7 10:31 编辑

就业班_JavaEE_day18_EL_JSTL
el表达式
    一 概述
        用来替换<%=…%> ; 格式:${…}   ; EL不显示null ;  
     
    二 el表达式作用
        1. 获取4个域中的值
        ${pageContext.xxx}  ${requestContext.xxx}  ${sessionContext.xxx}  ${applicationContext.xxx}  
        ${xxx} 全域查找,一般用这个。
        以什么名字存 就以什么名字取 存的什么类型 取的就是什么类型。
        
        2 运算操作
        ${ + - * / %}
        ${ > >= < <= == != }   gt  ge  lt le eq  
        ${ && || ! }   and  or  not
        empty  not empty
        
        3 操作web对象(11个)
            pageScope           ${pageScope.name}等同与pageContext.getAttribute(“name”)
            requestScope       ${requestScope.name}等同与request.getAttribute(“name”)
            sessionScope        ${sessionScope.name}等同与session.getAttribute(“name”)
            applicationScope  ${applicationScope.name}等同与application.getAttribute(“name”)
            
            param;               ${param.name}与request.getParameter("name")方法相同
            paramValues;     ${paramValues.name}与request.getParameterValues("name")方法相同 返回的是数组
            header;              ${header.name}与request.getHeader("name")
            headerValues;    ${headerValues.name}与request.getHeaders("name")
            initParam;          对应web.xml文件中的<context-param>
            cookie;               Map<String,Cookie>类型,其中key是Cookie的名字,而值是Cookie对象本身。
            pageContext;    可以通过pageContext得到其它对象。
            
            实际:
            ${cookie.xxx.value} 取xxxcookie的value
            ${pageContext.request.contextPath}  取项目名称

    三 表达式格式
        *操作List和数组:${list[0]}、${arr[0]};
        *操作bean的属性:${person.name}、${person[‘name’]},对应person.getName()方法;
        *操作Map的值:${map.key}、${map[‘key’]},对应map.get(key)。
        
    四 EL函数库
        <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
        ${fn:length(arr) } 主要是一些操作字符串和数组集合的方法。
        
   
        
jstl
    一概述
    JSTL依赖EL ; JSTL是标签语言 ; 不是JSP内置的标签,需要我们自己导包;

    二 核心标签库
        <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
   
        1 url  输出url地址,会带上项目名并且会根据需要对参数中的中文进行URI编码
        <c:url value="/AServlet">
            <c:param name="username" value="abc"/>
            <c:param name="password" value="123"/>
        </c:url>
        2 if
        <c:if test="${not empty a}">  判断a变量不为null,没有指定域,表示全域
            <c:out value="${a }"/>
        </c:if>
        3 choose  相当于if elseif  else
        <c:choose>
            <c:when test="${score > 100 || score < 0}"> 错误的分数:${score }</c:when>
            <c:when test="${score >= 90 }"> A级 </c:when>
            <c:when test="${score >= 80 }">B级</c:when>
            <c:when test="${score >= 70 }">C级</c:when>
            <c:when test="${score >= 60 }">D级</c:when>
            <c:otherwise>E级</c:otherwise>
        </c:choose>
        4 forEach
            <c:forEach var="i" begin="1" end="10">   设置循环变量i,初始值为1,遍历到10。
                <c:set var="sum" value="${sum + i}" /> 设置sum的值为sum + i
            </c:forEach>
            遍历集合或者数组
            <c:forEach var="item" items="${ns }">
                <c:out value="${item }"/>
            </c:forEach>
            遍历Map
            <c:forEach var="item" items="${stu }">
                <c:out value="${item.key }: ${item.value }"/><br/>
            </c:forEach>
            varStatus属性
            <c:forEach var="item" items="${ns }" varStatus="vs">       把循环状态赋给vs
                <c:if test="${vs.first }">第一行:</c:if>    [如果是第一行,那么${vs.first}为true]
                <c:if test="${vs.last }">最后一行:</c:if>  [如果是最后一行,那么${vs.last}为true]
                <c:out value="第${vs.count }行: "/>         [返回行数,从1开始]
                <c:out value="[${vs.index }]: "/>              [返回行数,从0开始]
            </c:forEach>
        注意 遍历集合时items="${ns }" }后面不要有空格。
    四 格式化标签库
        <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
        格式化时间
        <fmt:formatDate value="${d }" pattern="yyyy-MM-dd HH:mm:ss"/>
        格式化数字
        <fmt:formatNumber value="${d1 }" pattern="0.00" />
         保留两位小数,如果大于两位,四舍五入,如果小于两位,那么使用0补足两位。
       <fmt:formatNumber value="${d2 }" pattern="#.##" />
         最多显示两位,如果小于两位,那么有几位保留几位,不会用0补足。大于两位,只保留两位,并四舍五入.






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2