zoukankan      html  css  js  c++  java
  • JSP标准标签库(JSTL)之核心标签(上)

    在myeclipse中新建web项目时,会自动为我们安装JSTL库,如下图:

    核心标签是我们最常用的JSTL标签。在JSP页面中引用核心标签库的语法如下:

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

    一、<c:out>标签

      <c:out>标签用来显示一个表达式的结果,与jsp中的<%= %>作用相似,语法格式:

    <c:out value="要输出的内容" default="输出的默认值" escapeXml="是否忽略XML特殊字符"/>

    其中,value属性是必需的,其它两个属性不是必需的,escapeXml的默认值是true。

    如果为escapeXml="false",则将其中的html、xml解析出来。
    如value="<font size=16>java</font>",会显示为大小为16的”java“ ,
    如果为escapeXml="true",则显示<font size=16>java</font>。

    如果value中的值是空值,则输出default中的值,如下例子(单标签),网页会输出:默认值

    <c:out value="${null}" default="默认值" escapeXml="false" />

    上面的写法等价于下面的写法(双标签):

    <c:out value="${null}" escapeXml="false">默认值</c:out>

    从上面的例子可以看出,value属性值可以是一个EL表达式,这样就可以很方便的输出一个某个值了。如下的例子:输出今天的日期

     1 <%@page import="java.text.SimpleDateFormat"%>
     2 <%@page import="java.text.DateFormat"%>
     3 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     4 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     5 
     6 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     7 <html>
     8   <head>   
     9     <title>c:out 标签举例</title>
    10     <meta http-equiv="pragma" content="no-cache">
    11     <meta http-equiv="cache-control" content="no-cache">
    12     <meta http-equiv="expires" content="0">    
    13     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    14     <meta http-equiv="description" content="This is my page">
    15   </head>
    16   
    17   <body>
    18   <%
    19           Date date = new Date();
    20           DateFormat f=new SimpleDateFormat("yyyy年MM月dd日");//设置时间格式
    21           String dayDate=f.format(date);
    22           pageContext.setAttribute("date", dayDate);//设置本页范围内的属性
    23    %>
    24   <c:out value="${pageScope.date }" escapeXml="true"> 这是默认值</c:out>
    25   </body>
    26 </html>

    输出:

    二、<c:set>标签

      <c:set>标签用于设置变量值和对象属性。语法格式:

    <c:set  var="存储信息的变量"   value="要存储的值"   target="要修改的属性所属的对象" property="要修改的属性" scope="var属性的作用域"/>

    设置一个在page范围内属性名为info的属性,如下:

    <c:set var="info" value="www.cnblogs.com" scope="page" />

    然后就可以通过<c:out>标签来输出,但是只能在本页面中获取到info ,因为上面标明范围是在本页面中:

    <c:out value="${info }"></c:out>

     <c:set>标签中的target、property属性是对一个具体对象进行操作的。举个栗子:

    首先,需要建一个java类(Student.java):

     1 package cn.cqvie;
     2 
     3 public class Student {
     4     private String name;
     5     private int age;
     6     public String getName() {
     7         return name;
     8     }
     9     public void setName(String name) {
    10         this.name = name;
    11     }
    12     public int getAge() {
    13         return age;
    14     }
    15     public void setAge(int age) {
    16         this.age = age;
    17     }  
    18 }

     然后建一个jsp页面,用<c:set>标签来给一个student对象设置属性值,最后<c:out>标签来输出:

     1 <%@page import="cn.cqvie.*" %>
     2 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
     3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     4 
     5 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     6 <html>
     7   <head>   
     8     <title>c:out 标签举例2</title>
     9     <meta http-equiv="pragma" content="no-cache">
    10     <meta http-equiv="cache-control" content="no-cache">
    11     <meta http-equiv="expires" content="0">    
    12     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    13     <meta http-equiv="description" content="This is my page">
    14   </head>
    15   
    16   <body>
    17   <%
    18           Student s=new Student();
    19           pageContext.setAttribute("stu", s);
    20    %>
    21   <c:set var="sname" value="刘备" target="${stu }" property="name" scope="page"></c:set>
    22   <c:set var="sage" value="20" target="${stu }" property="age" scope="page"></c:set>
    23   <c:out value="${pageScope.sname }" escapeXml="true"> 这是默认值</c:out><br>
    24   <c:out value="${pageScope.sage }" escapeXml="true"> 这是默认值</c:out>
    25   </body>
    26 </html>

    运行web页面后显示:

    三、<c:remove>标签

      <c:remove>标签用于移除一个变量,可以指定这个变量的作用域,若未指定,则默认为变量第一次出现的作用域。这个标签不是特别有用,不过可以用来确保JSP完成清理工作。

        语法格式:

    <c:remove var="要移除的变量名称" scope="变量所属的作用域"/>

     我们将上个例子中的sage(即年龄属性)移除,核心代码块如下:

      <body>
      <%
              Student s=new Student();
              pageContext.setAttribute("stu", s);
       %>
      <c:set var="sname" value="刘备" target="${stu }" property="name" scope="page"></c:set>
      <c:set var="sage" value="20" target="${stu }" property="age" scope="page"></c:set>
      <c:remove var="sage" scope="page"/>
      <c:out value="${pageScope.sname }" escapeXml="true"> 这是默认值</c:out><br>
      <c:out value="${pageScope.sage }" escapeXml="true"> 这是默认值</c:out>
      </body>

    网页显示效果:

    四、<c:catch>标签

       <c:catch> 标签主要用来处理产生错误的异常状况,并且将错误信息储存起来。语法格式:

    <c:catch var="用来储存错误信息的变量">
     可能存在异常的代码
    </c:catch>

     举个栗子:

    <%@ 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>c:catch 举例</title>
        
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">    
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
      </head>
      
      <body>
        <c:catch var="errorMsg">
        <%
            int result = 10/0;
         %>
        </c:catch>
        
        异常为:${errorMsg }<br>
     异常信息是:${errorMsg.message }
      </body>
    </html>

    网页显示:

    五、<c:if>标签

      <c:if>标签判断表达式的值,如果表达式的值为 true 则执行其主体内容。语法格式:

    <c:if test="条件" var="用于存储条件结果的变量" scope="var属性的作用域">
    当test条件为真(var中变量值为true),执行的代码块
    </c:if>

    举例:

      <body>
        <c:if test="${param.name=='xiaosongshu' }" var="result">
            <h3>欢迎${param.name}光临</h3>
        </c:if>
        看一看result的值:${result}
      </body>

    在网页中请求页面时需要传一个name属性,如:http://localhost:5200/JSTLtest/if.jsp?name=xiaosongshu 

    看到结果:

    六、<c:choose>, <c:when>, <c:otherwise> 标签

    <c:choose>标签与Java中的switch语句的功能一样,用于在众多选项中做出选择。

    switch语句中有case,而<c:choose>标签中对应有<c:when>,switch语句中有default,而<c:choose>标签中有<c:otherwise>。

    语法格式:

    <c:choose>
        <c:when test="条件1"/>
            当条件1成立时执行的代码块
        </c:when>
        <c:when test="条件2"/>
            当条件2成立时执行的代码块
        </c:when>
        ...
        <c:when test="条件n"/>
            当条件n成立时执行的代码块
        </c:when>
        <c:otherwise>
            当条件1-条件n都不成立执行的代码块
        </c:otherwise>
    </c:choose>

     举例如下:

      <body>
          <c:set var="num" value="30"></c:set>
         <c:choose>
             <c:when test="${num==10 }">
                 <h3>num的值是10</h3>
             </c:when>
             <c:when test="${num==20 }">
                 <h3>num的值是20</h3>
             </c:when>
             <c:otherwise>
                 <h3>以上条件都不成立</h3>
             </c:otherwise>
         </c:choose>
      </body>

    在<c:choose>, <c:when>, <c:otherwise> 三个标签中,只有<c:when>标签有一个条件(test)属性,其它两个标签都没有属性。

  • 相关阅读:
    eclipse快捷键
    ideaIU-2017.3.2版本的免费安装以及2020版本破解
    并发相关问题以及java基础知识
    飞秋软件-局域网内互传
    视频解析网站
    bzoj2458: [BeiJing2011]最小三角形
    bzoj3170: [Tjoi2013]松鼠聚会
    bzoj5056:OI游戏
    dtoj#4224. 小L的占卜
    dtoj#4222. 小b爱旅行(travel)
  • 原文地址:https://www.cnblogs.com/hyyq/p/6123464.html
Copyright © 2011-2022 走看看