JSTL和EL

1.EL表达式总是放在大括号里,而且前面有一个美元符前缀。
person.name2.相似点:(1).都可以让我们在静态内蓉中插入动态信息。EL:室外温度是{emp}度
JSP:室外温度是<%=temp%>度
PS:web容器会以同样的方式处理二者(一旦接受到请求,容器将计算表达式,将其转换为一个字符串,然后插入到响应输出流中)
(2).这些表达式同时还允许我们更改标准标记或自定义标记的属性。
< div style=mystyle>HELLO</div>3.不同点:(1).所有EL表达式以“{”开始,以“}”结尾,JSP是<% %>
(2)很细小,处理表达式内部变量的方式。
JSP:<%! Int i=100; %>
EL:表达式是不能在脚本中定义变量。如果上面的变量声明后,返回一个未定义的值。
PS:我们一般采用javabean的属性或者自定义标记库和标准标记库来定义变量,但是最简单的变量访问是使用JSP本身提供的隐私对象
4.EL表达式中使用隐式变量
EL中的隐式变量
类别 隐式变量名 描述
JSP pageContext 用来访问JSP隐式对象
作用域 pageScope 与page作用域属性的名称和值相关联的Map类
requestScope 与requset作用域属性的名称和值相关联的Map类
sessionScope 与session作用域属性的名称和值相关联的Map类
applicationScope 与application作用域属性的名称和值相关联的Map类
请求参数 Param 包含请求参数字符串的Map类
paramValue 包含请求参数字符串数组(String[])的Map类
请求头 Header 包含请求头自妇女换的Map类
headerValues 包含请求头字符串数组(String [])的Map类
Cookie Cookie 按名称存储请求附带的Cookie的Map类

PS:并没有直接赋予我们EL中直接访问真正的page、servletRequest、HttpSession以及ServletContext的权力,他们返回的只是一个与分别page作用域,Session作用域、application作用域有关的属性名和值的Map对象。
pageContext隐式变量相当于JSP中的javax.serlvet.jsp.PageContext对象
例:pageContext.request.requsURL为了获得请求的HTTP方法例:{pageContext.request.method}
JSP可以使用method方法
例:<%=request.getMethod() %>
(1)使用totalPrice属性处理用户的多个购买
sessionScope.totalPricePS:通过applicationScope隐式变量去访问ServletContext里的属性,而不是通过PageContext变量例:{param.name}
header.accept(2)最后一个隐式变量cookie,用于返回servlet的getCookies()方法的结果PS:当容器解析EL表达式变量时,列如{x}中的x,容器首先检查隐式变量。如果隐式变量中找不到x,它将一次查找page,request,session,application范围的属性,如果还没有找到x,就直接返回null
5.EL运算符
(1)用于访问属性和集合的EL运算符
A.a.b:返回a的属性b的值
B.a[b]:返回a的键或者索引为b的值
${header[“host”]}
Header是一个Map。调用header.get(“host”)方法来去的并显示这个EL表达式的结果。类似的,headerValues.host则会返回一个数组
(2)EL算术、关系、逻辑运算符
除 /或div
取模 %或mod
小于 <或lt
大于 >或gt
小于等于 <=或le
大于等于 >=或ge
是否为空 empty

6.EL函数
(1)将函数插入到JSP页面中的过程共包含创建和更改四个文件
1.方法类(.Java):包含需要在JSP中使用的Java方法
2.标记库描述文件(*.tld):映射每个Java方法到xml函数名
3. 部署描述文件(web.xml):饮食和TLD到标记库URL(注意:改变本文件不是必须的,但是推荐改变本文件)
4.JSP页面(*.jsp):使用标记库URL和函数名调用方法
(2)创建静态方法upper()和length()
PS:
1.方法必须被声明为public和static,而方法所属的类必须声明为public。这样servlet就可以直接访问该类及其方法,而不用创建一个对象。
2.方法的参数和返回值必须在EL中是有效的,否则,web容器将不能识别方法签名
3.类文件必须保存在/WEB-INFO/classes目录下
(3)创建标记库描述文件(TLD)
TLD的目标是将静态方法映射到可以再JSP中使用的函数名。EL中不允许直接调用Java方法

