jstl经典代码片段分享的简单介绍

发布时间:2023-12-08

jstl经典代码片段分享的简单介绍

更新:<time datetime="2022-11-22 08:24">2022-11-22 08:24</time>

本文目录一览:

1、jstl标签里c:if的使用
2、JStl如何显示异步请求的Json数据
3、JSTL里,再在中间加上div尖括号中id=什么,怎么理解
4、jsp中的JSTL与EL表达式用法及区别

jstl标签里c:if的使用

1、 c:if 的使用 c:if 相当于if..else..语句,但c:if里面并没有类似于else的写法,只能写成多个c:if。

select id="machinename" name="machinename" style="width: 226px" class="required"
e:forEach items="${projectsList}" varStatus="status" var="item"
c:if test="${machine.machinename==item}"
option value="${item}" selected="selected"${item}/option
/c:if
c:if test="${machine.machinename!=item}"
option value="${item}"${item}/option
/c:if
/e:forEach
/select

2、 c:if test=”value ne, eq, lt, gt,….” 用法。 算术运算符 :+ 、 - 、 * 、 / (或 div )和 % (或 mod ) 关系运算符 :== (或 eq )、 != (或 ne )、 < (或 lt )、 > (或 gt )、 <= (或 le )和 >= (或 ge ) 逻辑运算符 : && (或 and )、 || (或 or )和 ! (或 not ) 验证运算符 :empty 3、 备注: 1’ c:if test="${machine.machinename==item}" 不能写成 c:if test="${machine.machinename==item} ",最后不要有空格。

扩展资料

JSTL是apache对EL表达式的扩展(也就是说JSTL依赖EL),JSTL是标签语言!JSTL标签使用以来非常方便。 它与JSP动作标签一样,只不过它不是JSP内置的标签,需要自己导包,以及指定标签库而已。 如果使用MyEclipse开发JavaWeb,那么在把项目发布到Tomcat时,会发现,MyEclipse会在lib目录下存放jstl的Jar包!如果没有使用MyEclipse开发那么需要自己来导入这个JSTL的Jar包:jstl-1.2.jar。 2、JSTL标签库: JSTL一共包含四大标签库:

  • core:核心标签库,我们学习的重点;
  • fmt:格式化标签库,只需要学习两个标签即可;
  • sql:数据库标签库。
  • xml:xml标签库。

JStl如何显示异步请求的Json数据

query的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发送设置的datatype设置为jsonp格式数据或json格式都可以。 代码示例如下:

$('#send').click(function () {
    $.ajax({
        type : "GET",
        url : "a.php",
        dataType : "jsonp",
        success : function (data) {
            $.each(data.items, function (i, item) {
                $("img class='para'/ ").attr("src", item.media.m).appendTo("#resText");
                if (i == 3) {
                    return false;
                }
            });
        }
    });
});

$.ajax方法如下:

$.ajax({
    type: "POST",
    url: ctxRoot+'FolderAction!saveInformSetting.action',
    data: 'jsonStr=' + inform_settingListStr,
    dataType: "json",
    complete: function(data){
        //在这里做些事情,假设返回的json数据里有name这个属性
        //有时候可以直接data.name或者data['name']去访问
        //但有时候,却要通过var jsonData = eval("("+data.responseText+")");才可以通过jsonData.name访问,而且这种情况下,需要是complete而不是success
    }
});

JSTL里,再在中间加上div尖括号中id=什么,怎么理解

这个是 div 的一个属性呀,一般Id是唯一的,不能重复使用,可以提供给js 去调用,比如实现该层显示或隐藏:js: document.getElementbyId("book_box").style.display=""

jsp中的JSTL与EL表达式用法及区别

JSTL (JSP Standard Tag Library ,JSP标准标签库)

JSTL标签库分为5类:JSTL核心标签库、JSTL函数标签库、数据库标签库、I18N格式化标签库、XML标签库。 JSTL的核心标签库主要包括:表达式操作、流程控制、迭代操作和URL操作。以下是JSTL常用标签的用法:

一、表达式操作

1、c:out

作用:用于显示数据的内容。 语法1:没有本体内容

c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"] /

语法2:有本体内容

c:out value="value" [escapeXml="{true|false}"]
default value
/c:out

属性说明:

  • value:需要显示出来的值。
  • default:如果value的值为null时,则显示default指定的值。
  • escapeXml:是否转换特殊字符,默认为true。即默认会将<、>、'、” 和 & 转换为 &lt、&gt、'、"和amp。如果设为false,则不进行转换。

2、c:set

作用:用于将变量的值存储在JSP范围中或JavaBean的属性中。 语法1:将value的值存储在范围为scope的varName变量中

