JSTL和EL
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的更多相关文章
- JS中也可以使用JSTL和EL标签
//往上滑是调用分页 function Ajax(currPage, pageSize) { // ajax后台交互String currPage,String pageSize var el, Pl ...
- JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
一下纯属个人总结摘抄,总结一起方便查看,解决疑问,有遗漏或错误,还请指出. 1,JSTL标签总结: a).JSTL标签有什么用? JSTL是由JCP(Java Commu ...
- JSTL、EL、ONGL、Struts标签的区别与使用
一.JSTL 来源 我们使用JSP开发信息展现非常方便,也可嵌入java代码用来实现相关逻辑,但同样带来了很多问题: jsp维护难度增加 出事提示不明确,不容易提示 分工不明确等 解决上面的问题可以 ...
- <Chapter 2>2-2-2-1.介绍JSPs,JSTL,和EL(Introducing JSPs, JSTL, and EL)
现在,我们的时钟显示了UTC时区的时间.我们希望我们的应用可以让用户自定义时区,并且为将来的访问记住用户的偏好.为了做到这一点,我们使用Google帐户来识别哪个用户正在使用这个应用. 在我们深入了解 ...
- JSTL与EL之间的千丝万缕
一.关于JSTL和EL: 什么是JSTL? JSTL( JSP Standard Tag Library)是JSP标准 标签库,由apache实现. 什么是EL? EL(Expression Lang ...
- JSTL与EL常用标签(转)
JSTL与EL EL相关概念 JSTL一般要配合EL表达式一起使用,来实现在jsp中不出现java代码段.所以我们先来学习EL表达式 EL主要用于查找作用域中的数据,然后对它们执行简单操作:它不是编程 ...
- JAVA学习JSTL与EL
一.基础 1.EL(Expression Language):为了使jsp写起来更加简单,提供了在Jsp中简化表达式的方法 2.JSTL:(JSP Standard Tag Library)jstl标 ...
- Java之旅(三)--- JSTL和EL表情
先给大家看一段JSP的代码.看看有什么感受? <% List<UsEL> usELList = pageModel.getList(); for (ItELator<Us ...
- JSTL和EL的使用
JSTL和EL的使用 使用JSTL前的准备 想要使用JSTL,首先需要给工程导入JSTL的包(JSTL.jar和standard.jar). JSTL标签库 在JSTL中分为以下五个标签 核心标签 格 ...
随机推荐
- DAO模式应用实例
首先在数据库中建好一个表. 然后创建一个MsterDao类的接口 package com.beiwo.epte.dao; import com.beiwo.epte.entity.Master; pu ...
- Request Entity Too Large for Self Hosted ASP.Net Web API在Selfhost的api后台怎么解决Request Entity Too Large问题
Request Entity Too Large for Self Hosted ASP.Net Web API在Selfhost的api后台怎么解决Request Entity Too Large问 ...
- jquery ajax 前前后后,所有的函数并查询链接
jQuery Ajax 操作函数 jQuery 库拥有完整的 Ajax 兼容套件.其中的函数和方法允许我们在不刷新浏览器的情况下从服务器加载数据. 函数 描述 jQuery.ajax() 执行异步 H ...
- Unity 几种优化建议
转: http://user.qzone.qq.com/289422269/blog/1453815561?ptlang=2052 Unity 几种优化建议 最简单的优化建议: 1.PC平台的话保持场 ...
- maven配置之setting配置
<!--声明语句--> <?xml version="1.0" encoding="UTF-8"?> <settings xmln ...
- Pureftpd
在lnmp目录下运行./pureftpd.sh 如下:[root@cloud lnmp1.3-full]# 执行./pureftpd.sh 使用命令 Install Pure-FTPd complet ...
- [Docker] docker 基础学习笔记2(共6篇)
febootstrap 是一个自制image的一个第三方的工具,好像他们现在都要用这个. 安装还是挺方便的. yum -y install febootstrap febootstrap -i ...
- spring整合struts2
1. Spring 如何在 WEB 应用中使用 ? 1). 需要额外加入的 jar 包: spring-web-4.0.0.RELEASE.jarspring-webmvc-4.0.0.RELEASE ...
- linux配置java环境变量(详细)
linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...
- Proxy(代理)-对象结构型模式
1.意图 为其它对象提供一种代理以控制对这个对象的访问. 2.别名 Surrogate. 3.动机 通过Proxy可以达到对一个对象的访问控制. 4.适用性 远程代理 为一个对象在不同地址空间提供局 ...