JSTL标签的用法
JSP中JSTL提供的函数标签EL表达式操作字符串的方法

(3)去空格:
trim("原字符串")----去掉字符串前后的空格----例:${fn:trim(" Hello,Word! ")}
(4)替换字符:
replace("原字符串","要替换的字符","替换后的字符")----替换字符----例:${fn:replace("Hello,Word!","Word","你好")}
因此JSTL内置了几个用于字符串操作的方法,可以直接在表达式中使用,大大的简化了代码,提供代码的可读性。在JSTL的表达是中要使用一个函数,其格式如下
${fn:methodName(args....)}
在使用这些函数之前必须在JSP中引入标准函数的声明
<%@ taglib prefix="fn" uri="/jsp/jstl/functions" %>
----${fn:contains("Hello,Word","Hello") }
containsIgnoreCase("字符串1","字符串2")返回boolean----判断一个字符串是否包含另一个字符串,不区分大小写
----${fn:containsIgnoreCase("Hello,Word","w") }
JSP中JSTL提供的函数标签EL表达式操作字符串的方法
首先在jsp页面导入标签
<%@ taglib prefix="fn" uri="/jsp/jstl/functions"%>
实验四:EL表达式和JSTL标签库的使用复习进程

实验四:EL表达式和JSTL标签库的使用一、实验的目的(1)掌握EL表达式的使用。
(2)掌握JSTL标签库的使用。
二、实验内容与要求(1)学习EL表达式的原理和使用。
(2)了解JSTL标签库的原理及使用。
(3)EL实例的调试。
(4)JSTL实例的调试。
三、实验主要步骤1. EL表达式实例程序的调试(1)源代码el.jsp<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'el.jsp' starting page</title></head><body>45+36=${45+36}<br/><%=pageContext.getAttributesScope("info") %><br/>${info}<br/>ID:${user.id}<br/>ID:${er.id}<br>ID:${user[id]}<br/>name:${}<br/>age:${user.age}<br/>salary:${user.salary}空么?= ${empty user }><br/>Age>20:${user.age>=20 }<br/>ID is empty:${empty user.id }<br/></body></html>(2)源代码employeemain.jsp<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <%@ taglib uri="/jsp/jstl/core" prefix="c"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>员工管理主菜单</title></head><body><h1>员工列表</h1><hr/><table width="100%" border="1"><tr bgcolor="#99FFFF"><td width="14%">编号</td><td width="14%">姓名</td><td width="14%">性别</td><td width="14%">省份</td><td width="14%">城市</td><td width="14%">民族</td><td width="20%">操作</td></tr><c:forEach var="emp" items="${emplist}"><tr><td width="14%"><a href="toview.do?id=${emp.stu_id}">${emp.stu_name }</a></td> <td width="14%">${emp.stu_id}</td> <td width="14%">${emp.sex}</td><td width="14%">${emp.province}</td><tdwidth="14%">${emp.area}</td><td width="14%">${emp.nation}</td><td width="20%"><a href="toModofy.do?id=${emp.stu_id}">修改</a><a href="toDelete.do?id=${emp.stu_id}">删除</a></td></tr> </c:forEach></table></body></html>运行结果截图:2. JSTL标签库的使用程序实例的调试(1)源代码fmt02.jsp<%@ taglib uri="/jsp/jstl/core" prefix="c" %><html><head><title>JSTL日期格式案例</title></head><body><h1>JSTL日期格式标记</h1><hr><jsp:useBean id="now" class="java.util.Date"></jsp:useBean><fmt:setLocale value="zh_CN"/>full格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="full" timeStyle="full"/><br> long格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="long" timeStyle="long"/><br>medium格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="medium"timeStyle="medium"/><br>default格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="default" timeStyle="default"/> <br>short格式日期:<fmt:formatDate value="${now}" type="both" dateStyle="short" timeStyle="short"/><br> <hr></body></html>运行结果截图:(2)源代码jstl01.jsp<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><%@ taglib uri="/jsp/jstl/core" prefix="c" %><%@ taglib uri="/jsp/jstl/fmt" prefix="fmt" %><%@ taglib uri="/jsp/jstl/sql" prefix="sql" %><%@ taglib uri="/jsp/jstl/xml" prefix="x" %><%@ taglib uri="/jsp/jstl/functions" prefix="fn" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>JSTL应用</title></head><body><h1>c:forTokens标记使用</h1><hr/><c:set var="infos" value="10,30,40,50,60" /><c:forTokens items="${infos}" delims="," var="info" varStatus="status"><c:out value="${status.index}" />-<c:out value="${status.count}" />-<c:out value="${info}" /><br/></c:forTokens><hr/></body></html>运行截图:(3)源代码sql01.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="/jsp/jstl/core" prefix="c" %><%@ taglib uri="/jsp/jstl/fmt" prefix="fmt" %><%@ taglib uri="/jsp/jstl/sql" prefix="sql" %><%@ taglib uri="/jsp/jstl/xml" prefix="x" %><%@ taglib uri="/jsp/jstl/functions" prefix="fn" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>使用JSTL SQL标记</title></head><body><sql:setDataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/student" user="root" password="root" var="infoData" scope="request" /><sql:query sql="select * from stuinfo" dataSource="${infoData}" var="emplist"scope="request"> </sql:query><h1>员工列表</h1><hr/><table width="100%" border="1"><tr bgcolor="#99FFFF"><td >编号</td><td width="14%">姓名</td><td width="14%">性别</td><td width="14%">省份</td><td width="14%">城市</td><td width="14%">民族</td><td width="20%">操作</td></tr><c:forEach var="row" items="${emplist.rows}"><tr><td width="14%"><a href="toview.do?id=${row.stu_id}">${row.stu_name }</a></td> <td width="14%">${row.stu_id}</td><td width="14%">${row.sex}</td><td width="14%">${row.province}</td><td width="14%">${row.area}</td><td width="14%">${row.nation}</td><td width="20%"><a href="toModofy.do?id=${row.empid}">修改</a><a href="toDelete.do?id=${row.empid}">删除</a></td></tr></c:forEach></table><hr/></body></html>运行截图:四、结论与体会EL表达式的目的是使用简洁的语法来替代jsp的表达式脚本<%=表达式%>,在jsp页面中输出动态的内容。
jstl 中 if语句的使用

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,则显示"未成年"。
jstl中foreach用法

