本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用

内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。

本人互联网技术爱好者,互联网技术发烧友

微博:伊直都在0221

QQ:951226918

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1. EL 本身也有自己的隐含对象。EL 隐含对象总共有 11 个

          

          

          

2. 分类

  1)与范围有关的隐含对象:applicationScope  sessionScope   requestScope  pageScope

  2)与输入有关的隐含对象:param  paramValues

  3)其他隐含对象:cookie  header  headerValues  initParam  pageContext

3.详解:与范围有关的隐含对象

  1) 与 范 围 有 关 的 EL 隐 含 对 象 包含以 下四个: pageScope 、 requestScope 、 sessionScope 和applicationScope,它们基本上就和 JSP 的 pageContext、request、session 和 application 一样;

  2) 四个隐含对象只能用来取得范围属性值(域对象所设置的属性),即 JSP中的 getAttribute(String name),却不能取得其他相关信息;

  3)注意:JSP 中的 request 对象除可以存取属性之外, 还可以取得用户的请求参数或表头信息等等。 但是在 EL 中,它就只能单纯用来取得对应范围的属性值;

   例如:我们要在 session 中储存一个属性,它的名称为 username,在 JSP 中使用session.getAttribute("username") 来 取得 username 的 值 , 但 是在 EL 中 , 则 是 使 用${sessionScope.username}来取得其值的

  ① pageScope :范围和 JSP 的 Page 相同,也就是单单一页 JSP Page 的范围(Scope);

  ② requestScope :范围和 JSP 的 Request 相同,requestScope 的范围是指从一个 JSP 网页请求到另一个 JSP 网页请求之间,随后此属性就会失效;

  ③ sessionScope:范围和 JSP Scope 中的 session 相同,它的属性范围就是用户持续在服务器连接的时间;

  ④ applicationScope:范围和 JSP Scope 中的 application 相同,它的属性范围是从服务器一开始执行服务,到服务器关闭为止;

例子代码:

 <%
application.setAttribute("time", new Date());
%>
<!-- 隐藏对象之范围相关的: -->
time:${applicationScope.time }
<%--
等同于
<%
application.getAttribute("time");
%>
--%>

4.详解:与输入有关的隐含对象

  1)一般而言,我们在取得用户的请求参数时,可以利用下列方法;

      request.getParameter(String name)
      request.getParameterValues(String name)

  2)在 EL 中则可以使用 param 和 paramV alues 两者来取得数据

    ${param.name}    //  获取某一个请求参数,参数名为name

    ${paramValues.name} // 获取一组请求参数 ,参数名为name

 

 例子:http://localhost:8080/javaWEB/el/el2.jsp?name=a&name=b&name=c&score=100    注意:只要获取到的参数的类型,中有get方法,就可以一直通过 . 的方式 获取其他相应的值或者属性

 <!-- 与输入有关的隐含对象:param,paramValues -->
score:${param.score }
<br> name:${paramValues.name[1] } //获取属性名相同,属性值不同的一组值,通过下标的方式获取,从 0 开始

  

5.详解:其他隐含对象

  1)cookie (了解,开发很少用)

   所谓的 cookie 是一个小小的文本文件,它是以 key、value 的方式将 Session Tracking 的内容记录在这个文本文件内,这个文本文件通常存在于浏览器的暂存区内。 JSTL 并没有提供设定 cookie 的动作,因为这个动作通常都是后端开发者必须去做的事情,而不是交给前端的开发者。假若我们在 cookie 中设定一个名称为 userCountry 的值,那么可以使用${cookie.userCountry}来取得它。

    cookie:${cookie}

  2)header 和 headerValues(了解)

   header 储存用户浏览器和服务端用来沟通的数据,当用户要求服务端的网页时,会送出一个记载要求信息的标头文件,例如:用户浏览器的版本、用户计算机所设定的区域等其他相关数据。假若要取得用户浏览器的版本,即${header["User-Agent"]}。另外在鲜少机会下,有可能同一标头名称拥有不同的值,此时必须改为使用 headerValues 来取得这些值。因为 User-Agent 中包含“-”这个特殊字符,所以必须使用“[]”,而不能写成$(header.User-Agent)。

    Accept-language:${header}

  3) initParam

    就像其他属性一样,我们可以自行设定 web 站台的环境参数(Context),当我们想取得这些参数时,可以使用 initParam 隐含对象去取得它,例如:当我们在 web.xml 中设定如下

    

  <context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
<context-param>
<param-name>jdbcUrl</param-name>
<param-value>jdbc:mysql:///test</param-value>
</context-param>

  

jsp中的代码:

 driver:${initParam.driver }<br><br>
jdbcUrl:${initParam.jdbcUrl }

