zoukankan      html  css  js  c++  java
  • 自定义标签:JSTL

    自定义标签:

    我们可以自己去定义一些jsp标签。自定义包含两个:java类,tld文件(标签的描述文件)

     

    标签库JSTL(JSP Standard Tag Library):

           因为在jsp中使用java代码去控制页面的显示(即:用小段的<%%>),可读性很差,这样后期维护会比较麻烦,所以引入了Java标签库。

     

    n       常用的JSTL标签库:

    n       核心标签库:http://java.sun.com/jsp/jstl/core包含 Web 应用的常见工作,比如:循环、表达式赋值、基本输入输出等。

    n       格式化标签库:http://java.sun.com/jsp/jstl/fmt用来格式化显示数据的工作,比如:对不同区域的日期格式化等。

    n        XML 标签库:http://java.sun.com/jsp/jstl/xml用来访问 XML 文件的工作,这是 JSTL 标签库的一个特点。

    n        函数标签库http://java.sun.com/jsp/jstl/functions 用来读取已经定义的某个函数。

    n       数据库标签库:http://java.sun.com/jsp/jstl/sql可以做访问数据库的工作。

     

     

    J2EE 1.4:

           使用Java标签库首先要在项目中引入jstl.jar和standard.jar两个jar包,MyEclipse中有这个功能;

    Standard.jar中有tld文件(是一个xml文档),这是关于JSTL标签的说明文件,对应的java类就是加载这些说明,然后对我们写的JSTL标签进行解析处理。

    JAVAEE 5.0:

          javaee5.0类库已经自带了jstl相关的jar包。不需要再添加,可以直接使用jstl。

     

    其次要在页面中加入这样一个标签头[gjw1]  <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

     

    <c:out>标签用于显示变量数据。

        <c:out value="${a}" default="空"[c2]  escapeXml="true" [c3]  ></c:out>

     

    <c:set>标签的常用属性(将值存储到作用域或为 JavaBean 中的变量属性赋值 ):

    n       <c:set  var=“name“  value=“zhangsan“  scope=“page”/>   (相当于:pageContext.setAttribute(“name”,”zhangsan”))

    n        将值zhangsan存储到变量name, name为作用域pageContext中的一个属性。

    n       <c:set var=“t” ><b>hello c:set!</b></c:set>

    n         将本体内容存储到变量t中。

    n        <c:set target="${u}" property="pwd" value="123" ></c:set>

    n       设置已有的EL变量u的属性pwd的值为123

    n       <c:set target="${u}" property="pwd"[c4]  >123456</c:set>

    n       将本体内容设为EL变量u的属性pwd的值。

    [c5] 

     

    <c:remove var="sampleValue" scope="session"/> 相当于:session.removeAttribute(“sampleValue”)

     

     

    c:if标签à相当于java中的if语句

    名称

    描述

    类型

    默认值

    test

    若返回true,则执行本体内容;否则,不执行。

    Boolean

    无。

    var[c6] 

    用来存储test执行后的结果

    String

    Scope

    var 指定变量的存储范围

    String

    page

        <c:if test="${empty requestScope.s[gjw7] }" var=”resultTest” >

               <h1>true才显示</h1>

    </c:if>

    执行结果:${ resultTest }

     

    c:choose标签à相当于java中的if-else语句

           <c:choose>[gjw8] 

                  <c:when[gjw9]  test="${empty requestScope.s}">

                         <h1>空</h1>

                  </c:when>

                  <c:otherwise[gjw10] >

                         <h1>不空!</h1>

                  </c:otherwise>

           </c:choose>

    使用要点:

    1.       <c:when>必须在<c:otherwise>之前

    2.       <c:choose>中除了<c:when>/<c:otherwise>不能有其他元素。

     

    c:forEach标签à相当于java中的遍历操作.

    常用参数及其含义:

    varStatus属性的使用

           <%

                  List list = new ArrayList();

                  for(int i=0;i<20;i++){

                         list.add("A:"+i);

                  }

                  pageContext.setAttribute("li",list);

            %>

            <c:forEach items="${li}"[gjw11]   var="a"[gjw12]  begin="5" end="13" step="3"[gjw13]   varStatus="idx"[gjw14]  >

                   <b>${a}</b>

                   <c:if test="${(idx.index+1)%5= =0}">

                       <br>

                   </c:if>

    [gjw15]        </c:forEach>

     

    <c:import url="http://www.baidu.com"></c:import>类似于 include。但是比include范围广。Include只能加载本web应用的路径。Import可以加载本web应用以外的路径。下面是几种典型的使用:

    1.引入本web应用中的资源:

        <c:import url="/1.jsp"  ></c:import>   此处/代表本web应用根目录

    2. 引入外部URL:

        <c:import url="http://www.baidu.com"  ></c:import> 

    3. 将所引入文件的内容作为字符串存储在变量中,留待以后使用。

        <c:import url="1.jsp" var="t5" scope="page"></c:import>

        ${t5}

    请求重定向:<% response.sendRedirect(“fortoken.jsp”) %>

    <c:redirect url="fortoken.jsp">地址栏改变

                 <c:param name="a" value="33"></c:param>

                 <c:param name="b" value="44"></c:param>

          </c:redirect>

    ${param.a}

                <%

                         String str = "Where you from?I am from China";

                         request.setAttribute("str",str);

                  %> 

                  <c:forTokens items="${str}" delims="?| " var="str1">

                         <b>${str1}</b><br>

                  </c:forTokens>

     

     

    Fn标签库的使用:[gjw16] 

    简介

    在jsp页面上经常遇到得到集合长度、字符长度、字符切取等应用需,在2.0以前这种需是许多程序员对JSTL及为不满意的地方之一。为此在2.0 中添加了functions标签,其提供对以上需求的支持。

    使用方法

    引用

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

     

    函数说明:

     

    函数

    描述

    fn:contains(string, substring)

    如果参数string中包含参数substring,返回true

    fn:containsIgnoreCase(string, substring)

    如果参数string中包含参数substring(忽略大小写),返回true

    fn:endsWith(string, suffix)

    如果参数 string 以参数suffix结尾,返回true

    fn:escapeXml(string)

    将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回

    fn:indexOf(string, substring)

    返回参数substring在参数string中第一次出现的位置

    fn:join(array, separator)

    将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。

    fn:length(item)

    返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。

    fn:replace(string, before, after)

    返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果

    fn:split(string, separator)

    返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素

    fn:startsWith(string, prefix)

    如果参数string以参数prefix开头,返回true

    fn:substring(string, begin, end)

    返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符

    fn:substringAfter(string, substring)

    返回参数substring在参数string中后面的那一部分字符串

    fn:substringBefore(string, substring)

    返回参数substring在参数string中前面的那一部分字符串

    fn:toLowerCase(string)

    将参数string所有的字符变为小写,并将其返回

    fn:toUpperCase(string)

    将参数string所有的字符变为大写,并将其返回

    fn:trim(string)

    去除参数string 首尾的空格,并将其返回

     

    示例:

           <c:forEach items="${li}"   var="str" begin="0" end="9" step="1" varStatus="ind">

                <b>${fn:substring(str,1,fn:length(str))}</b>

               <c:if test="${(ind.index+1)%3==0}">

                  <br>

               </c:if>

           </c:forEach>

     

        <c:forEach items='${fn:split("a,b,c",",")}'[gjw17]  var="cc" >

           ${cc}  <br>

        </c:forEach>

     

     

    扩展知识点:

    JSTL的格式化标签库。(自学!!)

     

     


     [gjw1]如果在浏览器中看页面的源码时,标签语句原样发了过去,就是因为没加标签头

     [c2]当显示变量为null或不存在时,显示”空”

     [c3]True:则将文本按照普通文件显示。

    False:如果文本中存在HTML数据,则进行解析。

     [c4]Target=”${u.password}”,此处这么些错误。

    用target指定javabean

    用property指定属性名。

     [c5]基本用不着!不用看了!

     [c6]可以通过他保存该<c:if>执行结果,留待日后做其他处理。

     [gjw7]相当于判断表达式,返回true或false

     [gjw8]注意 c:choose标签中除了when和otherwise不能加其他的语句

     [gjw9]相当于if-else中的if,可以写多个

     [gjw10]相当于if-else中的else

     [gjw11]遍历哪个对象

     [gjw12]暂存变量

     [gjw13]起始位置、结束位置、步长(默认为1),都是可选的属性

     [gjw14]为了取得下标的属性

     [gjw15]常用的换行分页操作

     [gjw16]JSTL1.1及以上中使用。

     [gjw17]返回一个数组。由于里面有双引号,外面可用单引号。

    JSTL中的属性可用双引号、单引号。不过,不写引号不行。

  • 相关阅读:
    设计模式外观模式
    SQL Server高级查询
    电脑双屏下如何设置程序在第二屏幕运行
    Vistual Studio自带的计划任务功能
    SQL Server定时创建动态表
    访问网站出现空白页面的原因和解决方法
    微软老将Philip Su的离职信:回首12年职场生涯的心得和随笔
    SQL Server更改字段名
    刷新本页与父页的两条代码
    色彩感情
  • 原文地址:https://www.cnblogs.com/elikew/p/3409392.html
Copyright © 2011-2022 走看看