【18】JSTL标签库

JSTL标签库

全称JavaServer Pages Standard Tag Library,目的是提供一套标准通用的标签函数库,和EL一起取代JSP中嵌套java代码的做法。

一、安装

  • JSTL主要是由Apache组织的Jakarta Project实现,JSTL1.1要求容器必须支持Servlet2.4且JSP2.0以上版本。
  • 复制jstl.jar和standard.jar到工程的WEB-INF\lib下即可
  • 默认新建WEB Project会自动安装

二、引入

1.引入方式

使用taglib指令引入JSTL标签库文件

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

2.标签库组成

  • 核心标签库 (Core tag library)
  • 国际化标签 (I18N—capable formatting tag library)
  • 数据库标签(SQL tag library)
  • XML标签(XML tag library)
  • JSTL函数标签(Functions tag library)–EL函数

三、语法

1.标签

  • 功能:遍历数组和集合
  • 属性
    • items    指定要遍历的集合对象或数组
    • var   将迭代的元素保存到PageContext域中的属性名称
    • varStatus   记录用于迭代的信息
      • count总共指到的成员个数
      • index现在指到的成员的索引
      • first现在指到的成员是否是第一个成员
      • last现在指到的成员是否是最后一个成员
    • begin  从指定的索引值开始遍历
    • end  从指定的索引值结束遍历
    • step  指定步长
  • 遍历ArrayList
<%--创建一个List --%>
<%
ArrayList<String> list= new ArrayList<String>();
list.add("Google");
list.add("Microsoft");
list.add("Apple");
pageContext.setAttribute("companies",list);
 %>
<%--遍历List --%>
<c:forEach var="company" items="${companies}" varStatus="status">
${status.count}
${company}
<br />
</c:forEach>
  • 遍历HashMap
<%--创建一个Map --%>
        <%
            HashMap<String, String> map = new HashMap<String, String>();
            map.put("Java", "面向对象");
            map.put("C", "面向过程");
            map.put("JS", "基于对象");
            application.setAttribute("languages", map);
        %>
        <%--遍历Map --%>
        <c:forEach items="${languages}" var="entry">
            ${entry.key}:${entry.value}<br />
        </c:forEach>

2.标签

  • 功能:根据用户是否存在显示不同的页面
  • 属性
    • test  要判断的条件表达式
    • var  指定执行结果要保存到web域中的属性名称
    • scope  指定执行结果要保存到的web域
  • 案例:判断是否为Firefox浏览器
<% String brower = request.getHeader("user-agent"); if(brower.indexOf("Firefox")!=-1){ brower="Firefox"; }else if (brower.indexOf("Chrome") != -1) { brower = "Chrome"; } pageContext.setAttribute("brower",brower); %>
<br />

<c:if test="${brower eq 'Firefox'}">
    这是火狐浏览器
</c:if>

3.标签

  • 功能:条件选择,与和一起使用,类似于“if-else if-else”
  • 案例:上一个案例的增强版
<c:choose>
    <c:when test="${brower=='Firefox'}">
这是火狐浏览器
    </c:when>
    <c:when test="${brower=='Chrome'}">
这是谷歌浏览器
    </c:when>
    <c:otherwise>
这是其它浏览器
    </c:otherwise>
</c:choose>

4.标签

  • 功能:向页面输出数据,能将特殊字符转为实体字符,防止来自用户输入的攻击
  • 属性
    • value  指定要输出的内容
    • escapeXml  是否要对特殊字符进行HTML编码,默认true
    • default  value为null时的输出内容
  • 案例
<c:out value="${user}" default="没有这个属性" escapeXml="true"></c:out>

你可能感兴趣的:(jsp,servlet,javaweb,jstl)