JSTL与EL表达式

内容纲要

EL表达式

EL(Expression Language)表达式语言,用于简化JSP的输出
EL表达式的基本语法: ${表达式}
示例: 学生姓名: ${student.name}

===================================
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    Student student = new Student();
    student.setName("于末");
    student.setMobile("13115353");
    String grade = "A";
    request.setAttribute("student",student);
    request.setAttribute("grade",grade);
    request.getRequestDispatcher("/info.jsp").forward(request,response);
    }
==================================
<h1>姓名:${requestScope.student.name }</h1>
<h1>电话:${requestScope.student.mobile }</h1>
<h2>评级:${requestScope.grade }</h2>
//requestScope----el表达式的作用域对象,说明了后面的对象是从哪个作用域取值

作用域对象

作用域对象 描述
pageScope 从当前页面取值
requestScope 从当前请求中获取属性值
sessionScope 从当前会话中获取属性值
applicationScope 从当前应用获取全局属性值
  • 忽略书写作用域对象时,el则按作用域从大到小依次尝试获取
<h1>姓名:${student.name }</h1>
<h1>电话:${student.mobile }</h1>
<h2>评级:${grade }</h2>

EL表达式输出

  • 语法: ${[作用域.]属性名[.子属性]}
  • EL表达式支持将运算结果进行输出
  • EL支持绝大多数对象输出,本质是执行toString()方法

EL输出参数值

  • EL表达式内置param对象来简化参数的输出
  • 语法:${param.参数名}

JSTL标签库

  • JSTL (JSP Standard Tag Library) ,JSP标准标签库
  • JSTL用于简化JSP开发,提高代码的可读性与可维护性
  • JSTL由SUN (Oracle) 定义规范,由Apache Tomcat团队实现

下载

作用域对象 描述
taglibs-standard-spec-1.2.5jar 标签库定义包(必须)
taglibs-standard-impl-1.2.5.jar 标签库实现包(必须)
taglibs-standard-jstlel-1.2.5.jar el表达式支持包(备选)
taglibs-standard-compat-1.2.5.jar 1.0版本兼容包(备选)

安装

  • 将Jar文件复制到工程的WEB-INF/lib目录(推荐)
  • 将Jar文件复制到Tomcat安装目录的lib目录

JSTL的标签库种类

  • JSTL按功能划分可分为五类标签库
    • 核心标签库 - core
    • 格式化输出标签库 - fmt
    • SQL操作系统标签库 - sql
    • XML操作标签库 - xml
    • 函数标签库 - functions

引用JSPL核心库

  • 核心标签库(Core)是JSTL最重要的标签库,提供了JSTL的基础功能
  • < %@ taglib prefix="c" uri= "http://java.sun.com/jsp/jstl/core" %>
  • JSTL核心标签库在taglibs-standard-impl.jar由META-INF/c.tld定义

判断标签

  • JSTL核心库提供了两组判断的标签
  • -单分支判断
<h1>${score }</h1>
<c:if test="${score >= 60 }">
    <h1 style = "color:green">及格</h1>
</c:if>
<c:if test="${score < 60 }">
    <h1 style = "color:red">不及格</h1>
</c:if>
  • -多分支判断
<!--  choose when otherwise -->
<c:choose>
    <c:when test="${grade == 'A' }">
        <h2>优秀</h2>
    </c:when>
    <c:when test="${grade == 'B' }">
        <h2>良好</h2>
    </c:when>
    <c:when test="${grade == 'C' }">
        <h2>及格</h2>
    </c:when>
    <c:otherwise>
        <h2>不及格</h2>
    </c:otherwise>
</c:choose>

集合遍历

  • 标签用于遍历集合(Collection) 中的每-个对象
<!-- forEach标签用于遍历集合
    List companies = (List)request . getAttribute(" companies");
    for(Company C : companies){
        out. print("...");
    }
-->
<c:forEach items = "${companies }" var = "c" varStatus = "idx">
    <h2>${idx.index+1}.${c.name }-${c.url }</h2>
</c:forEach>

fmt格式化标签库

  • fmt格式化标签库URI:http://java.sun.com/jsp/jstl/fmt
  • < fmt:formatDate value = "" pattern = "">格式化日期标签
<!-- formatDate pattern
    yyyy - 四位年
    MM - 两位月
    dd - 两位日
    HH - 24小时制
    hh - 25小时制
    mm - 分钟
    ss - 秒
    SSS - 毫秒
 -->
 <h2>${now } </h2>
<fmt:formatDate value="${now }" pattern = "yyyy年 MM月 dd日 HH:mm:ss:SSS"/>
  • < fmt:formatNumber value = "" pattern = ">格式化数字标签
<h2>${amt } </h2>
<h2>¥<fmt:formatNumber value = "${amt }"  pattern = "0,000.00"></fmt:formatNumber>元</h2>
======================================
<h2>null默认值:<c:out value="${nothing }" default="无"></c:out></h2>//将null转译成我们需要的
<h2><c:out value="${html }" escapeXml="true"></c:out></h2>//不转译html代码
THE END
分享
二维码
< <上一篇
下一篇>>