c:set value="value" var="varName" [scope="{page|request|session|application}"] /

语法2:将本体内容的数据存储在范围为scope的varName变量中

c:set var="varName" [scope="{page|request|session|application}"]
...本体内容
/c:set

语法3:将value的值存储在target对象的property属性中

c:set value="value" target="target" property="propertyName" /

语法4:将本体内容的数据存储在target对象的property属性中

c:set target="target" property="propertyName"
...本体内容
/c:set

属性说明:

  • value:要被存储的值。
  • var:欲存入的变量名称。
  • scope:var变量的JSP范围。默认为page范围。
  • target:为一JavaBean或Map对象。 如果“target”是一个Map,“property”指定的是该Map的一个键;如果“target”是一个bean,“property”指定的 是该bean的一个成员字段。 如果“target”表达式为null,容器会抛出一个异常。 如果“target”表达式不是一个Map或bean,容器会抛出一个异常。 如果“target”表达式是一个bean,但是这个bean没有与“property”匹配的成员字段,容器会抛出一个异常。
  • property:指定的target对象的属性。

3、c:remove

作用:移除变量。 语法:c:remove var="varName" [scope="{page|request|session|application}"] / 属性说明:

  • var:要移除的变量。
  • scope:var变量所在的JSP范围,默认为page范围。

4、c:catch

作用:用于处理产生错误的异常情况,并将错误信息存储起来。 语法: c:catch [var="varName"] ...欲抓取错误的部分 /c:catch 属性说明:

  • var:将错误信息存储在指定的变量中,可以通过该变量获取错误信息。

二、流程控制

1、c:if

作用:类似if判断语句,用于表达式判断。 语法1:没有本体内容

c:if test="testCondition" var="varName" [scope="{page|request|session|application}"] /

语法2:有本体内容

c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"] /
...本体内容
/c:if

属性说明:

  • test:当该属性中的表达式运算结果为true,则会执行本体内容,为false则不执行,该标签必须要有test属性。
  • var:存储test的运算结果,为true或false。
  • scope:var变量的JSP范围。

2、c:choose、c:when、c:otherwise

作用:这三个标签必须组合使用,用于流程控制。 范例:

c:choose
c:when test="${condition1}"
condition1为true
/c:when
c:when test="${ condition2}"
condition2为true
/c:when
c:otherwise
condition1和condition2都为false
/c:otherwise
/c:choose

范例说明:当condition1为true时,会显示“condition1为true”;当condition1为false且condition2为true时,会显示“condition2为true”,如果两者都为false,则会显示“condition1和condition2都为false”。 注意:若condition1和condition2的运算结果都为true时,此时只会显示"condition1为true"。 限制说明: a、c:when和c:otherwise标签必须在c:choose和/c:choose之间使用。 b、在同一个c:choose中,c:otherwise必须是最后一个标签,且只能有一个c:otherwise标签。c:when可以有多个。 c、在同一个c:choose中,当所有c:when的test都为false时,才执行c:otherwise的本体内容。

三、迭代操作

1、c:forEach

作用:为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。运作方式为当条件符合时,就会持续重复执行c:forEach的本体内容。 语法1:迭代一个集合对象中的所有成员

c:forEach items="collection" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"] /
...本体内容
/c:forEach

语法2:迭代指定次数

c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]
...本体内容
/c:forEach

属性说明:

  • items:被迭代的集合对象。
  • var:存放当前指到的集合对象中的成员。
  • varStatus:存放当前指到的成员的相关信息。(index:当前指到的成员的索引;count:当前总共指到成员的总数;first:当前指到的成员 是否为第一个成员;last:当前指到的成员是否为最后一个成员)。
  • begin:迭代开始的位置,默认为0。
  • end:迭代结束的位置,默认为最后。
  • step:每次迭代的间隔数,默认为1。 范例:
<%
int atts[] = {1,2,3,4,5,6,7,8,9,10};
request.setAttribute("atts", atts);
%>
c:forEach items="${atts}" var="item" begin="0" end="9" step="1"
${item}<br>
/c:forEach

此标签也可以用于普通的循环控制,与for循环一样。如:

c:forEach begin="1" end="10" var="item"
${item}<br>
/c:forEach

2、c:forTokens

作用:用指定分隔符分隔一字符串,并迭代分隔后的数组。 语法: c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"] 本体内容 /c:forTokens 属性说明:

  • items:被分隔并迭代的字符串。
  • delims:用来分隔字符串的字符。
  • var:存放当前指到的成员。
  • varStatus:存放当前指到的成员的相关信息。(index:当前指到的成员的索引;count:当前总共指到成员的总数;first:当前指到的成员 是否为第一个成员;last:当前指到的成员是否为最后一个成员)。
  • begin:迭代开始的位置,默认为0。
  • end:迭代结束的位置,默认为最后。
  • step:每次迭代的间隔数,默认为1。 范例1:
