JavaWeb学习笔记(十七)--JSTL标签库

1. JSTL标签库

  • 核心标签库(本章重点)
  • 国际化标签库(后面讲)
  • 数据库标签(基本不用)
  • XML标签(基本不用)
  • JSTL函数(EL函数,后面讲)

1.1 <c:out>标签

<c:out>标签用于输出一段文本内容到pageContext对象当前保存的“out”引用中。

属性名 是否支持EL 属性类型 属性描述
value true Object 指定要输出的内容
escapeXml true Bollean 定是否将> < & ' "等特殊字符进行HTML编码转换后再进行输出。默认值为true
default true Object 如果value属性值为null,输出default所指定的默认值

举例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  <head>
    <title>c:out标签</title>
  </head>
  <body>
  <strong><c:out value="c:out标签:" /></strong><br>
  <c:out value="${aa}" default="value is null, output default string"/><br>
  <c:out value="<a href='http://www.cnblogs.com/'>博客园</a>" /><br>
  <c:out value="<a href='http://www.cnblogs.com/'>博客园</a>" escapeXml="false"/><br>
  </body>
</html>

转换后的HTML源码:

<html>
  <head>
    <title>c:out标签</title>
  </head>
  <body>
  <strong>c:out标签:</strong><br>
  value is null, output default string<br>
  &lt;a href=&#039;http://www.cnblogs.com/&#039;&gt;博客园&lt;/a&gt;<br>
  <a href='http://www.cnblogs.com/'>博客园</a><br>
  </body>
</html>

运行结果:

1.2<c:set>标签

<c:set>标签用于把某一个对象存在指定的域范围内,或者设置Web域中的java.util.Map类型的属性对象或JavaBean对象的属性。

属性名 是否支持EL 属性类型 属性描述
value true Object 用于指定属性值
var false String 用于指定要设置的属性的名称
scope false String 用于指定属性所在的web域
target true Object 用于指定要设置属性的对象,这个对象必须是JavaBean对象或java.util.Map对象
property true String 用于指定当前要为对象设置属性的名称

举例:

package bean;

public class User {
    private String username;
    private String password;