jstl中foreach用法一、JSTL中forEach的基本用法1. 在JSP页面中使用JSTL的forEach标签就像拥有了一个魔法棒,它能轻松地遍历集合。
比如说,你有一个存放着学生名字的List,就像一个装满宝贝的盒子。
`<c:forEach var="studentName"items="${studentNameList}">`,这里的`var`就像是给每个从盒子里拿出来的宝贝取个临时名字,`items`就是那个装满宝贝(学生名字)的盒子(集合)。
2. 假设你是一个图书管理员,有一个书架(数组)放着各种各样的书。
在JSTL中,你可以这样用forEach遍历这个书架。
`<c:forEachvar="book" begin="0" end="${bookArray.length - 1}">`,这里的`begin`和`end`就像是你从书架的第几本开始看,到第几本结束看,是不是很方便呢?3. 如果你的集合是一个Map,那forEach标签也能搞定。
这就好比你有一个装满各种水果和它们数量的篮子(Map),`<c:forEachvar="entry" items="${fruitMap}">`,这里的`entry`就是这个篮子里的每一组水果和数量的组合。
4. 想象一下,你有一个装满彩色珠子(字符串元素)的罐子(List)。
在JSP中,你可以用`<c:forEach var="bead"items="${beadList}">${bead}</c:forEach>`轻松地把每个珠子(字符串)拿出来展示,就像把罐子里的珠子一个一个摆在桌子上。
5. 好比你有一组朋友的年龄存放在一个数组里,就像一串数字挂在绳子上。
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用法

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表达式,用于给变量赋值。
jstl中的foreach语法,并举例说明

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的用法

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>。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JSTL标签的用法JSP 标准标记库( Standard Tag Library , JSTL) 是一组以标准化格式实现许多通用的 Web 站点功能的定制标记。
JSP 技术的优势之一在于其定制标记库工具。
除了核心 JSP 标记,如jsp:include 之外,定制标记库工具使您能够创建唯一的标记来描述以站点或应用程序为导向的操作。
一旦您创建了定制标记库 ( 简称 taglib) ,当您扩展项目或转向另一个项目时您可以重复使用这些标记。
您还可以将 taglib 传递给其它开发人员,从而他们可以在自己的网站上使用,或者在您 Web 应用程序的其它部分使用。
JSTL 的目标是为了简化 JSP 页面的设计。
对于页面设计人员来说,使用脚本语言(默认值是 JAVA 语言)操作动态数据是比较困难的,而采用标签和表达式语言相对容易一些, JSTL 的使用为页面设计人员和程序开发人员的分工协作提供了便利。
一.配置 JSTL包括两个 JAR 文件, jstl.jar 和 standard.jar 。
是什么没有必要管,重在应用( 1+1 ? =2 ,我们没有必要深究,只需要知道这么用就行。
)。
原文引入:<%@ taglib prefix="c" uri="/jsp/jstl/core" %> <%@ taglib prefix="sql" uri="/jsp/jstl/sql" %> <%@ taglib prefix="fmt" uri="/jsp/jstl/fmt" %>1.1版:<%@ taglib uri="/jsp/jstl/core" prefix="c" %>1.0版<%@ taglib uri="/jstl/core" prefix="c"%>二. Core 标签库Core 标签库主要包括了一般用途的标签、条件标签、迭代标签和 URL 相关的标签。
在 JSP 页面使用 Core 标签,要使用 taglig 指令,指定引用的标签库,如下:<%@ ta glib rui=”/jsp/jstl/core”prefix=”c” %>一般用途的标签有<c:out>、<c:set>、<c:remove>、<c:cath>1.<c:out>用于计算一个表达式并将结果输出。
类似于 JSP 中 <%= %> 表达式,或者是 EL 中 $ ${el-expression} 。
<c:out value=”${a}”></c:out>2.<c:set>用于设置范围变量的值或者 javabean 对象的属性。
看个实际例子:<c:set var=”username” value=”lisi” scope=”session”/>这样就相当于设置了 session 。
3.<c:remove>相对 <c:set> 其作用是移除范围变量。
比如: <c:removevar=”nusername” scope=”session”/>4.<c:catch>用于捕获在其中嵌套的操作所抛出的异常对象,并将异常信息保存到变量中。
我们将有可能抛出异常的代码放置到开始标签 :<c:catch> 和结束标签 :</c:catch> 之间。
如果其中代码出现异常,异常对象将被捕获,保存在 var 声明的变量中,该变量总是有 page 范围。
如果没有发生异常,而 var 所标识的范围变量将被移除。
如果没有指定 var 属性,异常只是简单的被捕获,异常信息并不会被保存。
Eg :<c:catch var=”exception”><%int i = 5;int j = 0;int k=i/j;%></c:catch><c:out value=”${exception}” /><br><c:out value=”${exception.massage}”/>后一句相当于: exception.getMessage()条件标签包括<c:if><c:choose><c:when><c:otherwise>1.<c:if>用于实现 java 中的 if 语句功能。
<c:if test=”${user.visitCount==1}”>This is your first visit .</c:if>若为 true ,会打印中间部分。
也可以声明 var ,方便下一步判断。
<c:if test=”${==’admin’}” value=”result”/><c:out value=”${result}” />2.<c:choose><c:choose> 和 <c:when> 、 <c:otherwise> 一起实现互斥条件执行,类似于 java 中的 if else.<c:choose> 一般作为 <c:when> 、 <c:otherwise> 的父标签。
eg :<c:choose><c:when test="${row.v_money<10000}">初学下海</c:when><c:when test="${row.v_money>=10000&&row.v_money<20000}">身手小试</c:when><c:otherwise>商业能手</c:otherwise></c:choose>迭代标签迭代标签有<c:forEach>和</c:forEach> java代码中的循环<forEach items="包含要迭代的内容的数据结构对象"var="用户指定的当前正在迭代的元素"varStatus="当前元素的状态(count|index|first|last)" count执行的次数,index索引值,first 是否为第一个,last是否为最后一个begin="迭代开始的位置"end="迭代结束的位置"step="迭代的步长" ></forEach>// 遍历记录集<c:forEach items="${finalResult.rows}" var="row"><tr class="<%=tdClass[(rank+1)%2]%>"><td align="center"><span><%=rank%> </span></td><td align="center"><span ><c:outvalue="${row.player_name}"/></span> </td><td align="center"><span > ¥ <c:outvalue="${row.money}"/></span></td></tr><%rank++;%></c:forEach>也可以设定固定次数。
<c:forEach var =”i” begin=”100 “ end= “110”>${i}</c:forEach>如果再加个 step= “ 2 ”那么每次增长为 2 。
三. sql 标签设置数据源:<sql:setDataSource dataSource="proxool.breadTycoon" />// 将数据库某查询的结果声明为一个变量<sql:query var="finalResult" >select player_name,money from tb_player order by money DESC LIMIT 10</sql:query>然后可以:<c:forEach items="${ finalResult.rows}" var="row" varStatus="s">advCosts[${s.index}]=${row.adv_cost};</c:forEach>数据更新标签:<sql:update>call proc_set_role_salespro(?,?,?,?,?);<sql:param value="30"/><sql:param value="39"/><sql:param value="<%=spID%>"/><sql:param value="<%=productID%>"/><sql:param value="1"/></sql:update><sql:query var="queryAllChannelCount">SELECT COUNT(*) as total FROM tb_channel WHERE game_id=? ANDbegin_round<func_cur_round(?) AND player_id=? AND channel_flag=0 <sql:param value="${gameID}"/><sql:param value="${gameID}"/><sql:param value="${playerID}"/></sql:query><c:forEach items="${queryAllChannelCount.rowsByIndex}"var="channelCN"><c:set value="${channelCN[0]}" var="channelTotal"/></c:forEach>调用存储过程更新数据库:<c:if test="${param.changsubmit!=null}" ><c:forEach items="${paramValues.pro_id}" var="getpro_id"varStatus="getparamsta"><sql:update>call proc_set_role_product(?,?,?,?,?,?,?,?);<sql:param value="${gameID}"/><sql:param value="${playerID}"/><sql:param value="${getpro_id}"/><sql:param value="${getpro_id}"/><sql:paramvalue="${paramValues.pro_sort[getparamsta.index]}"/><sql:param value="${paramValues.price[getparamsta.index]}"/><sql:param value="${paramValues.output[getparamsta.index]}"/><sql:param value="0"/></sql:update></c:forEach></c:if>四.格式化标签<fmt: formatNumber value =”12.3” pattern=”.000”/>将输出 12.300. 应用样式”.000”,将使格式化后的小数部分有 3 位。