c:forTokens items="A,B,C,D,E" delims="," var="item"
${item}
/c:forTokens

用“,”号分隔字符串,并迭代输出分隔后的字符串数组,输出结果为“ABCDE”。 范例2:

c:forTokens items="A,B;C-D,E" delims=",;-" var="item"
${item}
/c:forTokens

delims中指定了三个分隔符“,”、“;”和“-”,可见我们一次可以设定所有想当做分隔字符串用的字符。输出结果依然为“ABCDE”。

四、URL操作

1、c:import

作用:将其他静态或动态文件包含到本身JSP网页中。不但可以包含同一个web application下的文件,还可以包含其他web application或其他网站的文件。 语法:

c:import url="url" [var="varName"] [scope="{page|request|session|application}"]
[c:param name="paramName" value="paramValue"/]
/c:import

属性说明:

  • url:要包含至本身JSP网页的其他文件的URL。必选
  • var:将包含进来的其他文件以字符串的形式存放到指定的变量中。可选
  • scope:var变量的作用范围。可选
  • c:param:可选子标签,用于向包含进来的其他网页文件传递参数。 范例:
c:import url=""
c:param name="test" value="1234" /
/c:import

说明:当c:import标签中未指定var变量时,会直接将包含进来的其他网页文件内容显示出来,如果指定了var变量,则会将内容存放到var变量中,不显示。

2、c:url

作用:生成一个URL。 语法:

c:url value="url" [context="expression"] [var="name"] [scope="scope"]
[c:param name="expression" value="expression"/]
/c:url

范例1:

a href="c:url value=index.jsp'/"index page/a

在a超链接标签中生成一个URL,指向index.jsp。 范例2:

c:url value="index.jsp"
c:param name="keyword" value="${searchTerm}"/
c:param name="month" value="02/2003"/
/c:url

生成一个URL,并传递参数,生成的结果为index.jsp?keyword=*month=02/2003,*代表传递的searchTerm的值。

3、c:redirect

作用:可以将客户端的请求从一个JSP网页导向到其他文件。 语法:

c:redirect url="url"
[param name="paramName" value="paramValue"]
/c:redirect

将请求导向URl指向的其他文件。

五、I18N格式化标签库

使用I18N格式化标签之前,需先插入以下指令:

<%@ taglib prefix="fmt" uri="" %>

1、fmt:formatNumber

作用:将数字格式化成数字、货币、百分比 语法:

fmt:formatNumber value="value" [var="varName"] [type="{number|curreny|percent}"] [maxFractionDigits="3"] [groupingUsed="{true|false}"]/

属性说明:

  • value:需要进行格式化的值
  • var:值的另一个变量声明
  • maxFractionDigits:保留的小数点个数

2、fmt:parseNumber

作用:将字符串型的数字、货币、百分比格式化成数字 语法:

fmt:parseNumber value="¥6789.36" [var="result"] [type="{number|curreny|percent}"]

属性说明:

  • value:需要进行格式化的值
  • var:值的另一个变量声明

3、fmt:formatDate

作用:格式化时间和日期

4、fmt:parseDate

作用:将字符串形式的时间和日期转换成日期时间类型。

5、fmt:setTimeZone

作用:在JSP 网页中设置默认时区。

6、fmt:timeZone

作用:在JSP网页中为该标签体内的代码段设置时区。

7、fmt:setLocale

作用:在JSP 网页中设置语言地区。

8、fmt:requestEncoding

作用:在JSP 网页中设置请求所采用的编码方式,等价于JSP中的request. setCharacterEncoding(String encoding)。

9、fmt:setBundle

作用:设置默认的消息资源。

10、fmt:message

作用:在指定的消息资源中按关键字取出相应的消息内容。

11、fmt:param

作用:在从消息资源中取出消息内容时,为消息内容设置动态参数。

12、fmt:bundle

作用:为该标签体内的代码段设置一个消息资源。

他们的区别:

EL相关概念JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段。所以我们先来学习EL表达式EL主要用于查找作用域中的数据,然后对它们执行简单操作;它不是编程语言,甚至不是脚本编制语言。通常与 JSTL 标记一起作用,能用简单而又方便的符号来表示复杂的行为。

EL基本格式

