zoukankan      html  css  js  c++  java
  • JSTL

    1.JSTL简介
            (1) JSTL是JSP的标准标签库
            
            (2)JSTL为我们提供了一些常用的标签,供我们日常开发使用(if 、 if...else 、遍历 、 日期格式化)
            
            (3)标签库
                ①core :核心标签库
                    - 最常用的一个标签库,也就是我们熟悉c标签。
                    
                ②fn :函数标签库
                    - 函数标签库它需要结合EL表达式使用,主要定义了一些字符串操作的方法。
                
                ③fmt :格式化标签库
                    - 主要用来做日期、数字的格式化以及国际化
                    - 20151019 2015/10/19  10/19/2015
                    - 10000 10,000
                
                ④sql : 数据库标签库    
                    - 主要用来在JSP中操作数据库的,已淘汰
                
                ⑤xml : xml标签库    
                    - 主要用来在JSP操作解析XML文档,已淘汰

      (4) JSTL的使用
                使用JSTL需要先导入两个jar包
                    taglibs-standard-impl-1.2.1.jar
                    taglibs-standard-spec-1.2.1.jar

     2.核心标签库    
             - 导入核心标签库
                <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
             - 核心标签库一般使用c作为前缀,所以我们也称核心标签库为c标签。
             - c标签是我们JSTL中最常用的一个标签库,它里边封装了很多开发中常用的功能。
            
           ①  c:out
             作用:向页面中输入一个内容,一般要结合EL表达式使用!
             例子:<c:out value="" default="" escapeXml=""></c:out>
             属性:
                value : 要输出内容
                default : 当内容为空时显示的默认值
                escapeXml : 是否自动转义特殊字符,默认值为true 自动转义,一般不修改该属性
            
           ② c:set
            作用:向域中设置一个属性
            例子:<c:set var="name" value="孙悟空" scope="request"></c:set>
            属性:
                var :向域中存储的属性名
                value :向域中存储的属性值
                scope :向那个域中添加属性,四个可选值(page request session application),默认是page
            
           ③ c:remove
            作用:移除域中的一个属性
            例子:<c:remove var="name" scope="session"/>
            属性:
                var :要移除的属性的名字
                scope :要移除的属性所在的域,四个可选值(page request session application)
                    如果不设置该属性,则默认移除四个域中指定属性。
            
           ④ c:if
            作用 :相当于java中if语句
            例子:    
                <c:if test="${empty param.name }">
                    <h3>您没有输入name属性!</h3>
                </c:if>
            属性:
                test :接收一个boolean类型的值
                    如果test的值为true则标签体执行
                    否则不执行标签体
            
            ⑤c:choose c:when c:otherwise
            作用:相当于if...else
            例子:
                    <c:choose>
                        <c:when test="${param.score == 100 }">
                            <h3>恭喜您考了100分!</h3>
                        </c:when>
                        <c:otherwise>
                            <h3>恭喜你,你不及格!</h3>
                        </c:otherwise>
                    </c:choose>
            属性:
                when标签中的test属性:
                    接收一个boolean类型的值
                        如果test的值为true则标签体执行
                            否则不执行标签体
            
            注意:在choose标签中可以指定多个when标签,但是只有一个when会执行。
                    当所有的when标签都不执行时,则otherwise标签执行。
                
                c:when和c:otherwise不能脱离c:choose使用。
                
            
            ⑥c:forEach
            作用:可以在页面中对集合进行遍历
            例子:
                <c:forEach items="${list}" var="hero">
                    ${hero} <br />
                </c:forEach>
                
                <c:forEach items="${map }" var="user">
                    ${user.key} --- ${user.value} <br />
                </c:forEach>
            属性:
                items:要遍历的集合
                var:对集合中的对象引用的名字


            注意:在遍历Map时,返回的是一组一组的键值对结构
                我们可以通过对象.key获取键,通过对象.value获取值
                
            作用:可以用来遍历一组数
            例子:
                <c:forEach begin="1" end="20" var="index" step="1">
                    <a href=#>${index}</a>
                </c:forEach>
            属性:
                begin :开始的位置,注意begin不能小于0
                end :结束的位置
                var :引用的名字
                step :步长,每次自增的大小
                
           ⑦ c:url
            作用:可以创建一个完整的绝对路径
            例子:
                <c:url value="/index.jsp">
                    <c:param name="name" value="孙悟空"></c:param>
                    <c:param name="age" value="18"></c:param>
                </c:url>
            属性:
                value:要设置的地址,注意该地址要以/开头,否则不会加上项目名
                 在url标签中可以添加c:param标签,可以自动为地址拼接上请求参数。
            
           ⑧ c:redirect
            作用:请求的重定向
            例子:
                <c:redirect url="/index.jsp">
                    <c:param name="name" value="唐僧"></c:param>
                </c:redirect>
            属性:
                url:
                    重定向到目标地址,注意该地址不要自己添加项目名。
                    
                在redirect标签中可以添加c:param标签,可以自动为地址拼接上请求参数。
                
            注意:redirect标签会自动为我们设置项目名,不需要我们手动设置!

     代码示例:

     1 <%@page import="java.util.Map"%>
     2 <%@page import="java.util.HashMap"%>
     3 <%@page import="java.util.Set"%>
     4 <%@page import="java.util.HashSet"%>
     5 <%@page import="java.util.List"%>
     6 <%@page import="java.util.ArrayList"%>
     7 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"  %>
     8 <%@ page language="java" contentType="text/html; charset=UTF-8"
     9     pageEncoding="UTF-8"%>
    10 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    11 <html>
    12     <head>
    13         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    14         <title>Insert title here</title>
    15     </head>
    16     <body>
    17     
    18         <%
    19             //有序可重复
    20             List<Integer> list=new ArrayList<Integer>();
    21             list.add(1);
    22             list.add(1);
    23             list.add(2);
    24             list.add(3);
    25             request.setAttribute("list", list);
    26             
    27             //无序不重复
    28             Set<String> set=new HashSet<String>();
    29             set.add("张三");
    30             set.add("张三");
    31             set.add("张三1");
    32             set.add("张三2");
    33             set.add("张三3");
    34             set.add("张三4");
    35             request.setAttribute("set", set);
    36             
    37             
    38             Map<String,String> map=new HashMap<String,String>();
    39             map.put("name1","tom");
    40             map.put("name1","tom");
    41             map.put("name2","mike");
    42             map.put("name3","jeny");
    43             request.setAttribute("map", map);
    44         %>
    45         <c:forEach items="${requestScope.list}" var="element">
    46             ${element}
    47         </c:forEach>
    48         
    49         <br/>
    50         
    51         <c:forEach items="${requestScope.set}" var="element">
    52             ${element}
    53         </c:forEach>
    54         
    55         <br/>
    56         
    57         <c:forEach items="${requestScope.map}" var="element" >
    58             ${element.key}=${element.value}
    59         </c:forEach>
    60         
    61         <br/>
    62     
    63         <c:forEach begin="0" end="20" var="num" step="2">
    64             ${pageScope.num}<br/>
    65         </c:forEach>
    66     </body>
    67 </html>

    运行结果:

    3.设置绝对路径的三种方式:
                1.<c:set var="ctx" value="${pageContext.request.contextPath }"></c:set>
                    使用这种方式,可以通过${ctx}在页面中代替项目名
                    
                2.使用<c:url value="/index.jsp"></c:url>
                    使用url标签,它会自动为绝对路径加上项目名
                
                3.<base href="http://${pageContext.request.serverName }:${pageContext.request.serverPort }${pageContext.request.contextPath }/" />
                    使用base标签可以为页面中所有的相对路径,加上项目名   

    4.函数标签库
           作用:函数标签库需要配合EL表达式使用,它里面的方法都是一些字符串的操作
            引入函数标签库:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
     例子:
             ${fn:contains("hello","He") } <br /> 判断前一个字符串是否包含后一个字符串
                    
             ${fn:containsIgnoreCase("hello","He") } <br /> 判断前一个字符串是否包含后一个字符串,不区分大小写
                    
              ${fn:endsWith("hello","alo") }<br /> 判断前一个字符串是否以后一个字符串结尾
                    
                    <!-- 自动将特殊字符转义 -->
                    ${fn:escapeXml("<html></html>") }<br /> 自动将特殊字符进行转义
                    
                    <!-- fn:join用于将一个String数组转换一个字符串,第二个参数代表的连接符 -->
                    ${fn:join(strs,",") }<br /> 将一个String数组,以指定字符串拼接为一个新的字符串
                    
                    ${fn:split("a,b,c,d,e",",")[2] }<br /> 将一个字符串,以指定字符拆分为一个字符数组
                    
                    ${fn:trim("      abcd       ") }<br /> 去掉字符串的前后空格
     代码示例:

     1 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
     2 <%@ page language="java" contentType="text/html; charset=UTF-8"
     3     pageEncoding="UTF-8"%>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6     <head>
     7         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     8         <title>Insert title here</title>
     9     </head>
    10     <body>
    11     
    12         <%
    13             String[] str={"A","B","C"};
    14             request.setAttribute("str", str);
    15         %>
    16     
    17         ${fn:contains("heddd","ed")}<br/>
    18         <!-- 假如参数string中包含参数substring,返回true -->
    19         
    20         ${fn:containsIgnoreCase("heddd","eD")}<br/>
    21         <!-- 假如参数string中包含参数substring(忽略大小写),返回true -->
    22         
    23         ${fn:endsWith("zhangsss","gsss") }<br/>
    24         <!-- 假如参数 string 以参数suffix结尾,返回true -->
    25         
    26         ${fn:escapeXml("<script>alert('asds')</script>") }<br/>
    27         <!-- 将有非凡意义的XML (和HTML)转换为对应的XML character entity code,并返回 -->
    28         
    29         ${fn:indexOf("hello","e") }<br/>
    30         <!-- 返回参数substring在参数string中第一次出现的位置 -->
    31         
    32         ${fn:join(str,"-") }<br/>
    33         <!-- 将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。 -->
    34         
    35         ${fn:split("a-b-c","-")[0] }
    36         <!-- 返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素 -->
    37         ${fn:split("a-b-c","-")[1] }
    38         ${fn:split("a-b-c","-")[2] }
    39 
    40     </body>
    41 </html>

     运行结果:

     

  • 相关阅读:
    oracle 编译无效对象
    nginx配置监控
    Docker底层技术
    KVM入门
    maven 忽略checkstyle
    Java 使用 UnixSocket 调用 Docker API
    unix-socket-implementation-for-java
    NVIDIA Physix Unity3D
    Mobile Prototype Dev Res Collection(Unity原型开发资源储备)
    Unity抗锯齿
  • 原文地址:https://www.cnblogs.com/double-s/p/8099679.html
Copyright © 2011-2022 走看看