jstl的使用
- 格式:doc
- 大小:72.50 KB
- 文档页数:8
jstl 中if语句的使用JSTL(JavaServer Pages Standard Tag Library)是用于在JSP页面中嵌入Java 逻辑的标准标签库。
在JSTL中,有一个<c:if>标签可以用于条件判断和控制页面的显示。
<c:if>标签有三个常用的属性:test、var和scope。
1. test属性:用于定义条件表达式,只有当条件表达式为真(true)时,<c:if>标签中的内容才会被执行。
可以使用JSP中的EL表达式作为条件,例如:<c:if test="{age > 18}"><! 显示内容></c:if>2. var属性:用于定义一个变量,该变量会被赋值为布尔型的条件表达式的值。
例如:<c:if test="{age > 18}" var="isAdult"><! 当age大于18时,isAdult的值为true ></c:if>3. scope属性:用于指定变量的作用域,默认为page。
可以选择的作用域包括page(页面)、request(请求)、session(会话)、application(应用程序)。
例如:<c:if test="{age > 18}" var="isAdult" scope="request"><! 当age大于18时,在request作用域中创建变量isAdult ></c:if>示例:<c:if test="{age > 18}"><p>已成年</p></c:if><c:if test="{age <= 18}"><p>未成年</p></c:if>这个示例中,如果age大于18,则显示"已成年";如果age小于等于18,则显示"未成年"。
XXXX 大学计算机学院实验报告计算机学院2017 级软件工程专业 5 班指导教师XXX 学号姓名XXX 2019 年10 月30 日成绩实验内容或上机调试程序实验:使用EL表达式和JSTL实现将文本框中的内容输出到页面的功能,在此页面的文本框中输入内容,单击页面提交按钮之后,输入框以及按钮消失,文本框中输入的内容显示到页面(操作及显示效果均在同一页面完成)①核心代码如下所示:<!-- 表单 --><c:set value="1"var="visitContent"property="visitContent"/><!-- 表单提交后,表单内输入框如果为null,就隐藏输入框 --><c:if test="${erName==null}"><form action="${pageContext.request.contextPath}/index.jsp">userName:<input type="text"name="userName"><br/>userPassword:<input type="text"name="userPassword"><input type="submit"value="提交"><input type="reset"value="重置"></form></c:if><hr/><!-- 使用EL表达式显示输入框中的内容 -->userName:${erName} <br/>userPassword:${erPassword}②完成效果如下所示:图表单提交之前的效果实验内容或上机图表单提交后前的效果调试程序。
el和jstl实验总结-回复实验总结:el和jstl在Java Web开发中的应用引言:在Java Web开发中,为了简化页面的开发和编写,提高开发效率,EL表达式(Expression Language)和JSTL标签库(JSP Standard Tag Library)被广泛应用。
本文将以实验总结的形式,深入探讨EL表达式和JSTL标签库在Java Web开发中的应用和使用方法,并提供一些实际案例,以便读者更好地理解和应用这两个技术。
第一部分:EL表达式(Expression Language)的应用1. EL表达式的概述:EL表达式是一种用于在JSP页面中处理和访问服务器端数据的简单而强大的语言。
它提供了一种简洁和易于理解的方式来获取和展示数据。
2. EL表达式的语法:介绍EL表达式的基本语法,包括变量访问、属性访问、方法调用等。
3. EL表达式的内置对象:介绍EL表达式内置的一些对象和方法,如pageContext、request、response、session等,以及它们的常用用法。
4. EL表达式的运算符:介绍EL表达式中常用的运算符,如四则运算、逻辑运算、比较运算等。
5. EL表达式的应用案例:通过实际案例,展示EL表达式在Java Web开发中的应用,如获取用户输入、计算表单数据、展示数据库查询结果等。
第二部分:JSTL标签库(JSP Standard Tag Library)的应用1. JSTL标签库的概述:JSTL是一组自定义标签,通过标签的方式提供了一种简洁和易于维护的方式来处理和展示JSP页面中的数据。
2. JSTL标签库的分类:介绍JSTL标签库的分类,如核心标签库、格式化标签库、数据库标签库等。
3. JSTL核心标签库的常用标签:介绍JSTL核心标签库中常用的标签,如<c:if>、<c:forEach>、<c:choose>等,以及它们的常用用法。
jstl 三目运算符在Java的JSP开发中,我们经常会使用JSTL(JavaServer Pages Standard Tag Library)来简化页面的开发和管理。
而其中一个非常有用的功能就是三目运算符。
三目运算符是一种条件表达式,由三个操作数组成,通常用于简化条件判断和赋值操作。
在JSTL中,我们可以使用三目运算符来实现动态控制页面显示内容的功能。
以一个简单的例子来说明。
假设我们有一个变量age,表示用户的年龄。
我们需要根据不同年龄段来显示不同的提示信息。
如果年龄小于18岁,则显示"未成年人禁止入内",否则显示"欢迎光临"。
使用JSTL的三目运算符,我们可以这样实现:```<c:set var="age" value="20" /><c:out value="${age < 18 ? '未成年人禁止入内' : '欢迎光临'}" />```在上面的代码中,我们首先使用`<c:set>`标签设置了一个名为age的变量,并赋值为20。
然后使用`<c:out>`标签输出了一个表达式的值。
在表达式`${age < 18 ? '未成年人禁止入内' : '欢迎光临'}`中,我们使用了三目运算符。
它的意思是,如果age小于18,则返回"未成年人禁止入内",否则返回"欢迎光临"。
通过这样的方式,我们可以根据不同的条件来动态的显示页面内容。
这在实际的开发中非常有用,特别是当我们需要根据用户的权限、状态或其他条件来进行页面控制时。
除了上述的简单用法之外,三目运算符在JSTL中还可以与其他标签结合使用,实现更复杂的逻辑。
比如,我们可以用它来判断是否显示某个按钮、是否禁用某个输入框等。
JSTL标签库的使用是为类弥补html表的不足,规范自定义标签的使用而诞生的。
在告别modle1模式开发应用程序后,人们开始注重软件的分层设计,不希望在jsp页面中出现java逻辑代码,同时也由于自定义标签的开发难度较大和不利于技术标准化产生了自定义标签库。
JSTL标签库可分为5类:❑核心标签库❑I18N格式化标签库❑SQL标签库❑XML标签库❑函数标签库本章将对这些内容一一讲述。
9.1 核心标签库JSTL的核心标签库标签共13个,从功能上可以分为4类:表达式控制标签、流程控制标签、循环标签、URL操作标签。
使用这些标签能够完成JSP页面的基本功能,减少编码工作。
(1)表达式控制标签:out标签、set标签、remove标签、catch标签。
(2)流程控制标签:if标签、choose标签、when标签、otherwise标签。
(3)循环标签:forEach标签、forTokens标签。
(4)URL操作标签:import标签、url标签、redirect标签。
在JSP页面引入核心标签库的代码为:<%@ taglib prefix="c" uri="/jsp/jstl/core" %>下面将按照功能分类,分别讲解每个标签的功能和使用方式。
9.2.1 表达式控制标签表达式控制分类中包括<c:out>、<c:set>、<c:remove>、<c:chtch>4个标签,现在分别介绍它们的功能和语法。
1.<c:out>标签【功能】:用来显示数据对象(字符串、表达式)的内容或结果。
在使用Java脚本输出时常使用的方式为:<% out.println(“字符串”)%><%=表达式%>在web开发中,为了避免暴露逻辑代码会尽量减少页面中的Java脚本,使用<c:out>标签就可以实现以上功能。
JSTL中的TLD配置和使⽤。
⼀,JSTL介绍: JSTL标签库,是⽇常开发经常使⽤的,也是众多标签中性能最好的。
把常⽤的内容,放在这⾥备份⼀份,随⽤随查。
尽量做到不⽤查,就可以随⼿就可以写出来。
这算是Java程序员的基本功吧,⼀定要扎实。
JSTL全名为JavaServer Pages Standard Tag Library。
JSTL是由JCP(Java Community Process)所制定的标准规范,它主要提供给Java Web开发⼈员⼀个标准通⽤的标签函数库。
Web程序员能够利⽤JSTL和EL来开发Web程序,取代传统直接在页⾯上嵌⼊Java程序(Scripting)的做法,以提⾼程序的阅读性、维护性和⽅便性。
⼆,JSTL配置: 主要牵涉到两个jar包 standward.jar和jstl.jar包(两个包1.0和1.2版本的下载以及TLD下载路径如下:) 加载⽅式包括两种 1,⾮⾃动加载 a,将tld⽂件copy到WEB-INFO下的tld⽬录下,没有就创建之 b,修改web.xml⽂件配置,添加配置如下 1<jsp-config>2<taglib>3<taglib-uri>/jstl/core</taglib-uri>4<taglib-location>/WEB-INF/tld/c.tld</taglib-location>5</taglib>6<taglib>7<taglib-uri>/jstl/fmt</taglib-uri>8<taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>9</taglib>10<taglib>11<taglib-uri>/jstl/fn</taglib-uri>12<taglib-location>/WEB-INF/tld/fn.tld</taglib-location>13</taglib>14</jsp-config>View Code c,jsp中引⽤taglib 2,⾃动加载Servlet2.4规范提供了对tld⽂件的⾃动加载,tld⽂件在standard.jar的META-INF⽂件夹中。
JSTL用法一、什么是JSTLJavaServer Pages Standard Tag Library(JSTL)是一个JSP规范的标准标签库,它为JSP页面提供了一组标签和函数,用于简化JSP页面的开发和维护。
JSTL提供了核心标签库、格式化标签库、SQL标签库和XML标签库等,可以帮助开发者更方便地处理数据、格式化输出、执行SQL查询和处理XML数据等任务。
二、JSTL的引入要使用JSTL,首先需要在项目中引入JSTL的相关依赖。
在Maven项目中,可以通过在pom.xml文件中添加以下依赖来引入JSTL:<dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>引入依赖后,就可以在JSP页面中使用JSTL的标签了。
三、核心标签库1. <c:out>标签<c:out>标签用于输出表达式的值,可以防止XSS攻击。
它的使用方式如下:<c:out value="${expression}" />其中,expression是一个JSP表达式,可以是一个变量、一个属性或者一个EL表达式。
<c:out>标签会将expression的值进行HTML转义,以防止恶意代码注入。
2. <c:set>标签<c:set>标签用于设置一个变量的值,可以在JSP页面中使用这个变量。
它的使用方式如下:<c:set var="variableName" value="expression" />其中,variableName是变量的名称,expression是一个JSP表达式,用于给变量赋值。
jst l中使用out输出内容jstl(JSP标准标签库)是一种强大的JSP标签集,用于以更加简洁和方便的方式来操作JSP页面上的数据。
其中,使用out标签可以实现在JSP页面上有效输出内容。
使用out标签输出内容时,可以采用:${}或者<c:out value=变量这两种方式。
前者可以使用表达式访问对象的属性、调用方法,也可以使用脚本变量,将属性值或者方法的返回值输出到页面上;而后者可以引用一个JavaBean或者使用EL表达式来获取参数,并将参数的值通过value属性填入到c:out标签中。
使用out标签输出的内容不仅仅限于字符串,它还能够输出表达式的结果,比如:可以使用<c:out value=${表达式}来输出表达式结果。
这就可以使我们以更为灵活的方式来操作JSP页面内容。
此外,使用out标签还可以进行HTML字符的转义。
在JSP中,当我们要在页面上输出HTML特殊字符时,就会出现问题,这时,就要采用<c:out>标签来转义特殊字符,它会将<, >, &, 等字符都进行转义,这样就不会影响到页面的正常显示。
除了上面提到的功能之外,<c:out>标签还可以实现一些高级功能,如:当引用的变量为null时,可以用<c:out>标签来输出默认值,从而实现空值检查;另外,还可以使用<c:out>标签来实现数据格式化,使用<fmt:formatNumber>标签可以实现对金额数字的格式化显示,比如将一个小数数字的格式化显示为指定的金额格式,或者将一个指定的数字格式化成指定的日期格式等等。
总的来说,使用out标签输出内容是JSP页面的一种常见操作,它可以使我们更加简便地操作JSP页面上的数据,从而实现更加优良的页面效果。
jstl中的foreach语法,并举例说明JSTL(JSP Standard Tag Library)是一种为JSP页面提供标签库的技术,它简化了在JSP页面中使用条件判断和循环的操作。
在JSTL中,<c:forEach>是一个非常常用的标签,用于在JSP页面中遍历集合或数组。
一、<c:forEach>标签的基本语法 <c:forEach>标签有以下几个基本的属性: - var:指定集合中的当前元素的变量名。
- items:指定要遍历的集合或数组。
- begin、end、step:可选属性,用于指定遍历的起始位置、结束位置和步长。
- varStatus:可选属性,指定一个变量名用于保存每一次循环的状态信息。
下面是<c:forEach>标签的基本语法: ```xml<c:forEach var="item" items="${collection}"><!-- 在此处使用变量 ${item} --> </c:forEach> ```二、使用<c:forEach>标签的示例为了更好地理解<c:forEach>标签的使用,我们来看一个例子。
假设有一个名为“students”的List,其中包含了多个学生对象。
每个学生对象包含有学生的姓名、年龄和性别。
我们希望在JSP页面中显示出每个学生的信息。
首先,我们需要将学生对象的List传递给JSP页面,可以使用EL表达式将List存储在一个名为“students”的变量中: ```java List<Student> students = newArrayList<>(); // 添加学生对象到List中...request.setAttribute("students", students); ```然后,在JSP页面中使用<c:forEach>标签遍历“students”集合中的每个学生对象,并显示出姓名、年龄和性别: ```xml <table> <thead> <tr> <th>姓名</th> <th>年龄</th><th>性别</th> </tr> </thead><tbody> <c:forEach var="student"items="${students}"> <tr><td>${}</td><td>${student.age}</td><td>${student.gender}</td> </tr></c:forEach> </tbody> </table> ```在上面的示例中,<c:forEach>标签的var属性设置为“student”,items属性设置为“${students}”,表明它遍历的是名为“students”的变量,即我们传递给JSP页面的学生对象的List。
Jstl标签c:if的⽤法<c:if> 标签必须要有test属性,当test中的表达式结果为true时,则会执⾏本体内容;如果为false,则不会执⾏。
例如:${ername = = 'admin'},如果ername等admin时,结果为true;若它的内容不等于admin时,则为false。
于 接下来看下列的范例: <c:if test="${ername = = 'admin' }"> ADMIN您好!! //body部分 </c:if> 如果名称等于admin,则会显⽰"ADMIN您好!! "的动作,如果相反,则不会执⾏<c:if>的body部分,所以不会显⽰"ADMIN 您好!! //body部分"。
另外<c:if>的本体内容除了能放纯⽂字,还可以放任何JSP程序代码(Scriptlet)、JSP 标签或者HTML码。
除了test属性之外,<c:if>还有另外两个属性var和scope。
当我们执⾏<c:if>的时候,可以将这次判断后的结果存放到属性var⾥;scope则是设定var的属性范围。
哪些情况才会⽤到var和 scope这两个属性呢?例如:当表达式过长时,我们会希望拆开处理,或是之后还须使⽤此结果时,也可以⽤它先将结果暂时保留,以便⽇后使⽤。
例⼦:<%String amind="Admin";request.setAttribute("amind",amind);%><c:if test="${requestScope.amind=='Admin'}" var="condition" scope="request"> 您好Admin先⽣ </c:if>。
jstl 数值型加法运算JSTL(JSP Standard Tag Library)是用于在JSP页面上进行数据处理和逻辑控制的标准标签库。
在JSTL中进行数值型加法运算可以通过使用 `<c:set>` 标签和 EL(Expression Language)来实现。
首先,我们可以使用 `<c:set>` 标签来创建一个变量并将数值赋给它,然后使用EL表达式来对这个变量进行加法运算。
例如:jsp.<c:set var="num1" value="10" />。
<c:set var="num2" value="5" />。
<c:set var="result" value="${num1 + num2}" />。
在这个例子中,我们首先使用 `<c:set>` 标签分别创建了两个变量 `num1` 和 `num2`,并分别赋予了它们数值 10 和 5。
然后,我们使用 `<c:set>` 标签再创建一个变量 `result`,并使用EL表达式 `${num1 + num2}` 对 `num1` 和 `num2` 进行加法运算,将结果赋给 `result` 变量。
除了使用 `<c:set>` 标签外,也可以直接在输出表达式中进行加法运算,例如:jsp.<%= 10 + 5 %>。
在这个例子中,`<%= %>` 用于输出表达式的结果,而 `10 +5` 则是进行了加法运算的部分。
总的来说,在JSTL中进行数值型加法运算可以通过 `<c:set>` 标签结合EL表达式来实现,也可以直接在输出表达式中进行加法运算。
希望这些信息能够帮助到你。
w j903829182的专栏m yseclipse使用jstl的方法和用法分类: 平时学习是出现的问题和解决的办法 2013-04-30 16:50 44人阅读 评论(0) 收藏举报jstl一.导入JSTL方法一:右键你的项目,选择myeclipse中的add jstl library选项方法二:新建一个工程,在JSTL Support那一栏中的Add JSTL libraries to WEB_INF/lib folder打勾,点完成即可。
二.使用JSTL一、JSTL 简介JSP标准标记库(JSP Standard Tag Library,JSTL)是一个实现Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML操作以及数据库访问。
JSTL 1.0 有四个定制标记库:core、format、xml 和 sql.1.core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。
2.format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。
它还支持使用本地化资源束进行 JSP 页面的国际化。
3.xml 库包含一些标记,这些标记用来操作通过 XML 表示的数据。
4.sql 库定义了用来查询关系数据库的操作。
<td><table><tr><c:forEach begin="1" end="10" step="1" var="loop"><td><c:out value="${loop}"/></td></c:forEach></tr></table></td><td><table><tr><c:forEach begin="1" end="10" step="1" var="loop"><td><c:out value="${loop}"/></td></c:forEach></tr></table></td></tr><tr><td>forTokens</td><td><c:forTokens var="token" delims="#,;4" items="0#1,2,34,5,6,7;8,9,A,B,C#,;4D" begin="3" end="10" step="2"> <c:out value="${token}"></c:out></c:forTokens></td><td><c:forTokens var="token" delims="#,;4" items="0#1,2,34,5,6#,7;8,9,A,B,C#,;4D" begin="3" end="10" step="2"><c:out value="${token}"></c:out></c:forTokens></td></tr><tr><td>if</td><td><c:if test="${sessionScope.sessionVariable=='none'}">There is not sessionVariable</c:if><br /><c:if test="${sessionScope.sessionVariable!='none'}">The value of sessionVariable is not none</c:if></td><td><c:if test="${sessionScope.sessionVariable=='none'}">There is not sessionVariable</c:if><c:if test="${sessionScope.sessionVariable!='none'}">The value of sessionVariable is not none</c:if></td></tr><tr><td>choose</td><td><c:choose><br/><c:when test="${empty sessionScope.sessionVariable}"><br/>There is not sessionVariable</c:when><br/><c:otherwise><br/>The value of sessionVariable is not none</c:otherwise><br/></c:choose><br/></td><td><c:choose><c:when test="${empty sessionScope.sessionVariable}">There is not sessionVariable</c:when><c:otherwise>The value of sessionVariable is not none</c:otherwise></td></tr></table><form method="post"><table><c:forEach var="loop" begin="1" end="10" step="1"><tr><td><input type="checkbox" name="checkBox" value="<c:out value='${loop}' />"/><c:out value='${loop}' /> </td></tr></c:forEach></table><input type="hidden" name="hiddenVar" value="hiddenValue"/><input type="submit" value="submit"/></form><c:out value="param.hiddenVar" default="none"/><c:out value="${param.hiddenVar}" default="none"/><c:if test="${not empty param.hiddenVar}"><p>after click submit button,display following:</p>you select:<c:forEach var="checkboxValues" items="${paramValues.checkBox}" varStatus="status"><c:out value="${checkboxValues}"/><c:if test="${!st}">,</c:if></c:forEach></c:if><P>请通过参看该页源文件的下列部分以体验out标记的escapeXml属性的作用。
使⽤jstl如何进⾏遍历循环⼀个数组<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="/jsp/jstl/core"%><%@ page import="java.util.*"%><%@ page import="er"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><%int[] ages = { 1, 2, 3, 4, 5 }; // 普通数组,JSTL直接使⽤JSP赋值表达式来取List<String> names = new LinkedList<String>(); // Listnames.add("Biao");names.add("彪");names.add("雷");request.setAttribute("names", names); // 添加到requestSet<String> set = new TreeSet<String>(); // Setset.add("One");set.add("One");set.add("Two");set.add("Three");set.add("Set");Map<String, String> map = new HashMap<String, String>(); // Mapmap.put("1", "黄彪");map.put("2", "丫头");map.put("3", "哥哥");map.put("4", "笨蛋");List<User> users = new ArrayList<User>(); // JavaBean的Listusers.add(new User("黄彪", "xxxxxx"));users.add(new User("昊天", "xxxxxx"));users.add(new User("姐姐", "yyyyyy"));users.add(new User("丫头", "zzzzzz"));session.setAttribute("users", users); // 添加到session%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Iterator Collections</title><style type="text/css">table {border-collapse: collapse;border: 1px solid black;}td, th {border: 1px solid black;}tr:nth-child(even) {background: #eee;}</style></head><body><center>遍历数组:<c:forEach var="age" items="<%= ages %>"><c:out value="${age}"/></c:forEach><br />遍历List:<c:forEach var="name" items="<%= names %>"><c:out value="${name}"/></c:forEach><br />遍历List:<c:forEach var="name" items="${names}"><c:out value="${name}"/></c:forEach><br /><br />遍历Set:<c:forEach var="entry" items="<%= set %>"><c:out value="${entry}"/></c:forEach><br />遍历Map:<table><tr><th>Key</th><th>Value</th></tr><c:forEach var="entry" items="<%= map %>"> <tr><td><c:out value="${entry.key}"/></td><td><c:out value="${entry.value}"/></td></tr></c:forEach></table><br />遍历UserBean的List:<table><tr><th>username</th><th>password</th></tr><c:forEach var="user" items="${users}"><tr><td><c:out value="${ername}"/></td> <td><c:out value="${user.password}"/></td> </tr></c:forEach></table></center></body></html>。
jstl以前在jsp页面截取字符串时都是用Java表达式,感觉在jsp页面用多了Java表达式不是很好(那时主要是不知道jstl标签怎么去截取字符串,所以就只能用Java表达式了)。
今天在网上找了些相关资料,原来jstl标签是可以截取字符串的,主要有两种方法:一、用jstl原有的标签库中方法(fn函数)<c:set var="testStr" value="做一个截取字符串长度的测试"<c:choose><c:when test="${fn:length(testStr) > 10}"><c:out value="${fn:substring(testStr, 0, 10)}......" /></c:when><c:otherwise><c:out value="${testStr}" /></c:otherwise></c:choose>注:记得要引用标签库<%@ taglib uri="/jsp/jstl/core" prefix="c"%><%@ taglib uri="/jsp/jstl/functions" prefix="fn"%> 二、自定义函数jstl自带的标签有时候可能满足不了我们的需求,这时我们就要用到自定义函数。
新建一个类,定义好所需要的方法:Java代码:1.package com.uisk.util;2.3./**4.* 定义EL自定义函数5.*6.*/7.publicclass UFunction {8.9./**10.* 获取一个字符串的长度11.*12.* @param str13.* @return int14.*/15.publicstaticint getLen(String str) {16.return str.length();17.}18.19./**20.* 截取字符串21.*22.* @param str23.* @param start24.* @param end25.* @return String26.*/27.publicstatic String substr(String str, int start, int end){28.return str.substring(start, end);29.}30.31./**32.* 两数相除获取整数结果33.*34.* @param first35.* @param second36.* @return int37.*/38.publicstaticint chufa(int first, int second) {39.return first / second;40.}41.}再建一个tld文件放在WEB-INF目录下面对其进行配置:1.<?xml version="1.0" encoding="UTF-8"?>2.<taglib xmlns="/xml/ns/j2ee"3.xmlns:xsi="/2001/XMLSchema-instance"4.xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"5.version="2.0">6.<tlib-version>1.0</tlib-version>7.<short-name>len</short-name>8.<function>9.<description>calculate string length</description><!-- 对这个EL方法的描述 -->10.<name>getLen</name><!-- 调用EL方法的名称 -->11.<function-class>mon.UFunction</function-class>12.<function-signature>13.int getLen(ng.String)14.</function-signature>15.<example>${len:getLen(str)}</example><!-- 例如 -->16.</function>17.18.<function>19.<description>substring</description>20.<name>substr</name>21.<function-class>mon.UFunction</function-class>22.<function-signature>ng.String substr(ng.String,int,int)24.</function-signature>25.</function>26.27.<function>28.<description>chufa</description>29.<name>chufa</name>30.<function-class>mon.UFunction</function-class>31.<function-signature>int chufa(int,int)</function-signature>32.</function>33.</taglib>最后进行调用测试:1.<%@ page language="java" pageEncoding="gbk"%>2.<%@ taglib uri="/jsp/jstl/core" prefix="c"%>3.<%@ taglib uri="/WEB-INF/mytag.tld" prefix="myTag" %>4.5.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">6.<html>7.<body>8.<c:set var="str" value="自定义函数,做一个截取字符串长度的测试"></c:set>9.字条串"${str}"的长度是${myTag:getLen(str)}<br/>10.字条串"${str}"截取前5个字符:${myTag:substr(str,0,5)}<br/>11.5除以3取整数是:${myTag:chufa(5,3) }12.13.</body>14.</html>。
jstl if else用法JSTL(JSP标准标签库)是一组JSP自定义标签,用于简化JSP页面中的逻辑处理和数据显示。
在JSTL中,可以使用if-else标签来实现条件判断。
以下是if-else标签的用法:1. 导入JSTL库:在JSP页面中,需要先导入JSTL库,以便使用标签库中的标签。
可以使用以下语句导入JSTL库:```<%@ taglib prefix="c" uri="/jsp/jstl/core" %> ```2. 使用if-else标签:在JSP页面中,可以使用<c:if>标签来实现条件判断。
它的语法如下:```<c:if test="${条件表达式}"><!-- 此处为满足条件时的内容 --></c:if>```其中,`${条件表达式}`为需要判断的条件表达式,如果条件表达式为真,则执行if标签内的内容。
除了<c:if>标签,还可以使用<c:choose>和<c:when>标签来实现条件判断。
它们的语法如下:```<c:choose><c:when test="${条件表达式}"><!-- 此处为满足条件时的内容 --></c:when><c:otherwise><!-- 此处为条件不满足时的内容 --></c:otherwise></c:choose>```其中,可以有多个<c:when>标签,用于判断多个条件。
例如,以下示例代码展示了如何使用if-else标签判断变量num 的值是否大于10:```<c:if test="${num > 10}"><p>${num}大于10</p></c:if><c:if test="${num <= 10}"><p>${num}小于等于10</p></c:if>```通过使用if-else标签,可以根据条件来展示不同的内容,实现页面上的动态逻辑处理。
<%@taglib prefix="c" uri="/jsp/jstl/core" %>标签导入JSTL简介:标准标签库JSTL的全名为:Java Server Pages Standard Tag Library.JSTL主要提供了5大类标签库:1. 核心标签库: 为日常任务提供通用支持,如显示和设置变量,重复使用一组项目,测试条件以及其他操作(如导入和重定向web页面等).2. 国际化(I18N)标签库: 支持多种语言的引用程序.3. SQL标签库: 对访问和修改数据库提供标准化支持.4. XML标签库: 对XML文件处理和操作提供支持,包括XML节点的解析,迭代,基于XML数据的条件评估以及可扩展样式语言转换(Extensible Style Language Transformations , XSLT)的执行.5. 函数标签库: 通过在EL表达式中调用函数标签库中的函数来实现特定的操作,例如: ${fn:contains(sring,substring)},其功能是判断string字符串中是否包含substring字符串.JSTL标签库使用方法:标签库URI 前缀使用模式核心标签库/jstl/core c <c:tagname…>国际化标签(I18N) /jstl/fmt fmt<fmt:tagname…>SQL标签库/jstl/sql sql<sql:tagname…>XML标签库/jstl/xml x<x:tagname…>函数标签库/jstl/functions fn<fn:tagname…>核心标签库核心标签库包括:out , set , remove , catch , if , choose , when 和URL 等.表达式操作标签: 包括:out , set , remove , catch.out标签:核心标签库中最为基本的标签就是<c:out>,他可以在页面中显示一个字符串或者一个EL表达式的值,其功能与JSP中的<%= 表达式%>类似使用格式如下:<c: out value=”object” [escapeXml=”true|false”] />这个标签还可以有一个体,如下:<c: out value=”object” [escapeXml=”true|false”] >defalut value</c:out>这表示当value属性指定的object值为null时,就会显示体中指定的值,也就是default value的值,体中也可以是jsp代码.<c:out>中各属性的说明如下:1. value : 可以指定一个字符串作为输出内容,也可以指定为EL表达式,例如:${3+5}.2. escapeXml : 类型为boolean , 确定, < , > , & , … , “ 等字符在结构的字符串中是否被转换成字符串实体代码,默认值是true(就是是否按html中的样式进行输出,设置true就是按照字符串原样进行输出,false就是按照html标识符进行输出)3. default value : 可以是字符串,也可以是一个EL表达式或者jsp表达式,如果属性(value)指定的表达式或者对象为null,那么将输出这个defalut value部分的值.set标签:set标签用来在某个范围(request,session或者application)内设置值,或者设置某个对象的属性值.Set标签使用格式如下:1. 使用value 属性在一个特定的范围内指定某个变量的值,其使用格式如下:<c:set var=”varName” value=”varValue” [scope=”page|request|session|application”]/>2. 当使用value属性在一个特定范围内指定某各变量的值时,也可以包括一个体,他的作用与out标签体的作用一样,即value指定的值为null时,默认使用体中指定的值,使用的格式如下:<c:set var=”varName” value=”varValue” [scope=”page|request|session|application”]>default value</c:set>3. 设置某一个特定对象属性的使用格式如下:<c:set property=”propertyName” target=”target” value=”value”/>4. 在设置某个特定对象的一个属性时,也可以使用一个体,并且指定默认的值,使用格式如下:<c:set property=”propertyName” target=”target” value=”value”>default value</c:set>该标签中的各属性说明如下:1. value : 该属性指定变量或者对象中某个属性的值,并且可以是一个表达式.2. var : 变量名称,value属性指定的值就保存在这个变量中.3. scope : 设定变量的有效范围,如果不设置,默认为page.4. target : 设置属性的一个对象,它必须是JavaBean 或者java.util.Map对象.5. property : 设置对象中的一个属性.remove标签remove标签一般和set标签配套使用,两者是相对应的,remove标签用于删除某个变量或者属性,使用格式如下:<c:remove var=”varName” [scope=”page|request|session|application”] />Remove标签中使用的各属性说明如下:1. scope : 设定这个需要删除的变量的所在范围.2. var : 需要删除的变量或者对象属性的名称.如果没有scope属性,即采用默认值,就相当于调用PageContext.removeAttribute(varName)方法,如果指定了这个变量所在的范围,那么系统会调用PageContext.removeAttribute(varName,scope)方法.catch标签catch标签的功能和java中的try{…}catch{…}语句的功能很相似,它用于捕获嵌入到其中间语句抛出的异常,这个标签的使用格式如下:<c:catch var=”varName”>相关操作语句</c:catch> --如果操作语句中出现异常,则catch会将异常保存在varName变量中.流程控制标签: 包括: if , choose , when , otherwise 等.if标签这个标签作用与java中的if语句作用相同,用于判断条件语句,主要的使用格式如下1. 在<c:if> 体中不包括体的使用格式:<c:if test=”checkCondition” var=”varName”scope=”page|request|session|application”/>2. 当<c:if> 体中包括体时,使用格式如下:<c:if test=”checkCondition” var=”varName”scope=”page|request|session|application”>body content</c:if>标签中使用的属性说明:test : 判断条件的表达式,返回类型为true 或者false;(也就是if 的条件)var : 这个变量用于保存test条件表达式判断所返回的true或者false值(if条件执行后所得到的boolean值将要保存在var变量中).scope : 指定var变量所在的有效范围.choose , when , otherwise 标签这些标签相当于java中的switch , case , default 条件,使用实例如下:<c:set var=”num” scope=”page” value=”admin”/><c:choose><c:when test=”${num==‟guest‟}”><c:out value=”guest”/></c:when><c:when test=”${num==‟admin‟}”><c:out value=”admin”/></c:when><c:otherwise><c:out value=”other”/></c:otherwise></c:choose>运行jsp页面后,输出adminforEach迭代标签该标签用来对一个collection集合中的一系列对象进行迭代输出,并且可以指定迭代次数,一般的使用格式如下:<c:forEach items=”collection” var=”varName” [varstatue=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]>Body content</c:forEach>这个标签使用的属性描述如下:1. var : 也就是保存在collection集合类中的对象名称.2. items : 将要迭代的集合类名.3. varStatus : 存储迭代的状态信息,可以访问到迭代自身的信息.4. begin : 如果指定了begin值,就表示从items[begin]开始迭代;如果没有指定begin值,则从集合的第一个值开始迭代.5. end : 表示迭代到集合的end位时结束,如果没有指定end值,则表示一直迭代到集合的最后一位.6. step : 指定迭代的步长.例:<%String Items[] =new String[5];Items[0]=”核心标签库”;Items[1]=”国际化标签库”;Items[2]=”SQL标签库”;Items[3]=”XML标签库”;Items[4]=”函数标签库”;Request.setAttribute(“ItemName”,Items);%><B><c:out value=”不指定begin和end的迭代:”/><B><br><c:forEach var=”ItemName” items=”${Items}”> <c:out value=”${ItemName}” /><br></c:forEach><B><c:out value=”指定begin和end的迭代:”/><B><br><c:forEach var=”ItemName” items=”${Items}” begin=”1” end=”3”step=”1”> <c:out value=”${ItemName}” /><br></c:forEach><B><c:out value=”输出整个迭代的信息:”/><B><br><c:forEach var=”ItemName” items=”${Items}” begin=”3” end=”4”step=”1” varStatus=”s”> <c:out value=”${ItemName}” />的四种属性:<br> 所在位置即索引: <c:out value=”${s.index}” /> <br> 总共已迭代的次数: <c:out value=”${s.count}”/><br> 是否为第一个位置: <c:out value=”${s.first}” /><br> 是否为最后一个位置: <c:out value=”${st}”/></c:forEach>代码说明: s.index 用来获取计数器的值, s.count用来获取这是第几次循环, s.first 用来获取是否是循环开始的第一次, st用来获取是否是循环的最后一次, first 和last 都返回boolean 值.f orTokens 标签这个标签的作用和Java中的StringTokenizer类的作用非常相似,通过items 属性来指定一个特定的字符串,然后通过delims属性指定一种分隔符(可以同时指定多个),通过指定的分隔符把items属性指定的字符串进行分组,与forEach标签一样,forTokens标签也可以指定begin和end以及step属性值.使用格式如下:<c:forTokens items=”stringOfTokens” delims=”delimiters”var=”varName” [varStatus=”varStatusName”] [begin=”begin”][end=”end”] [step=”step”]>Body content</c:forTokens>标签中的各个属性描述如下:1. var : 进行迭代的参数名称.2. items : 指定的进行标签化的字符串.3. varSatus : 每次迭代的状态信息.4. delims : 使用这个属性指定的分隔符来分隔items指定的字符串.5. begin : 开始迭代的位置.6. end : 迭代结束的位置.7. step : 迭代的步长.例:<c:out value=”forTokens标签实例”/><h4>使用” | ” 作为分隔符</h4><c:forTokens var=”token” items=”bleu,rouge|vert,jaune|blanc,rouge”delims=”|”> <c:out value=”${token}”/></c:forTokens><h4>使用” | , ”作为分隔符</h4><c:forTokens var=”token” items=”bleu,rouge|vert,jaune|blanc,rouge”delims=”|,”> <c:out value=”${token}”/></c:forTokens>代码说明: delims=”|,” , 即使用”|”和”,”同时作为分隔符进行使用.如果需要更多的分隔符就是使用“|,./” 在引号内输出.URL相关的标签:URL相关的标签主要用来将其他文件包含进来,或者提供页面之间的重定位以及URL地址的生成,参数的输出等.一般包括如下几个标签.<c:import>标签: 与传统JSP页面重的<jsp:include>标签类似.<c:redirect>标签: 进行页面的重定位.<c:url> : 主要用来重写URL地址.<c:param> : 一般param标签会与其他标签一起配套使用,用于参数值的传递.<c:import> 标签:该标签用于把其他今天文件包含到该文件当中,它与传统的<jsp:include>相类似,不同的是<jsp:include>标签只能用来包括该应用中的其他文件,而<c:import>还可以包含外部站点中的静态文件,所以它的功能更加强大.使用格式如下:<c:import url=”url” [context=”context”] [var=”varName”] [scope=”page|request|session|application”] [varReader=”varReader”] [charEncodion=”charEncoding”]>Body content</c:import>标签中的属性描述如下:url: 待引用静态文件的URL地址.context: 当采用相对路径访问一个外部静态文件时,这里的context指定这个外部文件的名称.var: 当使用字符串输出时,把输出的内容存储在这个var指定的变量中.scope: 指定var参数变量的有效范围.varReader: 这个属性指定的参数变量类型是Reader,可以用于读取文件的内容.charEncoding: 引入文件所采用的字符编码.Import标签即可以采用相对路径也可以采用绝对路径来引用本地点中的任何静态文件,还可以使用绝对路径引用外部站点中的静态文, 甚至可以是ftp站点中的文件,例如:<c:import var=”myurl”url=”” />就是引用 站点的主页面.可以把引用文件中的内容赋值给var属性指定的变量,然后进行读取,也可以赋值给varReader指定的Reader类型的变量,然后进行相应的读取.有时引入的文件在本地显示会出现乱码,这时可以通过charEncoding来指定这些内容所采用的字符集编码.<c:redirect>和<c:param>标签:Redirect标签用来进行页面之间的重定向,它与传统JSP程序重的<jsp:redirect>标签功能相类似,param标签是与redirect一起使用的,它用来进行参数值的传递,redirect标签的使用格式如下:<c:redirect url=”url” [context=”context”]/>在redirect标签中指定param参数的使用格式如下:<c:redirect url=”url” []context=”context”><c:param name=”paramName” value=”value”/></c:redirect>例: [通过创建c_redirect1.jsp 和c_redirect2.jsp 两个文件说明] c_redirect1.jsp文件内容如下:<c:redirect url=”c_redirect2.jsp” ><c:param name=”userName” value=”admin”/></c:redirect>c_redirect2.jsp 文件内容如下:<body>userName=<c:out value=”${erName}”></body>c_redirect1.jsp页面文件内容不会显示,因为直接重定向到c_redirect2.jsp,重定向c_redirect2.jsp后,页面中输出userName=admin<c:url>标签:这个标签主要用来重写url地址,使用格式如下:<c:url value=”value” [context=”context”] [var=”varName”] [scope=”page|request|session|application”] />当进行参数传递时,使用格式如下:<c:url value=”value” [context=”context”] [var=”varName”] [scope=”page|request|session|application”] ><c:param name=”paramName” value=”value” /></c:url>标签中使用的属性描述如下:value: 将要处理的URL地址.context: 当使用相对路径方法指定外部文件时,这个属性指定的是外在文件的名称.var: 给这个URL地址起一个标识.Scope: 规定这个var属性所指定变量的有效范围.创建一个c_url.jsp,其源代码如下:<%@ taglib prefix=”c” uri=”/jsp/jstl/core” %><c:url var=”url” value=”c_url2.jsp” scope=”session” ><c:param name=”userName” value=”admin”/><c:param name=”password” value=”123456”/></c:url><c:out value=”${url}”/><a herf=‟<c:out value=”${url}”/>‟>Link to other page</a>代码说明: url标签可以指定一个变量(var属性指定)来把url地址保存,并且可以指定这个变量的有效范围为session ,所以当需要用到这个url地址时,就可以使用session.getAttribute(varName)方法来获取这个地址,所以一般需要重复使用同一个url地址才会使用<c:url>标签的功能.。