EL表达式的格式:用美元符号($)定界,内容包括在花括号({})中;例如: ${loginInfoBean.suser}此外,您可以将多个表达式与静态文本组合在一起以通过字符串并置来构造动态属性值;例如:Hello {loginInfoBean.suser} ${loginInfoBean.spwd}

EL语法组成-标识符

EL表达式由标识符、存取器、文字和运算符组成。标识符用来标识存储在作用域中的数据对象。EL 有 11 个保留标识符,对应于 11个EL隐式对象。除了11隐式对象外,假定所有其它标识符都用来标识作用域的变量。标识符例:${abc} 相当于%=pageContext.findAttribute(“abc”)%${og_1} %=pageContext.findAttribute(“og_1”)%…等等;就是说{}内的标识符除了11个保留字之外都表示作用域中的数据对应的名.${requestScope}中的requestScope是11个EL隐式对象之一,它不再表示作用域中数据,而是表示request作用域;

EL隐藏对象

  • pageContext PageContext 实例对应于当前页面的处理
  • pageScope 与页面作用域属性的名称和值相关联的Map类
  • requestScope 与请求作用域属性的名称和值相关联的Map类
  • sessionScope 与会话作用域属性的名称和值相关联的Map类
  • applicationScope 与应用程序作用域属性的名称和值相关联的Map类
  • param 按名称存储请求参数的主要值的 Map 类
  • paramValues 将请求参数的所有值作为 String 数组存储的 Map 类
  • Header 按名称存储请求头主要值的 Map 类
  • headerValues 将请求头的所有值作为 String 数组存储的 Map 类
  • cookie 按名称存储请求附带的 cookie 的 Map 类
  • initParam 按名称存储 Web 应用程序上下文初始化参数的Map类

EL存取器

存取器用来检索对象的特性或集合的元素。存取器: 通过 “[]” 或 “.” 符号获取相关数据例:${userBean.suser} 或 ${userBean[“suser”]}//获取输出bean中的suser属性值;${mcType[“id”]} //获取map中key为id对应的值;

EL运算符

运算符允许对数据和文字进行组合以及比较。EL运算符:类别 运算符

  • 算术运算符 +、-、*、/(或 div)和 %(或 mod)
  • 关系运算符 ==(或eq)、!=(或ne)、< (或lt)、> (或gt)、<= (或le) 和 >= (或ge)
  • 逻辑运算符 && (或 and)、||(或or)和 !(或 not)
  • 验证运算符 empty验证运算符(empty):对于验证数据特别有用。empty 运算符采用单个表达式作为其变量(也即,${empty input}),并返回一个布尔值,该布尔值表示对表达式求值的结果是不是“空”值。求值结果为 null 的表达式被认为是空,即无元素的集合或数组。如果参数是对长度为零的 String 求值所得的结果,则 empty 运算符也将返回 true。

EL文字

文字表示固定的值 — 数字、字符、字符串、布尔型或空值。在 EL 表达式中,数字、字符串、布尔值和 null 都可以被指定为文字值。字符串可以用单引号或双引号定界。布尔值被指定为 true 和 false

JSTL是什么

JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL1.0 由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器组成。core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。它还提供了用来生成和操作 URL 的标记。format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。它还支持使用本地化资源束进行JSP页面的国际化。xml 库包含一些标记,这些标记用来操作通过XML表示的数据,而 sql 库定义了用来查询关系数据库的操作。 两个 JSTL 标记库验证器允许开发人员在其 JSP 应用程序中强制使用编码标准。如果要使用JSTL,则必须引用jstl.jar和 standard.jar两个包。

为什么要用JSTL

我们JSP用于开发信息展现页非常方便;也可以嵌入java代码(scriptlet、表达式和声明)代码用来实现相关逻辑控制。看下面程序。但这样做会带来如下问题:jsp维护难度增加;出错提示不明确,不容易调试;分工不明确;(即jsp开发者是美工,也是程序员);最终增加程序的开发成本;解决上面的问题可以使用定制标记库,JSTL使JSP开发者可以减少对脚本元素的需求,甚至可以不需要它们,从而避免了相关的维护成本。使分工更明确。

<% if (session.getAttribute("user").equals("member")) { %>
<p>Welcome, member!</p>
<% } else { %>
<p>Welcome, guest!</p>
<% } %>

JSTL一般配合EL一起使用,因此先看看EL.

JSTL部署

在EE应用程序中部署JSTL有两种方式:

  • 已存在的工程上部署将jstl.jar和standard.jar两个包考到现有工程WebRoot / WEB-INF / lib 目录下将相关的 .tld文件考到现有工程 WebRoot /WEB-INF 目录下;也可通过eclipse在已存在