    public User() {
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
<%@ page import="bean.User" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  <head>
    <title>c:set标签</title>
  </head>
  <body>
  <strong>c:set标签:</strong><br>
  <!-- 设置普通的属性 -->
  <c:set var="data" value="aaaa" scope="request" ></c:set>
  ${data}
  <br>
  <!-- 设置JavaBean的属性 -->
  <%
    User user = new User();
    session.setAttribute("user", user);
  %>

  <c:set target="${user}" property="username" value="zhangsan" />
  <c:set target="${user}" property="password" value="123456" />
  username=${user.username}, password=${user.password}<br>
  <!-- 设置Map的值 -->
  <%
    Map<String, String> map = new HashMap<>();
    request.setAttribute("map", map);
  %>
  <c:set target="${map}" property="aaa" value="111" />
  ${map.aaa}
  </body>
</html>

运行结果:

1.3 <c:remove>标签

<c:remove>标签用于删除各种web域的属性。语法:

<c:remove var="varName" scope="page|request|session|application" />

举例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  <head>
    <title>c:remove标签</title>
  </head>
  <body>
  <strong>c:remove标签:" </strong><br>

  <c:set var="data1" value="aaaa" scope="request"/>
  删除属性前:
  data1=${data1}<br>
  <c:remove var="data1" scope="application" />
  删除属性后:
  data1=${data1}<br>
  </body>
</html>

运行结果:

1.4 <c:catch>标签

<c:catch>标签用于捕获嵌套在标签中内容抛出的异常,语法:

<c:catch var="varName" >
   代码
</c:catch>

var属性用于保存捕获的异常对象,并保存在page域中。

举例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  <head>
    <title>c:catch标签</title>
  </head>
  <body>
  <strong>c:catch标签:" </strong><br>
  <c:catch var="error" >
    <%
      int i = 10 / 0;
    %>
  </c:catch>
  异常:${error} <br>
  异常 error.getMessage: ${error.message}<br>
  异常 error.getCause: ${error.cause}<br>
  异常 error.getStackTrace: ${error.stackTrace}<br>
  </body>
</html>

运行结果:

 

1.5 <c:if>标签

<c:if test=""/>标签可以构造简单的“if-then”结构的条件表达式。

属性名 是否支持EL 属性类型 属性描述
test true Boolean 决定是否处理标签体内容的条件表达式
var false String 用于指定test属性执行结果保存的属性名称
scope false String 用于指定test属性执行结果保存在哪个web域

举例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  <head>
    <title>c:if标签</title>
  </head>
  <body>
  <strong>c:if标签: </strong><br>
  <jsp:useBean id="user" scope="session" class="bean.User">
    <jsp:setProperty name="user" property="username" value="zhangsan" />
    <jsp:setProperty name="user" property="password" value="123" />
  </jsp:useBean>
  <c:if test="${user!=null}">
    欢迎你:${user.username}
  </c:if>
  <c:if test="${user==null}" >
    请登录
  </c:if>
  </body>
</html>

运行结果:

1.6 <c:choose>标签

<c:choose>标签用于指定多个条件选择的组合边界,他必须与<c:when>和<c:otherwise>标签一起使用。使用
<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似"if-else if-else"的复杂条件判断结构。

举例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  <head>
    <title>c:choose标签</title>
  </head>
  <body>
  <strong>c:choose标签: </strong><br>
  <c:set var="sex" value="female"/>
  <c:choose>
    <c:when test='${sex.equals("male")}'>
      性别:男
    </c:when>
    <c:when test='${sex.equals("female")}'>
      性别:女
    </c:when>
    <c:otherwise>
      性别输入不正确
    </c:otherwise>
  </c:choose>
  </body>
</html>

运行结果:

1.7 <c:forEach>标签

<c:forEach>标签用于对一个集合对象中的元素进行循环迭代操作,或者按照指定的次数重复迭代执行标签体中的内容。

属性名 是否支持EL 属性类型 属性描述
var false String 用于指定当前迭代到的元素的属性名称,保存在page域
items true Object 将要迭代的对象
begin true int 如果指定itmes属性,就从结合中的第begin个元素开始进行迭代,迭代到end的索引值结束,begin的索引值从0开始编号;如果没有指定items属性,就冲begin指定的值开始迭代,直到end值时结束
end true int 参见begin属性描述
step true int 指定迭代的步长
varStatus false String 集合的状态信息
属性名 类型 属性描述
begin int 迭代的开始索引
end int 迭代的结束索引
first boolean 是否当前迭代的第一个元素
last boolean 是否当前迭代的最后一个元素
count int 已经迭代的次数
current Object 当前迭代出来的对象
index int 当前迭代的索引
step int 迭代步长

举例:

<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="bean.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
  <head>
    <title>c:forEach标签</title>
  </head>
  <body>
  <strong>c:forEach标签: </strong><br>
  <%
    List<String> list = new ArrayList<>();
    list.add("aa");
    list.add("bb");
    list.add("cc");
    list.add("dd");
    list.add("ee");
    request.setAttribute("list", list);
  %>
  <!-- 指定begin end step属性 -->
  <c:forEach var="str" begin="0" end="4" step="2" items="${list}" varStatus="varStatus" >
    ${str}, begin=${varStatus.begin}, end=${varStatus.end}, count=${varStatus.count}, current=${varStatus.current},
    first=${varStatus.first},last=${varStatus.last}, index=${varStatus.index}, step=${varStatus.step}
    <br>
  </c:forEach>
  <%
    List<User> users = new ArrayList<>();
    users.add(new User("a", "123"));
    users.add(new User("b", "123"));
    users.add(new User("c", "123"));
    users.add(new User("d", "123"));
    users.add(new User("e", "123"));
    request.setAttribute("users", users);
  %>
  <!-- 不指定begin end step属性 -->
  <c:forEach var="user" items="${users}" varStatus="varStatus">
    ${user}, begin=${varStatus.begin}, end=${varStatus.end}, count=${varStatus.count}, current=${varStatus.current},
    first=${varStatus.first},last=${varStatus.last}, index=${varStatus.index}, step=${varStatus.step}
    <br>
  </c:forEach>

  <!-- 不指定items -->
  <c:forEach var="num" begin="1" end="10" >
    ${num},
  </c:forEach>
  </body>
</html>

运行结果:

 

猜你喜欢

转载自www.cnblogs.com/songchj-bear/p/11071474.html
今日推荐