JSTL标准标签库
- 格式:doc
- 大小:123.00 KB
- 文档页数:11
EL和JSTL主要内容✓EL表达式✓JSTL标签库1.EL表达式EL表达式又称为表达式语言(Expression Language),它是JSP中一个很重要的组成部分。
在JSP页面中使用EL表达式,可以简化对变量和对象的访问。
EL表达式的语法非常的简单,所有的EL表达式都是以“${”开始,以“}”结束,比如${name}。
EL表达式会将表达式中的结果在页面上输出,就像使用JSP的表达式结构或使用out内置对象进行输出一样。
EL表达式对运算符支持使用EL表达式进行算术运算,在EL表达式中支持+、-、*、/、%运算,示例如下:代码演示:EL表达式算术运算<%@ page language="java" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>EL表达式算术运算</title></head><body>12 + 15 = ${12+15}<br>12 * 15 = ${12*15}<br>12 - 15 = ${12-15}<br>12 / 15 = ${12/15}<br>12 % 15 = ${12%15}<br></body></html>图1 EL表达式算术运算结果在EL表达式中还可以支持关系运算符操作,示例如下:代码演示:EL表达式关系运算符<body>12==15 ${12==15}<br>12<15 ${12<15}<br>12>15 ${12>15}<br>12<=15 ${12<=15}<br>12>=15 ${12>=15}<br>12!=15 ${12!=15}</body>EL表达式除了支持普通的关系运算符外,还可以使用字符来表示关系运算符,下面的写法和上面使用普通关系运算符表示的顺序一一对应:代码演示:EL表达式关系运算符<body>12==15 ${12 eq 15}<br>12<15 ${12 lt 15}<br>12>15 ${12 gt 15}<br>12<=15 ${12 le 15}<br>12>=15 ${12 ge 15}<br>12!=15 ${12 ne 15}</body>图2 EL表达式关系运算符结果EL表达式中同样支持逻辑运算:代码演示:EL表达式逻辑运算<body>${12 < 15 && 12 < 15 }<br>${12 < 15 and 12 < 15 }<br>${12 < 15 || 12 > 15 }<br>${12 < 15 or 12 >15 }<br>${!(12 < 15) }<br>${not (12 < 15) }</body>从上面的代码中可以看出EL表达式中不仅支持&&、||、!方式的逻辑运算符,同样也支持and、or、not方式的逻辑运算符。
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的作用JSTL,指的是JavaServer Pages(JSP)标准标签库。
它是一套专为基于JSP的Web应用程序设计的标准标签集合,它提供了对JSP编程中复杂又频繁出现的操作和需要的功能封装。
JSTL是一个标准标签库,由 JavaSoft出,整合了以下5个子库:1.心:定义控制结构,比如循环、条件等;2. XML:用于处理XML文档;3.式化标记:定义了国际化、数字、日期和消息格式化标签;4. SQL:定义SQL标记;5. 事务:提供了基本的数据库操作支持。
JSTL的标签可以替代JSP的脚本块,使我们的JSP文件更加简洁,代码也更易于阅读和维护。
使用JSTL提供的标签,可以使我们的代码更加简洁优雅,增强可维护性,可以和xml、xsl结合来提供复杂的数据显示,可以利用JSTL定义的标签来实现对XML数据的读取、把XML数据转换成HTML页面能识别的格式,可以利用JSTL定义的标签来调用JavaBean属性以及调用JavaBean方法,可以方便地调用数据库服务,以及简单的使用EL表达式等等。
JSTL的优势在于它提供了一组可重用的标签,允许我们以更简洁、更容易理解的方式来完成我们的工作,这也极大地简化了JSP页面的构建和维护。
JSTL不仅极大地提高了JSP的开发效率,而且与其他类库高度整合,比如struts等,实际上,JSTL作为J2EE技术栈中重要的部分,已经广泛地被公司和企业所接受。
总之,JSTL为J2EE技术栈提供了一种更加高效、更加优雅的开发方式,它极大地丰富了JSP的功能,为Web应用的开发提供了更多的思路,并且它把JSP的静态性质变成了动态性质,使得开发者可以更加灵活,也使得开发者更容易维护JSP,并且JSTL支持多种标准,比如XML、SQl等,这也使得Web的开发效率更加高效准确。
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标签库引入:/harderxin/article/details/7090501自定义标签:我们可以自己去定义一些jsp标签。
自定义包含两个:java类,tld文件(标签的描述文件)标签库JSTL(JSP Standard Tag Library):因为在jsp中使用java代码去控制页面的显示(即:用小段的<%%>),可读性很差,这样后期维护会比较麻烦,所以引入了Java标签库。
n 常用的JSTL标签库:n 核心标签库:/jsp/jstl/core包含Web 应用的常见工作,比如:循环、表达式赋值、基本输入输出等。
n 格式化标签库:/jsp/jstl/fmt用来格式化显示数据的工作,比如:对不同区域的日期格式化等。
n XML 标签库:/jsp/jstl/xml用来访问XML 文件的工作,这是JSTL 标签库的一个特点。
n 函数标签库:/jsp/jstl/functions用来读取已经定义的某个函数。
n 数据库标签库:/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="/jsp/jstl/core" %><c:out>标签用于显示变量数据。
<c:out value="${a}" default="空"[c2]escapeXml="true" [c3]></c:out><c:set>标签的常用属性(将值存储到作用域或为JavaBean 中的变量属性赋值):示例:<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的格式化标签库。
JSTLJSTL标签库(Java Server Pages Standard Tag Library)JSTL是由Apache的Jakarta小组负责维护的,它是一个不断完善的开放源代码的JSP标准标签库,JSTL包含标签库和EL表达式语言两部分。
EL表达式EL禁/启用<%@ page isELIgnored="true"%> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁止EL中的隐式对象◆${}◆${}◆cookieJSTL并没有提供设定cookie的动作,例:要取得cookie中有一个设定名称为userCountry的值,可以使用${erCountry}来取得它。
◆header和headerValuesheader 储存用户浏览器和服务端用来沟通的数据例:要取得用户浏览器的版本,可以使用${header["User-Agent"]}。
另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues 来取得这些值。
◆initParaminitParam取得设定web站点的环境参数(Context)例:一般的方法String userid =(String)application.getInitParameter("userid");可以使用${erid}来取得名称为userid◆pageContextpageContext 取得其他有关用户要求或页面的详细信息。
${pageContext.request.queryString} 取得请求的参数字符串${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串${pageContext.request.contextPath} 服务的web application 的名称${pageContext.request.method} 取得HTTP 的方法(GET、POST)${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0)${pageContext.request.remoteUser} 取得用户名称${pageContext.request.remoteAddr } 取得用户的IP 地址${pageContext.session.new} 判断session 是否为新的${pageContext.session.id} 取得session 的ID${pageContext.servletContext.serverInfo} 取得主机端的服务信息 JSTL核心标签库包括表达式标签、流程控制标签、循环标签和URL操作标签4种标签JSTL标签简介JSTL标签主要包含核心标签库、格式标签库、SQL标签库、XML标签库和函数标签库共5种标签库。
在使用JSTL标签之前必须在JSP页面的首行使用<%@ talib%>指令定义标签库的位置和访问前缀,(jstl 1.1)各个标签库的定义如下:核心标签库支持JSP中的一些基本的操作;<%@taglib prefix="c" uri="/jsp/jstl/core"%> 格式标签库 I18N capable formatting支持对JSP页面的国际化<%@taglib prefix="fmt" uri="/jsp/jstl/fmt"%>SQL标签库 Database access (SQL)支持JSP对数据库的操作<%@taglib prefix="sql" uri="/jsp/jstl/sql"%>XML标签库 XML processing支持XML文档的处理<%@taglib prefix="xml" uri="/jsp/jstl/xml"%> 函数标签库<%@taglib prefix="fn"uri="/jsp/jstl/functions"%>(J2EE1.4)也可写成:<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %><%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt" %><%@ taglib uri="/WEB-INF/fn.tld" prefix="fn" %><%@ taglib uri="/WEB-INF/x.tld" prefix="x" %><%@ taglib uri="/WEB-INF/sql.tld" prefix="sql" %>JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。
JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。
但是在即将推出的JSP 2.0中是作为标准支持的。
JSTL的优点在应用程序服务器之间提供了一致的接口,最大程序地提高了WEB应用在各应用服务器之间的移植。
2、简化了JSP和WEB应用程序的开发。
3、以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet代码的程序。
在公司的项目中是不允许有任何的scriptlet代码出现在JSP中。
JSTL标签使用一、Core标签库1.通用标签<c:out><c:out>标签用于在JSP中显示数据,它有如下属性属性描述是否必须缺省值value 输出的信息,可以是EL表达式或常量是无default value为空时显示信息否无escapeXml 为true则避开特殊的xml字符集否true例子: 您的用户名是: <c:out value=”${ername}”default=”guest”/>显示用户的用户名,如为空则显示guest<c:out value="${ername}"/>指定从session中获取username的值显示;<c:out value="${username}" />显示username的值,默认是从request(page)中取,如果request中没有名为username的对象则从session中取,session中没有则从application(servletContext)中取,如果没有取到任何值则不显示。
<c:set><c:set>标签用于保存数据,它有如下属性属性描述是否必须缺省值value 要保存的信息,可以是EL表达式或常量否target 需要修改属性的变量名,一般为javabean的实例否无property 需要修改的javabean属性否无var 需要保存信息的变量否无scope 保存信息的变量的范围否page如果指定了target属性, 那么property属性也必须指定。
例子:<c:set value="${test.testinfo}" var="test2" scope=”session”/>将test.testinfo的值保存到session的test2中,其中test是一个javabean的实例,testinfo是test对象的属性。
<c:set target="${cust.address}" property="city" value="${city}"/>将对象cust.address的city属性值保存到变量city中<c:remove><c:remove>标签用于删除数据,它有如下属性属性描述是否必须缺省值var 要删除的变量是无scope 被删除变量的范围否所有范围,包括page、request、session、application等例子: <c:remove var="test2" scope="session"/>从session中删除test2变量。
2、流控制标签<c:if><c:if>标签有如下属性属性描述是否必须缺省值test 需要评价的条件,相当于if (...){}语句中的条件是无var 要求保存条件结果的变量名否无scope 保存条件结果的变量范围否page<c:choose>这个标签不接受任何属性<c:when><c:when>标签有以下属性属性描述是否必须缺省值test 需要评价的条件是无<c:otherwise>这个标签同样不接受任何属性例子:<c:if test="${user.wealthy}">user.wealthy is true.</c:if>如果user.wealthy值true,则显示user.wealthy is true.<c:choose><c:when test="${user.generous}">user.generous is true.</c:when><c:when test="${user.stingy}">user.stingy is true.</c:when><c:otherwise>user.generous and user.stingy are false.</c:otherwise></c:choose>只有当条件user.generous返回值是true时,才显示user.generous is true.只有当条件user.stingy返回值是true时,才显示user.stingy is true.其它所有的情况(即user.generous和user.stingy的值都不为true)全部显示user.generous and user.stingy are false.由于JSTL没有形如if (){…} else {…}的条件语句,所以这种形式的语句只能用<c:choose>、<c:when>和<c:otherwise>标签共同来完成了。