1.元素function中的内容用于定义如何将Java方法映射到函数,对于每个function函数,我们需要提供3类信息
(1)name元素定义要在JSP中使用的函数名
(2)Function-class元素定义方法所在的类的全名
(3)Function-signature元素定义静态方法及其参数和返回值的全数据类型
(4)更改部署描述文件
1.taglib元素中必须包含两个子元素
(1)taglib-uri元素定义用于servlet和JSP要访问该标记库的URL。这个URL可以是绝对的(http://….),可以是相对的(/….)
(2)taglib-location元素定义标记库描述文件的上下文路径。因为我们TLD是在WEB-INFO下面的myFunc目录下,所以元素值是/WEB-INF/myFunc/Functions.tld
(5)在JSP内访问EL函数
1.使用taglib指令访问TLD,并用于一个前缀代表该标记库
2.使用TLD前缀和函数名创建一个EL表达式,必须使用正确参数类型
7.JSP自定义标记库与标准标记库JSTL
JSTL标准标记库

功能范围 作用 URI 前缀
核心 一般用途处理的标记 http://java.sun.com/jsp/jstl/core c
Xml 解析、选择、转换xml数据的标记 http://java.sun.com/jsp/jstl/xml x
数据库 访问关系型数据库的标记 http://java.sun.com/jsp/jstl/sql sql
国际化 为国际化应用格式化数据的标记 http://java.sun.com/jsp/jstl/fmt Fmt
函数 处理字符串和集合的标记 http://java.sun.com/jsp/jstl/function fn
我们就可以使用前缀c来引用JSTL核心标准库中的JSTL标记

(1)通用标记
1.< c:catch>和< c:out>,catch标记不会自己执行这些例程,但是会将抛出的一场保存到catch标记的var属性中
2.Out有一个必要的属性value,标记的功能就是显示value的值
< c:out value=”${number}”/>
(2)变量支持标记
1.< c:set>:设置变量和对象的值
2.< c:remove>:将一个变量从其作用域中删除
(3)流程控制
1.JSTL条件处理:< c:choose>和< c:if>
(1)< c:choose>本身不包含任何属性。但是可以包含多个
< c:when>,when标记中实现比较与测试属性分离
2.循环:< c:forEach>和< c:forTokens>
(4)JSTL访问URL信息
1.核心标记库汇总最后一类是处理URL访问
(1)< c:url>重写URL并对其参数编码
(2)< c:import>访问web应用程序之外的内容
(3)< c:redirect>重定向到不同的URL
2.< c:url>
< c:url value=”/page.html” var=”pagename”/>
还可以用scope属性指定var访问(page,request,session,applicationx)

<c:url value=”/page.html” var=”pagename”>

<c:param name=”param1”value=”${2*2}”/>
</c:url>

< c:import>
通过JSP的include指令范文URL,但是如果访问servlet容器外的内容,就必须使用标记

<c:import url=”/content.html” var=”newstuff”scope=”session”>
<c:param name=”part1” value=”val1”/>
<c:param name=”part2” value=”val2”/>
</c:import>

< c:redirect>
和httpservlet的sendRedirect()方法相同,发送一个重定向响应到客户端

<c:redirect url=”/content.html”>
<c:param name=”par1”value=”val1”/>
<c:param name=”par2”value=”va2”/>
</c:redirect>

JSTL和EL的更多相关文章

  1. JS中也可以使用JSTL和EL标签

    //往上滑是调用分页 function Ajax(currPage, pageSize) { // ajax后台交互String currPage,String pageSize var el, Pl ...

  2. JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总

    一下纯属个人总结摘抄,总结一起方便查看,解决疑问,有遗漏或错误,还请指出.       1,JSTL标签总结: a).JSTL标签有什么用?          JSTL是由JCP(Java Commu ...

  3. JSTL、EL、ONGL、Struts标签的区别与使用

     一.JSTL 来源 我们使用JSP开发信息展现非常方便,也可嵌入java代码用来实现相关逻辑,但同样带来了很多问题: jsp维护难度增加 出事提示不明确,不容易提示 分工不明确等 解决上面的问题可以 ...

  4. <Chapter 2>2-2-2-1.介绍JSPs,JSTL,和EL(Introducing JSPs, JSTL, and EL)

    现在,我们的时钟显示了UTC时区的时间.我们希望我们的应用可以让用户自定义时区,并且为将来的访问记住用户的偏好.为了做到这一点,我们使用Google帐户来识别哪个用户正在使用这个应用. 在我们深入了解 ...

  5. JSTL与EL之间的千丝万缕

    一.关于JSTL和EL: 什么是JSTL? JSTL( JSP Standard Tag Library)是JSP标准 标签库,由apache实现. 什么是EL? EL(Expression Lang ...

  6. JSTL与EL常用标签(转)

    JSTL与EL EL相关概念 JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段.所以我们先来学习EL表达式 EL主要用于查找作用域中的数据,然后对它们执行简单操作:它不是编程 ...

  7. JAVA学习JSTL与EL

    一.基础 1.EL(Expression Language):为了使jsp写起来更加简单,提供了在Jsp中简化表达式的方法 2.JSTL:(JSP Standard Tag Library)jstl标 ...

  8. Java之旅(三)--- JSTL和EL表情

     先给大家看一段JSP的代码.看看有什么感受? <% List<UsEL> usELList = pageModel.getList(); for (ItELator<Us ...

  9. JSTL和EL的使用

    JSTL和EL的使用 使用JSTL前的准备 想要使用JSTL,首先需要给工程导入JSTL的包(JSTL.jar和standard.jar). JSTL标签库 在JSTL中分为以下五个标签 核心标签 格 ...

随机推荐

  1. 一些对数学领域及数学研究的个人看法(转载自博士论坛wcboy)

    转自:http://www.math.org.cn/forum.php?mod=viewthread&tid=14819&extra=&page=1 原作者: wcboy 现在 ...

  2. NSQ的消息订阅发布测试

    在测试NSQ的Quick Start发现这样一个问题,就是同时只能有一个订阅实例 $ nsq_to_file --topic=test --output- 当存在两个实例时则消息会被发送给其中的一个实 ...

  3. Res_Orders_02

    一.燃尽图展示 二.项目进展 1.实现用户名找回 2.css样式嵌入

  4. chroot directory

    给 /A/B/C的C目录做chroot,要对C能读写,所以C目录不能做ROOT目录,对B做chroot. 设置C目录所有者为sftp 账户a,组也改为sftp组(这里a和sftp组都是之前建立好的sf ...

  5. 原生js操作dom备忘

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  6. 一个简单的零配置命令行HTTP服务器

    http-server 是一个简单的零配置命令行HTTP服务器, 基于 nodeJs. 如果你不想重复的写 nodeJs 的 web-server.js, 则可以使用这个. 安装 (全局安装加 -g) ...

  7. MySQL 第二篇

    一.MySQL多实例介绍 mysql多实例,共用一套mysql安装程序,使用不同的配置文件(my.cnf).启动程序.和数据文件,即在一台服务器上同时开启多个不同的服务器端口(3306,3307),同 ...

  8. SQL笔记1:SELECT及SELECT高级应用

      T-SQL笔记1:SELECT及SELECT高级应用 本章摘要 1:安装AdventureWorks 2:基本运算符和表达式 3:between 4:like 5:escape 6:TOP 7:G ...

  9. 第十二课:Sizzle引擎详解

    这篇博客难度太大,跟前端开发其实没什么关系,如果你想成为大牛,那就去了解下吧.如果你还不想,那可以忽略,毕竟面试官也不会问到这里来,因为他也不太懂.呵呵. Sizzle引擎是jQuery的选择器,它大 ...

  10. GDT 学习笔记逻辑地址和线性地址计算,因为是自学,所以这只是我的个人理解,不对的请大家指导。

    在 bochs 刚开始的时候 gdt 是未知的,需要通过实模式的16位代码段初始化 gdt 信息, 在 lgdt 指令之后,即可以使用程序自定义的 GDT 表了. 假如:gdt 初始地址为 0x7c7 ...