简单介绍Sun公司的JSTL标签库的核心标签使用

一、什么是JSTL标签库?


JSP标准标签库(JSP Standard Tag Library)是Java EE网络应用程序开发平台的组成部分。它在JSP规范的基础上,扩充了一个JSP的标签库来完成一些通用任务,比如XML数据处理、条件执行、数据库访问、循环和国际化。
维基百科—JSTL

根据JSTL标签所提供的功能,可以将其分为5个类别。

  • 核心标签
  • 格式化标签
  • SQL标签
  • XML标签
  • JSTL函数


二、为什么要使用JSTL标签?


    由于在Web项目开发的过程中,我们需要通过JSP页面来给用户展示网页的内容。在JSP中,虽然我们能够通过<% %>来写Java代码,但是这是违反了开发规范的,因为这种行为会导致项目的耦合程度变高,不能做到高内聚,低耦合的要求,而且在项目后期需要修改代码的时候就会显得混乱。


三、如何使用JSTL标签?


1.导入相关的jar包

使用Maven的项目:

把以下代码复制到pom.xml中即可导入相关的包

<dependency>
      <groupId>org.glassfish.web</groupId>
      <artifactId>javax.servlet.jsp.jstl</artifactId>
      <version>1.2.2</version>
</dependency>
使用非Maven项目:

参考资料:runoob

    下载jakarta-taglibs-standard-1.1.2.zip 包并解压,将jakarta-taglibs-standard-1.1.2/lib/下的两个jar文件:standard.jarjstl.jar文件拷贝到/WEB-INF/lib/下。点击此处下载
    接下来我们在 web.xml 文件中添加以下配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <jsp-config>
    <taglib>
    <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
    <taglib-location>/WEB-INF/fmt.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
    <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
    <taglib-location>/WEB-INF/c.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
    <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
    <taglib-location>/WEB-INF/sql.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
    <taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
    <taglib-location>/WEB-INF/x.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
    <taglib-location>/WEB-INF/x-rt.tld</taglib-location>
    </taglib>
    </jsp-config>
</web-app>

2.在JSP中使用JSTL标签

    首先需要在到的JSP页面的开头做以下声明:

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

uri可以在包导入到项目后,找到javax.servlet.jsp.jstl-1.2.2.jar下的META-INF文件夹下的c.tld文件中找到<uri></uri>标签找到。

位置示意图

prefix="c"就是设置对象名,当需要用到JSTL标签的时候需要使用该对象名进行调用,属性值可以随意定义。
    最后在 <body></body>范围里面使用相应功能的的标签即可。


四、JSTL核心标签简介

参考资料:Runoob

标签描述
<c:out>用于在JSP中显示数据,就像<%= … >
<c:set>用于保存数据
<c:remove>用于删除数据
<c:catch>用来处理产生错误的异常状况,并且将错误信息储存起来
<c:if>与我们在一般程序中用的if一样
<c:choose>本身只当做<c:when><c:otherwise>的父标签
<c:when><c:choose>的子标签,用来判断条件是否成立
<c:otherwise><c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import>检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:forEach>基础迭代标签,接受多种集合类型
<c:forTokens>根据指定的分隔符来分隔内容并迭代输出
<c:param>用来给包含或重定向的页面传递参数
<c:redirect>重定向至一个新的URL.
<c:url>使用可选的查询参数来创造一个URL



五、JSTL核心标签使用例子


我的例子源码:

<%@page import="top.cheungchingyin.domain.Person"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>

    <title>测试jstl中的核心标签</title>
    <style type="text/css">
        .odd{
            background-color: #FF99FF;
        }
        .even{
            background-color: #FF6633;
        }
        tr:hover{
            background-color: #0000FF;      
        }
    </style>
  </head>

  <body>
  <br>---------------------c:out----------------------------<br>
  <%
    request.setAttribute("data", null);
   %>
  <c:out value="${data }" default="aaa"></c:out><%--当获取的值为空时,如果default有值,则填充default中的值 --%>
  <br>---------------------c:out(可以操作各个域 javaBean Map集合)----------------------------<br>
  <c:set var="abc" value="xxx" scope="page"/><%--在page域里面设置一个名为abc的属性 --%>
  ${abc }

  <%
    Map map = new HashMap();
    request.setAttribute("map", map);
   %>
  <c:set property="dd" value="xxx" target="${map }"/><%--向map集合添加一个属性 --%>
  ${map.dd }

  <%
    Person p = new Person();
    request.setAttribute("p",p);
   %>
   <c:set target="${p }" property="name" value="uuu"/><%--向javaBean设置属性 --%>
   ${p.name }

  <br>---------------------c:catch----------------------------<br>
  <c:catch var="myex"><%--捕抓异常 --%>
    <%
        int x = 1/0;
     %>
  </c:catch>
  ${myex.message }

  <br>---------------------c:if----------------------------<br>
  <c:if test="${user == null }" var="aaa" scope="page"><%--判断user是否等于空,如果是true则显示aaa,var是指把判断的结果生成web属性 --%>
  aaa
  </c:if>
  ${aaa }

  <br>---------------------c:foreach----------------------------<br>
  <%
    List<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");
    request.setAttribute("list", list);
   %>
   <c:forEach items="${list }" var="str"><%--循环语句,把list的内容遍历出来 --%>
    ${str }
   </c:forEach>
   <br><br>
   <c:forEach var="num" begin="0" end="10" step="1"><%--把010遍历出来 --%>
   ${num }
   </c:forEach>

  <br>---------------------c:foreach实现表格间色显示----------------------------<br>
  <%
    list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");
    list.add("ddd");
    list.add("eee");
    list.add("fff");
    list.add("ggg");
    list.add("hhh");
    list.add("iii");
    list.add("jjj");
    list.add("kkk");
    list.add("lll");
    request.setAttribute("list", list);
   %>
   <table border="1" width="20%">
    <c:forEach var="str" items="${list } " varStatus="status">
    <tr class="${status.count%2==0?'even':'odd' }"><%--判断是基数行还是偶数行 --%>
        <td>${str }</td>
    </tr>
    </c:forEach>
  </table>
  <br>---------------------c:url标签----------------------------<br>
  <c:url var="url" value="/xx"/><%--使用url构建就能够直接写uri,项目名称也不用写如/Day11,并不需要补全整个网址,还能够自带cookie是否被禁用检测 --%>
  <a href="${url }">购买</a>
  <a href='<c:url value="/index.jsp"/>'>购买</a><%--这一句和上面两句的功能一样 --%>
  <br>---------------------c:parma标签----------------------------<br>
  <c:url var="url" value='/yy'>
    <c:param name="name" value="中国"></c:param><%--就是在地址栏的后面带上属性如xx.com?name='中国' --%>
  </c:url>
  <a href="${url }">中国</a>
  <br>---------------------c:fortoken标签----------------------------<br>
  <%
    request.setAttribute("abcde", "aa,bb,cc,dd,ee");
   %>
   <c:forTokens var="ss" items="${abcde }" delims=","><%--把"abcde"中存储的 "aa,bb,cc,dd,ee"用逗号分割出来--%>
    ${ss }
   </c:forTokens>
  </body>
</html>

这里写图片描述

执行后的效果图



六、总结


    这篇文章只是很简单地介绍了JSTL的核心标签的使用,如果需要详细的介绍还请阅读Sun公司写的关于JSTL的文档:JSTL文档,如果想查阅某些功能请到Runoob处阅读。如果文章有错漏,还请在文章下方的评论告诉我,或是发送邮件到CheungChingYin@outlook.com,谢谢你的阅读。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值