JSTL 入门 表达式语言
JSTL详解(常用标签以及c:forEach遍历集合)
JSTL详解(常⽤标签以及c:forEach遍历集合)JSTL标签参考⽂章:/qq_25827845/article/details/53311722# 学习总结⼀、 JSTL的简介1. 什么是JSTLJSTL 是 JSP 标准标签库,利⽤标签库的标签可以取代 JSP 页⾯上的 Java 代码,为页⾯设计⼈员和后台开发⼈员的分⼯协作提供了便利。
2. JSTL常⽤标签库标签库名URI字符串作⽤前缀核⼼标签库<%@ taglib prefix=“c” uri=“/jsp/jstl/core” %>⽤于页⾯逻辑控制如:if、forEachc格式化标签库<%@ taglib prefix=“fmt” uri=“/jsp/jstl/fmt” %>⽤于执⾏格式操作如:格式化⽇期字符串fmt3. JSTL使⽤步骤1)、导⼊ jstl-1.2.jar 包,每个标签底层其实都是⽤ Java 代码实现的,复制 jar 包到 web/WEB-INF/lib ⽬录结构下;2)、创建 JSP 页⾯,使⽤ taglib 的指令引⽤标签库<%@ taglib prefix="c" uri="/jsp/jstl/core" %>3)、接下来就可以使⽤标签库定义好的标签了,例如:<c:if>⼆、核⼼标签库常⽤标签1. c: set 标签标签名使⽤<c:out value=“xxx”/>输出 xxx<c:out value="${age}"/>输出EL表达式 ${age} 获取的内容<c:out value=”${age}” default=”xxx”/>输出EL表达式 ${age} 获取的内容,当EL表达式内容不存在时输出 default 的内容2. c: out 标签标签名使⽤<c:set var=“a” value=“xxx”/>在pageContext中添加name为a,value为xxx的数据<c:set var=”a” value=”xxx” scope=”session”/>在session中添加name为a,value为xxx的数据3. c: if 标签属性名是否⽀持EL属性类型属性描述test⽀持,必须是EL boolean EL 中条件为真则执⾏标签体内容注意:没有对应 else 标签代码案例:<c:set var="a" value="hello"/><c:if test="${not empty a }"><c:out value="${a }"/></c:if>4. c: choose 标签作⽤:⽤于多分⽀判断(多条件判断)标签名作⽤chaoose类似于 Java 中的 switch,choose只是⼀个容器,包含下⾯两个元素when可以出现多个⽤于每个判断条件,类似于 switch 中 case。
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,则显示"未成年"。
EL表达式与JSTL
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 三目运算符
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表达式与el表达式的理解
jstl表达式与el表达式的理解JSTL(JSP Standard Tag Library)和EL (Expression Language)是在JSP中使用的两种不同的表达式语言。
JSTL是一组用来简化JSP页面开发的标签库,而EL是一种用于在JSP页面中进行表达式求值的语言。
这两种表达式语言在JSP页面中使用的方式和功能都有所不同。
JSTL表达式是一种通过标签进行数据处理和逻辑控制的方式。
它使用XML风格的标签来执行特定的操作,可以在JSP页面中实现循环、条件判断、字符串处理、日期处理等功能。
JSTL标签库包含多个不同的标签,如core、fmt、xml、sql等。
每个标签库都有一组标签,用于执行相关的操作。
例如,core标签库包含常用的循环和条件判断标签,fmt标签库包含日期和国际化相关的标签。
JSTL表达式可以通过标签来对数据进行处理。
例如,使用c:forEach标签可以对一个集合进行循环遍历,使用c:if标签可以进行条件判断。
在JSTL表达式中还可以使用EL表达式来获取和操作数据。
JSTL的标签和EL表达式可以相互结合使用,以实现更复杂的数据处理和逻辑控制。
EL表达式是一种简洁且易于使用的表达式语言,用于在JSP页面中进行数据访问和操作。
它使用类似于JavaScript的语法,可以方便地访问JavaBean中的属性和方法,以及JSP页面中的参数和属性。
EL表达式支持基本的数据类型、容器类型(如数组、列表、映射等)、运算符和函数调用。
EL表达式的语法包括使用${}来表示EL表达式的起始和结束,可以在${}中使用变量、属性、方法和运算符来进行数据访问和操作。
EL表达式可以在JSP页面中直接使用,也可以作为JSTL标签的属性值使用。
例如,可以使用${}来获取一个JavaBean对象user 的name属性值,可以使用${}来获取一个请求参数的值。
JSTL表达式与EL表达式的主要区别在于它们的语法和功能。
EL表达式与JSTL标签库(一)
EL表达式与JSTL标签库(⼀)1、JSTL概述JSTL标签库由标签库和EL表达式两个部分组成。
JSTL标准标签库(Java Server Page Standard Tag Library),⽤来解决创建的页⾯的操作问题,包括输⼊输出、条件测试、遍历集合。
2、EL表达式语法EL表达式的主要作⽤:获取数据。
EL表达式主要⽤于替换JSP页⾯中的脚本表达式,从Web作⽤域中获取Java对象,获取数据,包括访问Javabean的属性、List集合、Map集合、数组等。
执⾏运算:利⽤EL表达式可以在JSP页⾯中执⾏⼀些基本的关系运算、逻辑运算和算术运算,以在JSP页⾯完成⼀些简单的逻辑操作。
获取Web开发常⽤对象。
利⽤EL表达式的隐式对象,可以轻松获得Web常⽤对象的引⽤,从⽽获取这些对象中的数据。
EL表达式的格式: ${expression },使⽤${⽂本时需要变为\${[]和.运算符 EL表达式可以返回任意类型的值。
EL取值结果为⼀个带有属性的对象时,使⽤[]或.来访问其属性,实质是通过getter⽅法来访问其属性。
访问形式如下:${object["propertyName"]}${object.propertyName} propertyName不是有效的java变量名时,只能使⽤[]⽅式访问。
如${header["accept-language"]}。
如果访问对象的属性也是⼀个对象,并且也带有属性,此时既可以使⽤[],也可以使⽤.运算符来访问第⼆个对象的属性。
${pageContext.request.contextPath }3、EL表达式的隐式对象 EL表达式中,存在11个隐式对象。
隐式对象描述例⼦pageContext JSP上下⽂对象。
它可访问JSP隐式对象。
${pageContext.request.contextPath }param⼀个包含所有请求参数的Map。
el表达式简介
el表达式简介el表达式是JSP里标签库的一个重要的基础语言,是学好JSTL的基础,它简化了寻常获取页面数据的方式,如request.getAttribute(); session.getAttribute() 等。
用el表达式则直接调用setAttribute()方法中参数name值即可。
其实说简单点,el表达式就是用来代替传统getAttribute方法来获取setAttribute中的值。
el表达式的语法非常简单,是$与{}的组合,具体如下例子:servlet中代码:request.setAttribute("hello", "hello world");jsp中el代码:${hello}注意:红色部分的名称必须匹配。
el表达式也同样可以获取类中属性的值。
相似的还有map、数组、ArrayList等。
例子:user类中有name属性和sex属性,并且有相应的get Name()、set Name()和get Sex、set Sex()方法。
servlet中代码:先实例化user对象,并为属性赋值,request.setAttribute("user", user);jsp中el代码:${} ${user.sex}注意:红色部分的名称必须匹配,且黑色部分的属性不仅名称相同(el中属性首字母必须小写)还必须有相应的get、set方法。
另外要说明一点的就是el表达式隐含域的问题。
默认顺序是PageScope→RequestScope→SessionScope→ApplicationScope。
我们可以指定el表达式优先从那里获取数据。
如${},这样效率会高些,不过除非特殊情况需要明确指定范围,否则直接使用${}就行啦。
具体再细致的可参见/share/detail/15337789。
JSTL 入门2
JSTL(JSP标准标签库)介绍作者:令少爷(shaoye@)前言从JSP 1.1规范开始,JSP就支持在JSP中使用自定义标签了,自定义标签的广泛使用造成了程序员重复定义,这样就促成了JSTL(JavaServer Pages Standard Tag Library)的诞生。
因为工作中需要用到JSTL,但网上却苦于找不到有关JSTL的中文资料,所以就有了这篇文章。
JSTL简介JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。
JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。
但是在即将推出的JSP 2.0中是作为标准支持的。
JSTL目前的最新版本为1.02,最终发布版为1.0。
JSTL包含两个部分:标签库和EL(Expression Language表达式语言)语言。
标签库目前支持四种标签:标签URI 前缀示例Core /jstl/core c <c:tagname ...> XML processing /jstl/xml x <x:tagname ...>I18N capableformatting/jstl/fmt fmt <fmt:tagname ...> Database access(SQL)/jstl/sql sql <sql:tagname ...>Core支持JSP中的一些基本的操作;XML processing支持XML文档的处理;I18N capable formatting支持对JSP页面的国际化;Database access (SQL)支持JSP对数据库的操作。
由于本人水平有限,本文仅介绍Core标签,如有兴趣,可一起探讨其它三种标签的使用与扩充。
EL语言介绍EL语言是JSTL输出(输入)一个JAVA表达式的表示形式。
在JSTL中,EL语言只能在属性值中使用。
Jstl 使用简介
${imb.multiple == '2'}:计算有效范围内imb对象的属性multiple的值是否等于2,如果等于2则返回true,否则返回false${users}:返回有效范围内名为”users”的值,该值可以是任何对象,如:request.setAttribute(“users”,new ArrayList()); 这样得到的就是一个集合.三、部分标签使用说明1 、 <c:out>[说明]输出值,相当于 struts 中的 <bean:write>[举例]获得 request 中的属性: <c:outvalue="${requestScope.test_all}"/>获得 session 中的属性:<c:outvalue="${sessionScope.test_all}"/>获得 application 中的属性:<c:outvalue="${applicationScope.test}"/>2 、 <c:forEach>[说明]循环某个范围内的一个集合(可以是Collection、Set、List、Array 等)items----表示要循环的集合var---表示当前集合中的某条记录,可以对它进行访问[举例]3 、 <c:if>[说明]逻辑判断[举例]<c:if test="${imb.hmtb.typeid == 4}"><c:if test="${imb.multiple == '2'}">(10,270)</c:if><c:if test="${imb.multiple == '1'}">(10,290)</c:if> </c:if>4 、<c:set>[说明]设置不同的属性,并且指定它们的范围[举例]<c:set value="10000" var="maxUser" scope="application"/><c:set value="20" var="maxIdelTime" scope="session"/><c:set value="next.jsp" var="nextPage" scope="request"/>相当于:application.setAttribute(“maxUser”,”10000”);session.setAttribute(“maxIdelTime”,”20”);request.setAttribute(“nextPage”,”next.jsp”);一、什么是JSTLJSTL(JavaServerPages Standard Tag Library)JSP标准标签库。
JSTL教程 -V1.0
. 内部资料不得拷贝JSTLJSTL标准标签库AURISOFTJSTL和EL简介JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。
现在最新版本的JSTL是1.1.2 。
说到了JSTL 就一定要说EL(expression language) jsp的表达式语言,这是一种简单的语言,它是JSP2.0规范的一个新特点。
在之前的JSP中,Java代码以Scriptlet的形式嵌入JSP 页面:<% =str%>。
现在我们可以通过${str}这样的形式来访问后台的数据了。
表达式语言有以下特点:●可获得的名称空间(PageContext属性)。
●嵌套的属性,可以访问集合对象。
●可以执行关系的、逻辑的和算数的运算。
●扩展函数可以和Java类的静态方法映射。
●它可以访问JSP的一系列的隐含对象(request、session、application、page等)。
通过表达式语言,可以非常简单的访问JavaBean中的属性,比如JSP中可以这样访问一个简单的参数:$ {userName} 也可以这样反问一个嵌套的参数:${erName.firstName}表达式语言也可以和JSTL结合使用,如:<c:if test=”${sessionScope.cart.numberOfItems > 0}”>……</c:if>表达式可以包含运行逻辑,如:<c:if test = “${bean1.a < 3 && bean1.a >0”}>……<c:if>表达式包含在${}之间,如果需要在客户端输出${字符,那么可以使用以下的方式:<c:out value=”an expression is ${‘${‘}true}”/>由于在jsp2.0以前没有表达式语言,所以jsp2.0以前的代码中可以包含${之类的代码,如果试图解析这些表达式,肯定造成错误,为了和jsp以前的规范兼容,可以在页面前面声明是否忽略表达式,声明语句如下:<%@ page isELIgnored=”true|false”%>下面我们来看一下EL的操作和他们的优先级别,最上边的优先级高,然后是左边的高:[],()unary -、not、!、empty*、/、div(除)、%、mod (取模)+、binary –< 、>、<=、>=、lt(小于)、gt(大于)、le(小于等于)、ge(大于等于)==、!=、eq(等于)、ne(不等于)&&、and (与)||、or(或)。
chapter15_标准标记库(JSTL)
9/67
例:el.jsp
<jsp:useBean id="user" class="er"> <jsp:setProperty name="user" property="*"/> </jsp:useBean> <body> 获取参数方法一: 获取参数方法一 <hr/> 姓名:${erName}<br> 姓名 密码:${user.password }<br> 密码 年龄:${user.age }<hr> 年龄 获取参数方法二: 获取参数方法二 <hr/> 姓名:${erName}<br> 姓名:${erName}<br> 密码:${param.password }<br> 密码 年龄:${param.age }<hr> 年龄 获取参数方法三: 获取参数方法三 <hr/> 姓名:${param['userName']}<br> 姓名 密码:${param['password'] }<br> 密码 年龄:${param['age'] }<hr> 年龄 <p>
<hr/> 表单 <form> 姓名: 姓名 <input name="userName"><br> 密码: 密码 <input name="password"><br> 年龄: 年龄 <input name="age"><br> <input type="submit"> </form>
JSTL详解
java逻辑代码,同时也由于自定义标签的开发难度较大和不利于技术标准化产生了自定义标签库。
JSTL标签库可分为5类:∙核心标签库∙I18N格式化标签库∙SQL标签库∙XML标签库∙函数标签库八、JSTL 表达式在页面的配置。
1、导入standard.jar和jstl.jar。
2、在JSP页面上引入 JSTL 的引用。
如:Java代码1.<%@ taglib uri="/jsp/jstl/core" prefix="c" %>九、JSTL 的使用。
1、核心标签库JSTL的核心标签库标签共13个,从功能上可以分为4类:表达式控制标签、流程控制标签、循环标签、URL操作标签。
使用这些标签能够完成JSP页面的基本功能,减少编码工作。
如:∙表达式控制标签:out标签、set标签、remove标签、catch标签。
∙流程控制标签:if标签、choose标签、when标签、otherwise标签。
∙循环标签:forEach标签、forTokens标签。
∙URL操作标签:import标签、url标签、redirect标签。
下面,演示各个标签的使用。
1.1、表达式控制标签。
(1)、<c:out>标签:用来显示数据对象(字符串、表达式)的内容或结果。
相当于<% out.println(“字符串”)%> 或 <%=表达式%>。
语法如下:∙【语法1】:<c:out value=”要显示的数据对象” [escapeXml=”true|false”] [default=”默认值”]>∙【语法2】:<c:out value=”要显示的数据对象” [escapeXml=”true|false”]>默认值</c:out>∙【语法1】:Java代码Java代码Java代码Java代码提示:从功能上分语法1和语法2、语法3和语法4的效果是一样的只是把value值放置的位置不同至于使用那个根据个人的喜爱,语法1和语法2是向scope范围内存储一个值,语法3和语法4是给指定的JavaBean赋值。
jstl 三元表达式
jstl 三元表达式JSTL(JavaServer Pages Standard Tag Library)是 JavaWeb 开发中常用的一个标签库,它提供了一系列的标签来简化 JavaWeb 开发过程。
其中,三元表达式是 JSTL 中比较常用的一个功能。
三元表达式是一种简单的条件语句,它的语法格式为:条件 ? 值1 : 值2。
如果条件成立,则返回值1,否则返回值2。
在 JSTL 中,可以使用 <c:choose>、<c:when> 和 <c:otherwise> 标签来实现三元表达式的功能。
例如,假设我们有一个变量 num,我们想要根据 num 的值来输出不同的字符串。
可以使用如下代码实现:```jsp<c:set var="num" value="10"/><c:choose><c:when test="${num > 0}">正数</c:when><c:when test="${num < 0}">负数</c:when><c:otherwise>零</c:otherwise></c:choose>```在这个例子中,我们首先使用 <c:set> 标签设置了一个变量num 的值为 10。
然后使用 <c:choose> 标签来判断 num 的值,如果num 大于 0,则输出“正数”,如果 num 小于 0,则输出“负数”,否则输出“零”。
除了 <c:choose>、<c:when> 和 <c:otherwise> 标签外,JSTL 还提供了一些其他的标签来实现三元表达式的功能,比如 <c:if>、<c:choose>、<c:when>、<c:otherwise>、<c:forEach> 等。
JSP的EL表达式,JSTL表达式,自定义标签
EL表达式El表达式格式:${}${er.age}:表示为session范围内的user属性的age属性的值或者这样表示:${er[“age”]},中括号中age代表为user中的属性相当于以下代码User user2 = (User)session.getAttribute("user");String age = user2.getAge();什么情况下使用[]来获取属性??当属性的名称包含’.’符号时,只能用[]方式去获取这个属性,而不能使用.方式如下所示:User user3 = new User();user3.setName("zheng");session.setAttribute("er", user3);name:${ } //此种情况获取不到name的值name2: ${sessionScope["er"].name }//只能用[]的方式来获取上面的sessionScope可以省略不写,如果不写的话,将从小范围的域开始查找。
既依次request域,session域,Application域,如果找到就直接返回,不在继续下去,如果所有域都找不到该属性,则回传null。
EL可以进行自动的类型转换例如scope:${param.scope +11} 如果param.scope为数字,可以自动转换为两个数的相加隐含对象输入相关的隐含对对象1,param 获取一个${param.scope} 相当于 request.getParameter(“scope”);2,paramValues 获取一组数据,得到是一个数组${} 相当于 request.getParameterValues(“name”)其他隐含对象cookie,header,pageContext(重要) PageContext对象,可以获取页面和请求的所有信息pageContext:${pageContext.request.contextPath } //获取web应用名称SessionId :${pageContext.session.id } //获取当前session的id requestUrl :${pageContext.request.requestURL } //获取当前页面的路径EL关系运算符(关系运算符必须放在{}里面,放在外面无效)EL逻辑运算符(逻辑运算符必须放在{}里面,放在外面无效)EL 的empty运算符<!--empty可以作为一个集合,若该集合不存在或集合中没有元素,其结果都为true,否则为false -->names is Empty: ${ empty List}EL ()运算符,代表运算的优先级。
jstl常用语法头歌
jstl常用语法头歌
JSTL常用语法头歌:
JSTL功能强大,标签丰富易用,
常用语法学习,心中有数。
百分比、条件语句,循环处理数据,
格式化输出内容,让页面更美观。
核心标签库,引入不能忘,
c:out、c:set、c:remove、c:catch,
c:if、c:choose、c:when、c:otherwise,
c:import、c:forEach、c:forToken,一一掌握。
c:out用于输出,数据格式多样,
c:set保存数据,修改值别忘。
c:remove删除数据,清理内存空间,
c:catch处理异常,错误信息存。
c:if条件判断,流程控制展现,
c:choose、c:when、c:otherwise,多分支判断方便。
c:import请求资源,URL内容展现,
c:forEach循环处理,多种集合类型全。
c:forToken分割字符串,遍历其中元素,
学习常用语法,应用更顺手。
JSTL功能强大,标签丰富易用,
熟练掌握语法,开发更轻松。
实验九 EL表达式和JSTL标签库的使用
3. 在 Src 文件夹中创建一个 EmployeeBean 的 JavaBean,访问作用域变
量,其中包括 3 个属性 eno 表示雇员号、ename 表示雇员名和 ecompany 表
示雇员公司名。代码如下
【步骤1】EmployeeBean.java程序代码 package com.beans;
return eno; } public String getEname(){
return ename; } public String getEcompany(){
return ecompany; } } 【步骤2】在WebRoot目录下编写Employee.jsp页面,在其中通过表单输入雇员信息,将 请求转发到一个Servlet。 <%@ page contentType="text/html;charset=gb2312"%> <html> <body> 请输入雇员信息: <form action="employee.do" method="post"> <table> <tr><td>雇员号:</td><td><input type="text" name="eno"></td></tr> <tr><td>雇员名:</td><td><input type="text" name="ename"></td></tr> <tr><td>公司名:</td><td><input type="text" name="ecompany"></td></tr> </table> <input type="submit" value="提交"> </form> </body>
EL表达式和JSTL的使用
EL表达式和JSTL的使⽤⼀:EL表达式1.概述:在jsp开发中,为了获取Servlet域对象中存储的数据,经常要写很多java代码,这样的做法会使JSP页⾯混乱,难以维护,为此,在JSP2.0规范中提供了EL表达式。
它是Expression Language的缩写。
2.语法:${表达式}2.1内置对象: 2.1.1获取指定域的对象:<%--初始化数据-- %><%pageContext.setAttribute("name", "pValue");request.setAttribute("name", "rValue");session.setAttribute("name","sValue");application.setAttribute("name", "aValue");%><%--获取指定作⽤域的数据--%>${ }${ }${ }${ }2.1.2请求参数<%-- param.xxx 对应 request.getParameter("xxx"); paramValues.xxx 对应 request.getParameterValues("xxx");--%>${ername }${paramValues.hobby }<%--获得⼀组数据,使⽤数组 --%>${paramValues.hobby[1] }<%--如果是数组,可以使⽤下表 --%>2.1.3pageContextjsp:<%=((HttpServletRequest)pageContext.getRequest()).getContextPath() %>el:${pageContext.request.contextPath }2.2使⽤el获得数据2.2.1⾃定义数据,必须放在作⽤域<%String s = "black";%>${s } <%--⽆法获取,s不在域中 --%>2.2.2获得字符串<%String s = "black";pageContext.setAttribute("sss",s);%>${sss}<br/>${pageScope.sss }<%这两个都可以获取到字符串“black”%>2.2.3获得数组<%String[] arr = {"A","B","C"};pageContext.setAttribute("arr",arr,PageContext.REQUEST_SCOPE);%>${arr }${arr[1]}${arr[2] }//上⾯的PageContext.REQUEST_SCOPE后⾯介绍2.32.3.1setAttribute(String name,值,int scope):如果没有指定scope,该属性默认在page范围内,如:pageContext.setAttribute("page","hello"); 使⽤pageContext将属性设置在request范围中pageContext.setAttribute("request2","hello" , pageContext.REQUEST_SCOPE);使⽤pageContext将属性设置在session范围中pageContext.setAttribute("session2","hello" , pageContext.SESSION_SCOPE);使⽤pageContext将属性设置在application范围中pageContext.setAttribute("app2","hello" , pageContext.APPLICATION_SCOPE); 2.3.2 getAttribute(String name,int scope):取得指定范围内的name属性,其中scope可以是如下4个值:PageContext.PAGE_SCOPE:对应于page范围。
el表达式@jstl
一、jstl与el表达式1、jstl是什么?java standard taglib(java标准标签库)。
2、标签是什么?sun公司制订的一种技术规范,用来将jsp页面中的java代码使用类似于html当中的标记来替换的一种技术。
这样做的目的,是为了使jsp页面更好维护以及更好的测试。
3、el表达式是什么?sun制订的一种用于计算的一种规则,早期只能用于给标签的属性赋值,现在也可以直接输出。
4、el表达式的基本语法${el表达式}第一种:访问bean的属性${}:jsp引擎会依次从pageContext、request、session、application查找绑订名为"user"的对象,如果找到了,就不再向下查找,否则,继续向下查找。
找到后,调用该对象的getName(),并输出其值。
找不到,则输出""。
或者也可以使用${user["name"]}或者是${user[propname]}此外,[]里面还可以是0,1..这样的下标,作用是输出数组里的元素值。
可以使用pageScope,requestScope,sessionScope,applicationScope四个关键字指定查找的范围。
${}第二种:获得请求参数值${ername}:等价于request.getParameter("username");${paramValues.interest}:等价于request.getParameterV alues("interest");第三种:计算一个表达式,将结果作为标签的属性值或者直接输出。
算术运算:"+","-","*","/","%", 但是要注意,"+"号不能连接字符串。
JSTL入门表达式语言
级别: 初级Mark A. Kolb, 软件工程师2003 年5 月27 日JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。
在developerWorks 上其新系列的第一篇文章中,软件工程师Mark Kolb 向您展示了如何使用JSTL 标记来避免在JSP 页面中使用脚本编制元素。
您还将了解如何通过从表示层删除源代码来简化软件维护。
最后,您将了解JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对JSTL 操作指定动态属性值。
JavaServer Pages(JSP)是用于J2EE 平台的标准表示层技术。
JSP 技术提供了用于执行计算(这些计算用来动态地生成页面内容)的脚本编制元素和操作。
脚本编制元素允许在JSP 页面中包括程序源代码,在为响应用户请求而呈现页面时可以执行这些源代码。
操作将计算操作封装到很象HTML 或XML 标记的标记中,JSP 页面的模板文本通常包含这些标记。
JSP 规范只将几种操作定义成了标准,但从JSP 1.1 开始,开发人员已经能够以定制标记库的方式创建其自己的操作了。
JSP 标准标记库(JSTL)是JSP 1.2 定制标记库集,这些标记库实现大量服务器端Java 应用程序常用的基本功能。
通过为典型表示层任务(如数据格式化和迭代或条件内容)提供标准实现,JSTL 使JSP 作者可以专注于特定于应用程序的开发需求,而不是为这些通用操作“另起炉灶”。
当然,您可以使用JSP 脚本编制元素(scriptlet、表达式和声明)来实现此类任务。
例如,可以使用三个scriptlet 实现条件内容,清单1 中着重显示了这三个scriptlet。
但是,因为脚本编制元素依赖于在页面中嵌入程序源代码(通常是Java 代码),所以对于使用这些脚本编制元素的JSP 页面,其软件维护任务的复杂度大大增加了。
JSTL经典语法详解
JSTL语法及参数JSTL包含以下的标签:常用的标签:如<c:out>、<c:remove>、<c:catch>、<c:set>等条件标签:如<c:if><c:when>、<c:choose>、<c:otherwise>等URL标签:如<c:import>、<c:redirect>和<c:url>等XML标签:如<xml:out>等国际化输出标签:如<fmt:timeZone>等SQL标签:如<sql:query>、<sql:update>、<sql:transaction>等一般用途的标签:1.<c:out>没有Body时的语法<c:out value=”value” [escapeXml=”{true|false}”] [default=”defaultValue”]/>有Body时的语法<c:out value=”value” [escapeXml=”{true|false}”]>这里是Body部分</c:out>名字类型描述value Object 将要输出的表达式escapeXml boolean 确定以下字符:<,>,&,’,”在字符串中是否被除数,默认为truedefault Object 如果vaule计算后的结果是null,那么输出这个默认值2.<c:set>这个标签用于在某个范围(page、request、session、application等)中使用某个名字设定特定的值,或者设定某个已经存在的javabean对象的属性。
他类似于<%request.setAttrbute(“name”,”value”);%> 语法1:使用value属性设定一个特定范围中的属性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2003 年 5 月 27 日JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。
在 developerworks 上其新系列的第一篇文章中,软件工程师 Mark Kolb 向您展示了如何使用 JSTL 标记来避免在 JSP 页面中使用脚本编制元素。
您还将了解如何通过从表示层删除源代码来简化软件维护。
最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对 JSTL 操作指定动态属性值。
JavaServer Pages(JSP)是用于 J2EE 平台的标准表示层技术。
JSP 技术提供了用于执行计算(这些计算用来动态地生成页面内容)的脚本编制元素和操作。
脚本编制元素允许在 JSP 页面中包括程序源代码,在为响应用户请求而呈现页面时可以执行这些源代码。
操作将计算操作封装到很象 HTML 或 XML 标记的标记中,JSP 页面的模板文本通常包含这些标记。
JSP 规范只将几种操作定义成了标准,但从 JSP 1.1 开始,开发人员已经能够以定制标记库的方式创建其自己的操作了。
JSP 标准标记库(JSTL)是 JSP 1.2 定制标记库集,这些标记库实现大量服务器端 Java 应用程序常用的基本功能。
通过为典型表示层任务(如数据格式化和迭代或条件内容)提供标准实现,JSTL 使 JSP 作者可以专注于特定于应用程序的开发需求,而不是为这些通用操作“另起炉灶”。
当然,您可以使用 JSP 脚本编制元素(scriptlet、表达式和声明)来实现此类任务。
例如,可以使用三个 scriptlet 实现条件内容,清单 1 中着重显示了这三个 scriptlet。
但是,因为脚本编制元素依赖于在页面中嵌入程序源代码(通常是 Java 代码),所以对于使用这些脚本编制元素的 JSP 页面,其软件维护任务的复杂度大大增加了。
例如,清单 1 中的 scriptlet 示例严格地依赖于花括号的正确匹配。
如果不经意间引入了一个语法错误,则条件内容中的嵌套其它scriptlet 可能会造成严重破坏,并且在 JSP 容器编译该页面时,要使所产生的错误信息有意义可能会很困难。
清单 1. 通过 scriptlet 实现条件内容<% if (user.getRole() == "member")) { %><p>Welcome, member!</p><% } else { %><p>Welcome, guest!</p><% } %>修正此类问题通常需要相当丰富的编程经验。
尽管通常会由十分精通页面布局和图形设计的设计人员来开发和维护 JSP,但是同一页面中的脚本编制元素出现问题时,需要程序员的介入。
这种状况将单个文件中代码的责任分担给多人,因而使得开发、调试和增强此类 JSP 页面成为很麻烦的任务。
通过将常用功能包装到定制标记库的标准集合中,JSTL 使 JSP 作者可以减少对编制脚本元素的需求,甚至可以不需要它们,并避免了相关的维护成本。
回页首JSTL 1.0JSTL 1.0 发布于 2002 年 6 月,由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV)组成。
core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。
它还提供了用来生成和操作 URL 的标记。
顾名思义,format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。
它还支持使用本地化资源束进行 JSP 页面的国际化。
xml 库包含一些标记,这些标记用来操作通过 XML 表示的数据,而 sql 库定义了用来查询关系数据库的操作。
两个 JSTL 标记库验证器允许开发人员在其 JSP 应用程序中强制使用编码标准。
可以配置 ScriptFreeTLV 验证器以在 JSP 页面中禁用各种类型的 JSP 脚本元素― scriptlet、表达式和声明。
类似地,PermittedTaglibsTLV 验证器可以用来限制可能由应用程序的 JSP 页面访问的定制标记库集(包括 JSTL 标记库)。
尽管 JSTL 最终将会成为 J2EE 平台的必需组件,但目前只有少数应用程序服务器包括它。
JSTL 1.0 的参考实现可作为 Apache 软件基金会(Apache Software Foundation)的 Jakarta Taglibs 项目(请参阅参考资料)的一部分而获得。
可以将该参考实现中的定制标记库合并到任何支持 JSP 1.2 和 Servlet 2.3 规范的服务器,以添加对 JSTL 的支持。
回页首表达式语言在 JSP 1.2 中,可以使用静态字符串或表达式(如果允许的话)指定 JSP 操作的属性。
例如,在清单 2 中,对 <jsp:setProperty> 操作的 name 和 property 属性指定了静态值,而用表达式指定了其 value 属性。
这个操作的效果是将请求参数的当前值赋予命名的 bean 特性。
以这种形式使用的表达式被称为请求时属性值(request-time attribute value),这是构建到 JSP 规范中的用于动态指定属性值的唯一机制。
清单 2. 合并请求时属性值的 JSP 操作<jsp:setProperty name="user" property="timezonePref"value='<%= request.getParameter("timezone") %>'/>因为请求时属性值是用表达式指定的,所以它们往往有和其它脚本元素一样的软件维护问题。
因此,JSTL 定制标记支持另一种用于指定动态属性值的机制。
可以用简化的表达式语言(EL)而不使用完整的 JSP 表达式来指定 JSTL 操作的属性值。
EL 提供了一些标识符、存取器和运算符,用来检索和操作驻留在 JSP 容器中的数据。
EL 在某种程度上以 EcmaScript(请参阅参考资料)和 XML 路径语言(XML Path Language,XPath)为基础,因此页面设计人员和程序员都应该熟悉它的语法。
EL 擅长寻找对象及其特性,然后对它们执行简单操作;它不是编程语言,甚至不是脚本编制语言。
但是,与 JSTL 标记一起使用时,它就能使用简单而又方便的符号来表示复杂的行为。
EL 表达式的格式是这样的:用美元符号($)定界,内容包括在花括号({})中,如清单 3 所示。
清单 3. 说明 EL 表达式定界符的 JSTL 操作<c:out value="${user.firstName}"/>此外,您可以将多个表达式与静态文本组合在一起以通过字符串并置来构造动态属性值,如清单 4 所示。
单独的表达式由标识符、存取器、文字和运算符组成。
标识符用来引用存储在数据中心中的数据对象。
EL 有 11 个保留标识符,对应于 11 个 EL 隐式对象。
假定所有其它标识符都引用限制了作用域的变量。
存取器用来检索对象的特性或集合的元素。
文字表示固定的值― 数字、字符、字符串、布尔型或空值。
运算符允许对数据和文字进行组合以及比较。
清单 4. 组合静态文本和多个 EL 表达式以指定动态属性值<c:out value="Hello ${user.firstName} ${stName}"/>回页首限制了作用域的变量JSP API 通过 <jsp:useBean> 操作允许从 JSP 容器内的四个不同作用域中存储和检索数据。
JSTL 通过提供用于指定和除去这些作用域中的对象的附加操作来扩展这一能力。
此外,EL 提供将这些对象作为限制了作用域的变量进行检索的内置支持。
特别地,任何出现在 EL 表达式中但不对应于任何 EL 隐式对象的标识符,都被自动假定为引用存储在四个 JSP 作用域的其中某个中的对象,这四个作用域是:∙页面作用域∙请求作用域∙会话作用域∙应用程序作用域您可能还记得,只有在为特定请求处理页面期间才能检索存储在该页面作用域中的对象。
如果对象是存储在请求作用域中的,可以在处理所有参与处理某请求的页面期间检索这些对象(譬如在对某个请求的处理中遇到了一个或多个<jsp:include> 或 <jsp:forward> 操作)。
如果对象是存储在会话作用域中的,则在与 Web 应用程序的交互式会话期间,可以由用户访问的任何页面检索它(即,直到与该用户交互相关联的 HttpSession 对象无效为止)。
可以由任何用户从任何页面访问存储在应用程序作用域中的对象,直到卸载 Web 应用程序本身为止(通常是由于关闭 JSP 容器所致)。
通过将字符串映射为期望作用域中的对象来将对象存储到该作用域。
然后,就可以通过提供相同字符串来从该作用域检索该对象。
在作用域的映射中查找字符串,并返回被映射的对象。
在 Servlet API 中,将此类对象称为相应作用域的属性。
但是,在 EL 的上下文中,也将与属性相关联的字符串看作变量的名称,该变量通过属性映射的方式获得特定的值。
在 EL 中,与隐式对象无关联的标识符被认为是存储在四个 JSP 作用域中的名称对象。
首先对页面作用域检查是否存在这样的标识符,其次对请求作用域、然后对会话作用域、最后对应用程序作用域依次进行这样的检查,然后测试该标识符的名称是否与存储在该作用域中的某个对象的名称匹配。
第一个这样的匹配作为 EL 标识符的值被返回。
通过这种方法,可以将 EL 标识符看作引用限制了作用域的变量。
从更技术的方面来说,没有映射到隐式对象的标识符是用 PageContext 实例的findAttribute() 方法求值的,该实例表示对页面的处理,在该页面上,当前正在处理用于请求的表达式。
标识符的名称作为参数传递给这个方法,然后该方法依次在四个作用域中搜索具有相同名称的属性。
并将所找到的第一个匹配项作为findAttribute() 方法的值返回。
如果未在这四个作用域中找到这样的属性,则返回 null。
最终,限制了作用域的变量是四个 JSP 作用域的属性,这些属性具有可以用作EL 标识符的名称。