JSTL和EL表达式之间有什么关系

JSTL和EL表达式之间有什么关系
2011-03-04 15:16

于JSTL和EL之系,问题对于初学JSP的朋友来,估是个问题,下面来详细一下JSTL和EL表达式他系,以及 JSTL和EL一些相概念!

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中keyid对应;

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在已存在
工程上部署
新建工程的候直接部署
在JSP使用JSTL-core标签库
core在jsp中的使用:
在 web.xml 中添加
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
</jsp-config>
在jsp文件中添加
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>或<%@ taglib prefix="c" uri="/WEB-INF/c.tld" %>
使用<c:out value=“HelloWorld” />

Core的操作作用域标签
出作用域中量.
<c:out > 属性: value[default] [escapeXml]
作用域中
<c:set > 属性: value var [scope]
除作用域中
<c:remove > 属性: var [scope]

Core的条件控制标签
分支条件
<c:if > 属性:test [var] [scope]
多分支条件
<c:choose >
<c:when > 属性: test
<c:otherwise >

Core的其它标签
转换成的URL:
<c:url > 属性:value [context] [var] [scope]
和<jsp:include >相似用于包含其它面的内容:
<c:import >属性:url [context] [charEncoding] [var][scope]
重定向
<c:redirect >属性: url [context]
与<c:url><c:import><c:redirect>配合使用,用于
<c:param >属性: name value

Core的循控制标签
实现简单
<c:forEach > var='item' begin='5' end='10' step='2‘ varStatus=‘’
实现迭代(遍)
<c:forEach > items='' var='item‘ varStatus=‘’

属性varStatus和var相似置一个作用域量;只是varStatus作用域量中存的是包括运行状象;此象包含如下属性:
current index count first last begin end step

简单
<%@ page language="java" contentType="text/html;charset=GBK"%>
<%@ taglib prefix="c" uri="/WEB-INF/c.tld" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312" />
<title>testjstl1</title>
</head>
<body>
<c:forEach var="i" step="1" begin="1"end="100">
${i} <br>
</c:forEach>
</body>
</html>

迭代
<%@ page language="java" contentType="text/html;charset=GBK"%>
<%@ taglib prefix="c" uri="/WEB-INF/c.tld" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312" />
<title>testjstl1</title>
</head>
<body>
<c:forEach var="mcBean" items="${mcList}"varStatus="mcStatus">
当前遍索引:${mcStatus.index} ; 商品名:${mcBean.sname} ;.... <br>
</c:forEach>
</body>
</html>

在JSP使用JSTL-format标签库
format在jsp中的使用:
在 web.xml 中添加
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
</jsp-config>
在jsp文件中添加
<%@ taglib prefix="fmt"uri="http://java.sun.com/jstl/fmt" %>
使用
<fmt:formatDate value=“” pattern=“yyyy-MM-dd” />

Format常用标签
格式化出日期:
<fmt:formatDate > value type var pattern
type取:
short: 10/19/00 6:07 PM
medium: Oct 19, 2000 6:07:01 PM
long: October 19, 2000 6:07:01 PM MDT
full: Thursday, October 19, 2000 6:07:01 PM MDT
例: <fmt:formatDate value=“” pattern=“yyyy/MM/dd”/>
格式化出数字:
<fmt:formatNumber> value var pattern
例:<fmt:formatNumber value=“” pattern=“###.##” />

format
<%@ page language="java" contentType="text/html;charset=GBK"%>
<%@ taglib prefix="fmt" uri="/WEB-INF/fmt.tld" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312" />
<title>testjstl1</title>
</head>
<body>
<jsp:useBean id="curDate" class="java.util.Date"scope="page"/>
<fmt:formatDate value="${curDate}" pattern="yyyy-MM-dd HH:mm:ss"/><br>

<fmt:formatNumber value="10.32898432"pattern="#.##"/><br>
<% request.setAttribute("var1",3.1415926); %>
<fmt:formatNumber value="${var1}"pattern="#.##"/><br>
</body>
</html>

里我们对JSTL和EL之系有了一定的认识,只要我们经常使用些技相信能很快的认识些技缺点,比起死硬背来,理解才是 真正的理解了.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值