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中key为id对应的值;

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>

转载于:https://www.cnblogs.com/hyjj/p/5600082.html

EL表达式和JSTL相关推荐

  1. java el表达式 if else_jsp EL表达式和JSTL标签if-else if-else用法

    java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法 一.条件运算符 ${user.gender==?'男':'女'} 二.if() code.. ...

  2. 大数据WEB阶段(十三)JSP(二)JSP标签、EL表达式、JSTL

    JSP标签.EL表达式.JSTL (一)JSP标签技术 一.JSP标签技术概述 jsp本质上是一种动态web资源开发技术 , 看起来像是html , 但其中可以写java代码 , 非常方便用来开发动态 ...

  3. el表达式与jstl的用法

    课上顺便整理了下java中的El表达式和jstl的用法,下面以举例的方式来阐述各个标签的作用: 一. 使用el表达式将Map集合中的数据显示出来: 先给Map集合里面放一些数据库,通过EL表达式显示在 ...

  4. spring mvc学习(37):JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)

    EL表达式和JSTL标签库: 在JSP页面代替java代码,便于编写 一.EL表达式 作用: ${} 简化脚本表达式 <%= %> j2ee1.4以前版本需指定<%@ page is ...

  5. jsp脚本、jsp标准动作、EL表达式、JSTL标签

    https://blog.csdn.net/gx_hxl/article/details/79032331 https://blog.csdn.net/a731604348/article/detai ...

  6. java标签库jstl-el表达式介绍使用配置手册_JAVA EE 实验报告EL表达式和jstl标签库的使用...

    昆明理工大学信息工程与自动化学院学生实验报告 ( 2013 -2014 学年第一学期) 课程名称:Java EE技术开课实验室:系机房444 2013 年 12月2 日年级.专业.班计科111 学号姓 ...

  7. JavaWeb EL表达式, JSTL标签及过滤器综合学习

    1.项目结构如右边图所示: (1)controller.filter包下面定义2个过滤器,EncodingFilter 类CheckUserFilter类(后面会有一个登陆验证的过滤器的测试学习), ...

  8. 28. EL 表达式 以及 JSTL 标签库

    28. EL 表达式 以及 JSTL 标签库 1.EL 表达式 a)什么是 EL 表达式,EL 表达式的作用? EL 表达式的全称是:Expression Language.是表达式语言. EL 表达 ...

  9. EL表达式和JSTL标签:简化JSP的Java代码

    JSP页面接收.展示后端的数据,再JSP页面写很多的Java代码会造成书写麻烦.难以阅读.不利于团队协作的缺点,因此我们使用EL表达式和JSTL标签,代替并简化了JSP页面 EL表达式 语法:${st ...

  10. EL表达式和JSTL表达式及案例

    简介 1. JSP:         1. 指令         2. 注释         3. 内置对象 2. MVC开发模式     3. EL表达式     4. JSTL标签     5. ...

最新文章

  1. 看完书要及时消化(1)《暗时间》
  2. Unity--------------------万向锁的概念
  3. 多线程之HttpClient
  4. 计划将项目中使用entity framework的要点记录到改栏目下
  5. linux 程序占内存,linux下,一个运行中的程序,究竟占用了多少内存
  6. 上有天最高,自然较为小
  7. 安装Mycat 曾经踩的那些坑
  8. 「leetcode」236. 二叉树的最近公共祖先:【递归与回溯】详解
  9. SSM环境+jquery+ajax 实现批量文件上传并预览后,同时上传文件和数据 校验图片后缀是否合法 文件大小是否超限
  10. 计算机组成原理——常用计算单位的转换(时间单位换算s、ms、μs;K、M、G为单位的数值大小)
  11. 论文阅读: Inertia Tensor Properties in Robot Dynamics Identification: A Linear Matrix Inequality Approac
  12. 蚂蚁金服与阿里云“双剑合璧”,加速释放金融科技时代新红利
  13. Springboot实战:项目部署
  14. 声音(音乐)分类综述
  15. 《构建之法》第4.17章读书笔记
  16. 全新内测!mac剪映专业版v1.4.0重磅出击!
  17. 【Linux】大数据开发中常用的shell命令
  18. 弦振动 matlab,弦振动规律和MATLAB数据处理.doc
  19. 一看就懂!!各进制转换方法
  20. 跨行转做产品经理岗位,怎么入门?

热门文章

  1. 向uliweb中添加查找配置项功能
  2. ios应用的分发和上传
  3. tasklist 妙用
  4. Matlab读写二进制文件
  5. 数字信号处理中卷积的计算
  6. 使用数字万用表判断三极管管脚!
  7. CosmoMC第一次测试
  8. XXL-CONF v1.4.1 发布,分布式配置管理平台
  9. C#和nodejs的互操作
  10. 帝国cms调用缩略图和具体文章的方法