- 浏览: 187413 次
- 来自: ...
文章分类
- 全部博客 (180)
- OSGi (1)
- Spring (8)
- WebTech (15)
- Architecture (5)
- JavaConcept (1)
- JGroups (2)
- 传统cache (3)
- Andriod (1)
- 日志 (4)
- web安全 (1)
- hbase (1)
- json (3)
- java&jvm (8)
- spark (1)
- Javascript (3)
- 互联网 (4)
- 云计算 (1)
- 大数据 (1)
- 开发构建工具 (20)
- 分布式系统 (6)
- MessageQueue (2)
- design (4)
- 思维 (2)
- 微服务 (11)
- 算法 (1)
- NOSQL (1)
- 编程 (4)
- redis (7)
- 网管 (4)
- snmp (3)
- JPA (5)
- JUnit (2)
- 搜索 (4)
- tika (1)
- mysql (13)
- docker (3)
- 远程工具 (1)
- 运维 (10)
- 认证 (4)
- netty (2)
- 二维码 (1)
- mybatis3 (1)
- Markdown (1)
- shiro (1)
- kafka (1)
- ELK (1)
- 正则表达式 (1)
- kubernetes (3)
最新评论
-
Norther:
注入都比较麻烦 现在的折衷办法就是回归原始 在DomainOb ...
使用Spring的情况下如何将Dao注入DomainObject? -
pig345:
最近也在看这个问题,spring确实 和 DomainObje ...
使用Spring的情况下如何将Dao注入DomainObject? -
piper:
版主,需要这么复杂的配置吗?我记得以前和ehcache结合的时 ...
using springmodules-cache -
littcai:
支持一下,正准备实践一下
using springmodules-cache -
huangxx:
没有实践过
支持分享
using springmodules-cache
转载
起初被JSP对象弄得好乱,学了EL表达式后更乱~
不过今天花了一上午时间,搞透了(*^__^*) 嘻嘻……
首先说一下JSP内置对象:
JSP内置对象类型映射表
对象名 类型 作用域
request javax.servlet.ServletRequest RequestScope
response javax.servlet.ServletResponse PageScope
pageContext javax.servlet.jsp.PageContext PageScope
session javax.servlet.http.HttpSession SessionScope
application javax.servlet.ServletContext ApplicationScope
out javax.servlet.jsp.JspWriter PageScope
config javax.servlet.ServletConfig PageScope
page java.lang.Object PageScope
exception javax.lang.Throwable PageScope
至于九大内置对象(也叫隐式对象)如何应用,我想我在此无须多说,这方面文章一搜一大片。我想提一下pageContext这个对象。
pageContext这个对象比较特殊,由它的类型可知它是jsp特有的,servlet中没有此对象。pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的session,也可以取本页面所在的 application的某一属性值,他相当于页面中所有功能的集大成者。
再说一下EL内置对象:
EL为了方便输出一些表达式的值,自己也定义了一些内置对象,应用这些内置对象方便的获取想要输出的值
JSP EL的内置对象和JSP的内置对象是两回事,不能互用,即JSP EL内置对象只能在EL中表达式中使用,
JSP的内置对象也只能在JSP中使用而不能在EL中直接用
但是两种有个对应关系,即EL的内置对象可以调用JSP对应内置对象的保存数据,从而方便的显示
JSP EL的内置对象:
pageContext
pageScope
requestScope
sessionScope
applicationScope
param
paramValues
header
headerValues
cookie
initParam
可以分为以下三类:
1.与范围有关的隐含对象
与范围有关的EL 隐含对象包含以下四个:pageScope、requestScope、sessionScope 和applicationScope;
它们基本上就和JSP的pageContext、request、session和application一样;
在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得其他相关信息。
例如:我们要取得session中储存一个属性username的值,可以利用下列方法:
session.getAttribute("username") 取得username的值,
在EL中则使用下列方法
${sessionScope.username}
2.与输入有关的隐含对象
与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。
例如我们要取得用户的请求参数时,可以利用下列方法:
request.getParameter(String name)
request.getParameterValues(String name)
在EL中则可以使用param和paramValues两者来取得数据。
${param.name}
${paramValues.name}
3.其他隐含对象
cookie
JSTL并没有提供设定cookie的动作,
例:要取得cookie中有一个设定名称为userCountry的值,可以使用${cookie.userCountry}来取得它。
header和headerValues
header 储存用户浏览器和服务端用来沟通的数据
例:要取得用户浏览器的版本,可以使用${header["User-Agent"]}。
另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues 来取得这些值。
initParam
initParam取得设定web站点的环境参数(Context)
例:一般的方法String userid = (String)application.getInitParameter("userid");
可以使用 ${initParam.userid}来取得名称为userid
pageContext
pageContext取得其他有关用户要求或页面的详细信息。
${pageContext.request.queryString} 取得请求的参数字符串
${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串
${pageContext.request.contextPath} 服务的web application 的名称
${pageContext.request.method} 取得HTTP 的方法(GET、POST)
${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser} 取得用户名称
${pageContext.request.remoteAddr } 取得用户的IP 地址
${pageContext.session.new} 判断session 是否为新的
${pageContext.session.id} 取得session 的ID
${pageContext.servletContext.serverInfo} 取得主机端的服务信息
怎么样,看了之后恍然大悟了没(*^__^*) 嘻嘻…… 我想至少也会让你对内置对象清晰了很多吧~ 这可是俺平生处子博文哦 ~~鼓励一下吧(*^__^*) 嘻嘻……
=================================================================================
补充一下EL表达式:
一、EL简介
1).语法结构
${expression}
2).[]与.存取器
EL 提供.和[]两种存取器来存取数据。
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。例如:
${user.My-Name}应当改为${user["My-Name"] }
如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如:
${sessionScope.user[data]}中data 是一个变量
3).变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
属性范围在EL中的名称
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope
4).运算符
1.算术运算符有五个:+、-、*或$、/或div、%或mod
2.关系运算符有六个:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge
3.逻辑运算符有三个:&&或and、||或or、!或not
4.其它运算符有三个:Empty运算符、条件运算符、()运算符
例:${empty param.name}、${A?B:C}、${A*(B+C)}
5) EL函数(functions)
语法:ns:function( arg1, arg2, arg3 …. argN)
其中ns为前置名称(prefix),它必须和taglib 指令的前置名称一置
二、EL注意点:
1.${logininfo.username}
这表明引用logininfo 对象的username 属性。我们可以通过“.”操作符引
用对象的属性,也可以用“[]”引用对象属性,如${logininfo[username]}
与${logininfo.username}达到了同样的效果。
“[]”引用方式的意义在于,如果属性名中出现了特殊字符,如“.”或者“-”,
此时就必须使用“[]”获取属性值以避免语法上的冲突(系统开发时应尽量避免
这一现象的出现)。
与之等同的JSP Script大致如下:
LoginInfo logininfo =
(LoginInfo)session.getAttribute(“logininfo”);
String username = logininfo.getUsername();
可以看到,EL大大节省了编码量。
这里引出的另外一个问题就是,EL 将从哪里找到logininfo 对象,对于
${logininfo.username}这样的表达式而言,首先会从当前页面中寻找之前是
否定义了变量logininfo,如果没有找到则依次到Request、Session、
Application 范围内寻找,直到找到为止。如果直到最后依然没有找到匹配的
变量,则返回null.
可以看出:在EL中得到变量直接用变量名即可,它会自动调用get()方法
如果我们需要指定变量的寻找范围,可以在EL表达式中指定搜寻范围:
${pageScope.logininfo.username}
${requestScope.logininfo.username}
${sessionScope.logininfo.username}
${applicationScope.logininfo.username}
2.<%@ page isELIgnored="true"%>
表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁
止.JSP2.0中默认的启用EL语言.
起初被JSP对象弄得好乱,学了EL表达式后更乱~
不过今天花了一上午时间,搞透了(*^__^*) 嘻嘻……
首先说一下JSP内置对象:
JSP内置对象类型映射表
对象名 类型 作用域
request javax.servlet.ServletRequest RequestScope
response javax.servlet.ServletResponse PageScope
pageContext javax.servlet.jsp.PageContext PageScope
session javax.servlet.http.HttpSession SessionScope
application javax.servlet.ServletContext ApplicationScope
out javax.servlet.jsp.JspWriter PageScope
config javax.servlet.ServletConfig PageScope
page java.lang.Object PageScope
exception javax.lang.Throwable PageScope
至于九大内置对象(也叫隐式对象)如何应用,我想我在此无须多说,这方面文章一搜一大片。我想提一下pageContext这个对象。
pageContext这个对象比较特殊,由它的类型可知它是jsp特有的,servlet中没有此对象。pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的session,也可以取本页面所在的 application的某一属性值,他相当于页面中所有功能的集大成者。
再说一下EL内置对象:
EL为了方便输出一些表达式的值,自己也定义了一些内置对象,应用这些内置对象方便的获取想要输出的值
JSP EL的内置对象和JSP的内置对象是两回事,不能互用,即JSP EL内置对象只能在EL中表达式中使用,
JSP的内置对象也只能在JSP中使用而不能在EL中直接用
但是两种有个对应关系,即EL的内置对象可以调用JSP对应内置对象的保存数据,从而方便的显示
JSP EL的内置对象:
pageContext
pageScope
requestScope
sessionScope
applicationScope
param
paramValues
header
headerValues
cookie
initParam
可以分为以下三类:
1.与范围有关的隐含对象
与范围有关的EL 隐含对象包含以下四个:pageScope、requestScope、sessionScope 和applicationScope;
它们基本上就和JSP的pageContext、request、session和application一样;
在EL中,这四个隐含对象只能用来取得范围属性值,即getAttribute(String name),却不能取得其他相关信息。
例如:我们要取得session中储存一个属性username的值,可以利用下列方法:
session.getAttribute("username") 取得username的值,
在EL中则使用下列方法
${sessionScope.username}
2.与输入有关的隐含对象
与输入有关的隐含对象有两个:param和paramValues,它们是EL中比较特别的隐含对象。
例如我们要取得用户的请求参数时,可以利用下列方法:
request.getParameter(String name)
request.getParameterValues(String name)
在EL中则可以使用param和paramValues两者来取得数据。
${param.name}
${paramValues.name}
3.其他隐含对象
cookie
JSTL并没有提供设定cookie的动作,
例:要取得cookie中有一个设定名称为userCountry的值,可以使用${cookie.userCountry}来取得它。
header和headerValues
header 储存用户浏览器和服务端用来沟通的数据
例:要取得用户浏览器的版本,可以使用${header["User-Agent"]}。
另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用headerValues 来取得这些值。
initParam
initParam取得设定web站点的环境参数(Context)
例:一般的方法String userid = (String)application.getInitParameter("userid");
可以使用 ${initParam.userid}来取得名称为userid
pageContext
pageContext取得其他有关用户要求或页面的详细信息。
${pageContext.request.queryString} 取得请求的参数字符串
${pageContext.request.requestURL} 取得请求的URL,但不包括请求之参数字符串
${pageContext.request.contextPath} 服务的web application 的名称
${pageContext.request.method} 取得HTTP 的方法(GET、POST)
${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser} 取得用户名称
${pageContext.request.remoteAddr } 取得用户的IP 地址
${pageContext.session.new} 判断session 是否为新的
${pageContext.session.id} 取得session 的ID
${pageContext.servletContext.serverInfo} 取得主机端的服务信息
怎么样,看了之后恍然大悟了没(*^__^*) 嘻嘻…… 我想至少也会让你对内置对象清晰了很多吧~ 这可是俺平生处子博文哦 ~~鼓励一下吧(*^__^*) 嘻嘻……
=================================================================================
补充一下EL表达式:
一、EL简介
1).语法结构
${expression}
2).[]与.存取器
EL 提供.和[]两种存取器来存取数据。
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。例如:
${user.My-Name}应当改为${user["My-Name"] }
如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如:
${sessionScope.user[data]}中data 是一个变量
3).变量
EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。
因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。
假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null。
属性范围在EL中的名称
Page PageScope
Request RequestScope
Session SessionScope
Application ApplicationScope
4).运算符
1.算术运算符有五个:+、-、*或$、/或div、%或mod
2.关系运算符有六个:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge
3.逻辑运算符有三个:&&或and、||或or、!或not
4.其它运算符有三个:Empty运算符、条件运算符、()运算符
例:${empty param.name}、${A?B:C}、${A*(B+C)}
5) EL函数(functions)
语法:ns:function( arg1, arg2, arg3 …. argN)
其中ns为前置名称(prefix),它必须和taglib 指令的前置名称一置
二、EL注意点:
1.${logininfo.username}
这表明引用logininfo 对象的username 属性。我们可以通过“.”操作符引
用对象的属性,也可以用“[]”引用对象属性,如${logininfo[username]}
与${logininfo.username}达到了同样的效果。
“[]”引用方式的意义在于,如果属性名中出现了特殊字符,如“.”或者“-”,
此时就必须使用“[]”获取属性值以避免语法上的冲突(系统开发时应尽量避免
这一现象的出现)。
与之等同的JSP Script大致如下:
LoginInfo logininfo =
(LoginInfo)session.getAttribute(“logininfo”);
String username = logininfo.getUsername();
可以看到,EL大大节省了编码量。
这里引出的另外一个问题就是,EL 将从哪里找到logininfo 对象,对于
${logininfo.username}这样的表达式而言,首先会从当前页面中寻找之前是
否定义了变量logininfo,如果没有找到则依次到Request、Session、
Application 范围内寻找,直到找到为止。如果直到最后依然没有找到匹配的
变量,则返回null.
可以看出:在EL中得到变量直接用变量名即可,它会自动调用get()方法
如果我们需要指定变量的寻找范围,可以在EL表达式中指定搜寻范围:
${pageScope.logininfo.username}
${requestScope.logininfo.username}
${sessionScope.logininfo.username}
${applicationScope.logininfo.username}
2.<%@ page isELIgnored="true"%>
表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁
止.JSP2.0中默认的启用EL语言.
发表评论
-
[转]使用Adobe Illustrator制作SVG的操作流程
2016-03-08 11:16 2012上一篇文章中,我们一 ... -
[转]web.xml 中的listener、 filter、servlet 加载顺序及其详解
2016-02-24 15:38 400转自:http://www.cnblogs.co ... -
[转]三大JavaScript框架对比——AngularJS、BackboneJS和EmberJS
2016-02-19 14:58 743三大JavaScript框架对比——AngularJS ... -
[转]AngularJS 、Backbone.js 和 Ember.js 的比较
2016-02-19 14:52 640转自:http://www.oschina.net/tra ... -
我理解的前端模板技术
2016-02-15 13:47 889前端模板技 ... -
[转]浏览器 HTTP 协议缓存机制详解
2016-01-29 11:27 787原 荐 浏览器 HTTP 协议缓存机制详解 发表于1 ... -
[转]前端开发部署流程
2016-01-29 11:18 866转自知乎 张云龙,前端工程师 曹君、李勇、Le ... -
jQuery Selector选择器小结
2016-01-28 12:29 1287转载 //jQuery 选择器 $ //$(express ... -
[转]浏览器加载和渲染html的顺序
2016-01-27 17:47 420浏览器加载和渲染html的顺序 http://renyongj ... -
[转]浏览器加载网页的顺序
2016-01-27 17:44 664一、浏览器加载和渲染html的顺序 1. 用户输入网 ... -
[转]jsp页面中的pageEncoding和contentType以及html中的meta标签中字符集的设置
2016-01-27 14:14 1537一开始对这几个有关字 ... -
Jstl详解[转]
2016-01-13 20:22 466JSTL详解 9.2概述 在 JS ... -
J2EE中JSP页面引用外部资源时的路径问题
2016-01-06 11:27 1466转载http://blog.csdn.net/yeahwell ... -
[转载]Web表现层技术竞争替代关系一览
2007-04-18 09:40 1966转自:blog.csdn.net/mozilla/ ...
相关推荐
java中JSP和el表达式的隐含对象,能够让你对对jsp的更熟悉
JSP-EL表达式 一些简单的介绍 希望对大家有所帮助吧
下面小编就为大家带来一篇jsp页面中EL表达式被当成字符串处理不显示值问题的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
el表达式,jsp.el表达式,页面el表达式,el表达式注释 el表达式的解释,el表达式的应用,java el表达式
jspEL表达式 jspEL表达式 jspEL表达式 jspEL表达式
关于jsp中EL(Expression Language)表达式的相关简介
jsp el表达式详解
EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便。接下来介绍EL主要的语法结构: ${sessionScope.user.sex} 所有EL都是以${为起始、以}为结尾的。...EL表达式是配合JST
JSP与EL详解
EL 全名为Expression Language。本文给大家介绍的是在jsp中EL表达式获取数据的几种方式,希望大家能够喜欢
JSP中的EL表达式介绍.doc 详细介绍EL表达式的应用
JavaWeb-11 JSP&EL表达式
JSP-EL表达式
JSP 表达式语言定义了一组隐式对象,其中许多对象在 JSP scriplet 和表达式中可用: 术语 JSP 页的上下文。它可以用于访问 JSP 隐式对象,如请求、响应、会话、输出、servletContext 等。例如,${pageContext....
JAVAWEB项目, 在JSP页面不使用任何java代码,使用servlet和EL表达式,这里是EL所需的两个jar包
javaweb开发中关于jsp 的el表达式比较全非常好用,非常适用于初学者
JSP页面中支持使用EL表达式,EL全名为Expression Language。EL表达式的主要作用有: ① 获取数据; ② 执行运算; ③ 使用EL表达式的11大隐式对象; ④ 调用Java方法。 当然,EL表达式还能配合JSTL标签,...
Servlet+MySql+Web(HTML+CSS+JSP技术+EL表达式)通过IDEA来实现数据库的增删改查(crud))-附件资源