结果显示:

 

 driver:com.mysql.jdbc.Driver

  jdbcUrl:jdbc:mysql:///test 

  4)pageContext(即为pageContex 类型,但是能读取属性,就可以一直的 通过 . 的方式 获取属性值)

  

我们可以使用${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 是否为新的,所谓新的 session,表示刚由 server 产生而 client 尚未使用

${pageContext.session.id}              取得 session 的 ID

${pageContext.servletContext.serverInfo}      取得主机端的服务信息

jsp中的代码:

 <br>
pageContext 即为pageContex 类型,但是能读取属性,就可以一直的 通过 . 的方式 获取属性值
<!-- pageContext --> <br>
contextPath:${pageContext.request.contextPath }
<br>
<br>
sessionId:${pageContext.session.id}
<br>
<br>
sessionAttributeNames:${pageContext.session.attributeNames }
<br>

结果:

  

 contextPath:/javaWEB 
sessionId:8B49FADC18811B5BA2C13224DEEABE39
sessionAttributeNames:java.util.Collections$2@33a515d3

[原创]java WEB学习笔记38:EL 中的 11个 隐含对象 详解的更多相关文章

  1. [原创]java WEB学习笔记14:JSP的9 个隐含对象 及 JSP 的基本语法

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  2. [原创]java WEB学习笔记95:Hibernate 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. Java Web学习笔记之---EL和JSTL

    Java Web学习笔记之---EL和JSTL (一)EL (1)EL作用 Expression  Language(表达式语言),目的是代替JSP页面中复杂的代码 (2)EL表达式 ${变量名} ( ...

  6. [原创]java WEB学习笔记11:HttpServlet(HttpServletRequest HttpServletRsponse) 以及关于 Servlet 小结

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  7. [原创]java WEB学习笔记42:带标签体的自定义标签,带父标签的自定义标签,el中自定义函数,自定义标签的小结

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  8. [原创]java WEB学习笔记39:EL中的运算符号(算术运算符,关系运算符,逻辑运算符,empty运算符,条件运算符,括号运算符)

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  9. [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

随机推荐

  1. macbook 下SDK Manager 的更新[即使Google被屏蔽了也无所谓]

    废话少说,直接说操作步骤: 1. 改动/etc/hosts文件: 右键单击Finder,选择前往目录,输入/private/etc/,敲回车键.将文件/etc/hosts复制到桌面(由于权限受限.无法 ...

  2. Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观

    Java 入门课程视频实战-0基础 已经上传完了.欢迎小伙伴们过来围观 直接进入: http://edu.csdn.net/course/detail/196 课程文件夹例如以下: 1 初识Java  ...

  3. Hadoop2.6.0子项目hadoop-mapreduce-examples的简介

    引文 学习Hadoop的同学们,一定知道假设执行Hadoop自带的各种样例,以大名鼎鼎的wordcount为例,你会输入下面命令: hadoop org.apache.hadoop.examples. ...

  4. [转载]Axis2 and CXF的比较

    在Celtix 和XFire 宣布合并的同年,另一个著名开源Web 服务框架Axis 的后继者Axis2 也诞生了.Axis2 并非Axis 的2.0 版,而是完全重写了Axis 的新项目.作为功能和 ...

  5. windows_64下python下载安装Numpy、Scipy、matplotlib模块

    本文应用的python3.6.3及其对应的Numpy.Scipy.matplotlib计算模块的cp36版本,其中Numpy是需要MKL版本的Numpy,这是后续安装Scipy的需要(本机系统win7 ...

  6. BFS 和 DFS

    DFS用到递归,BFS要用到一个辅助队列 #include "stdafx.h" #include<iostream> #include<vector> # ...

  7. 微服务网关哪家强?一文看懂Zuul, Nginx, Spring Cloud, Linkerd性能差异

      导语:API Gateway是实现微服务重要的组件之一.面对诸多的开源API Gateway,如何进行选择也是架构师需要关注的焦点.本文作者对几个较大的开源API Gateway进行了压力测试,对 ...

  8. python 3 关于requests库的 text / content /json

    最近在爬SDFDA的数据,刚开始用urllib.request 库,一直连不到数据 : 后来通过CHROME浏览器的F12,发现该 网站用的是JSON格式{}'Content-Type': 'appl ...

  9. PHP-Manual的学习----【语言参考】----【类型】-----【Boolean类型】

    2017年7月20日15:41:26Boolean 布尔类型 1.这是最简单的类型.boolean 表达了真值,可以为 TRUE 或 FALSE. 其实就是真假的问题.2.语法 要指定一个布尔值,使用 ...

  10. 【原创】Hibernate自动生成(2)

    本实战是博主初次学习Java,分析WCP源码时,学习HibernateTools部分的实战,由于初次接触,难免错误,仅供参考,希望批评指正. 开发环境: Eclipse Version: Photon ...