Jsp的隐式对象和EL的隐式对象学习

Jsp的隐式对象和EL的隐式对象学习

 

JSP共有九大内置对象:

(1) HttpSession类的session对象
作用:主要用于来分别保存每个用户信息,与请求关联的会话;
         
会话状态维持是Web应用开发者必须面对的问题。

(2) HttpServletRequest
类的request对象
作用:代表请求对象,主要用于接受客户端通过HTTP协议连接传输到服务器端的数据。

(3) HttpServletResponse
类的respone对象
作用:代表响应对象,主要用于向客户端发送数据

(4) JspWriter
类的out对象
作用:主要用于向客户端输出数据
        Out
的基类是JspWriter

(5) ServletContex
类的application对象
作用:主要用于保存用户信息,代码片段的运行环境;
        
它是一个共享的内置对象,即一个容器中的多个用户共享一个application对象,故其保存的信息被所有用户所共享.

(6) PageContext
类的pageContext对象
作用:管理网页属性,JSP页面包装页面的上下文,管理对属于JSP中特殊可见部分中已命名对象的访问,它的创建和初始化都是由容器来完成的。

(7) ServletConfig
类的config对象
作用:代码片段配置对象,表示Servlet的配置。

(8) Object
类的page(相当于this)对象
作用:处理JSP网页,是Object类的一个实例,指的是JSP实现类的实例,即它也是JSP本身,只有在JSP页面范围之内才是合法的。

(9)Exception
作用:处理JSP文件执行时发生的错误和异常

EL共有11大内置对象:

 

JSP 开发人员可以在 EL 表达式中使用 EL 隐式对象,而无须任何显式的编码活声明。隐式对象就是设计用来为  JSP  编程提供方便的,通过隐式对象,用 EL 编写的代码就可以直接使用 JSP 页面的一些最常用的地方。 总共有 11 个隐式对象,这 11 个隐式对象可以分为 5 大类:
  
JSP 隐式对象。
  
*作用域访问隐式对象。
  
*参数访问隐式对象。
  
*首部访问隐式对象。
  
*初始化参数访问隐式对象。
         JSP
隐式对象类中只有一个 EL 隐式对象,这就是 pageContext 隐式对象。这与同名的 JSP隐式对象 实际上就是同一个对象。余下的 EL 隐式对象都是 Java 映射( map ),他们只是提供了更容易的途径来访问 pageContext 隐式对象的某些性质。
     
共有 4 个作用域隐式对象,分别为 pageScope, requestScope, sessionScope applicationScope.  这些隐式对象都是映射,利用他们可以很容易的访问作用域属性。例如:附加到 request 作用域的 username 属性可以通过 EL 表达式 ${ requestScope.username} 来直接访问。
     
有两个参数访问隐式对象,可以用来访问 HTTP 请求参数(表单提交参数),即 param paramValues. param  是一个用于访问单值参数的映射,  paramValues 则可用于访问可能包含多个值的参数。接下来的实验会展示这将如何处理。
    
3 个首部访问隐式对象,可以用于访问 HTTP 首部,分别是 header, headerValues cookie 。如果想以原始的方式访问 HTTP 首部或 cookie,  这些映射就很有用。
    
另外还有一个初始化参数访问隐式对象: initParm 。这个映射可以用于访问初始化参数的值,初始化参数的值一般都在 web.xml 中设置。

类别
标识符
描述
JSP
pageContext
PageContext 实例对应于当前页面的处理
作用域
pageScope
与页面作用域属性的名称和值相关联的  Map 类
requestScope
与请求作用域属性的名称和值相关联的  Map 类
sessionScope
与会话作用域属性的名称和值相关联的  Map 类
applicationScope
与应用程序作用域属性的名称和值相关联的  Map 类
请求参数
param
按名称存储请求参数的主要值的  Map 类
paramValues
将请求参数的所有值作为  String 数组存储的  Map 类
请求头
header
按名称存储请求头主要值的  Map 类
headerValues
将请求头的所有值作为  String 数组存储的  Map 类
Cookie
cookie
按名称存储请求附带的 cookie 的  Map 类
初始化参数
initParam
按名称存储 Web 应用程序上下文初始化参数的  Map 类

 

其实我的主要目的是为了搞清楚pageContext对象,如下:

 

Jsp pageContext 的作用
pageContext  隐含物件对应於 javax.servlet.jsp.PageContext 型态之物件,,隐含物件都自动的被加入至 pageContext 中,您可以藉由它来取得与 JSP 相关的隐含物件对应之 Servlet 物件,像是 getRequest() 可以取得 ServletRequest  getServletConfig() 可以取得 ServletConfig getSession() 可以取得 HttpSession 等等。提供取得隐含物件对应之 Servlet 物件并不是 pageContext 的主要作用,它的主要功能在提供一个单一个介面,以管理各种的公开物件(像是  HttpSession ServletContext ServletConfig ServletRequest ServletResponse 等等),提供一个单一的 API 来管理属性作用范围等等。  
我们之前曾经使用过 session setAttribute() 等方法设定一个进程可以共用的属性物件,使用 session 设定的属性在同一个进程中可以共用,除了 session 之外,还有 pageContext  request application 也都可以使用 setAttribute() 之类的方法(详请查阅 API 文件)来设定可以共用的属性物件,只不过这四个物件所设定的属性其共用范围各不相同。  
使用 pageContext 所设定的属性物件,其共用范围限於同一个  JSP 页面,使用 request 所设定的属性物件,其在同一个 request 处理期间可以共用(包括 forward 给其它 JSP 页面), session 物件所设定的属性物件则限於同一个进程作用期间可以共用,而 application 物件所设定的属性,则在整个 Web 应用程式中的 JSP 页面都可以共用。  

以下举 application 为例,您可以将一些物件当作属性设定给 application ,则另一个 JSP 页面就可以在适当的时候取得这个属性物件,例如:  

<% 
String attr = "
字串物件 "; 
out.println("
设定属性给 application " + attr); 
application.setAttribute("str", attr); 
%> 



我们先连上这个 JSP 网页以执行属性设定,然后我们再连上这个 JSP 网页:  

<% 
String attr = (String) application.getAttribute("str"); 
out.println("
取得 application 属性: " + attr); 
%> 




由於我们之前已经将字串物件设定在 application 中作为属性,所以我们可以在上面这个页面中取得之前设定的物件,同样的道理,您也可以用相同的方式设定属性给 pageContext request session 等物件,只要在允许的作用范围中,就可以取得所设定的属性物件。  

您可以使用 pageContext 物件来设定属性,并指定属性的作用范围,而不用使用个别的 pageContext request session  application 来进行设定,这就是之前所提的,以 pageContext 提供一个单一的 API 来管理属性作用范围,您可以使用以下的方法来进行设定:  

getAttribute(String name, int scope) 
setAttribute(String name, Object value, int scope) 
removeAttribute(String name, int scope) 



其中的 scope 可以使用以下的常数来进行指定: pageContext.PAGE_SCOPE pageContext.REQUEST_SCOPE  pageContext.SESSION_SCOPE pageContext.APPLICATION_SCOPE ,常数的名称已经直接指明属性范围,我们可以将上面的两个 JSP 页面改为以下的形式:  

<% 
String attr = "
字串物件 "; 
out.println("
设定属性给 application " + attr); 
pageContext.setAttribute("str", attr, pageContext.APPLICATION_SCOPE); 
%> 



<% 
String attr = (String) pageContext.getAttribute("str", pageContext.APPLICATION_SCOPE); 
out.println("
取得 application 属性: " + attr); 
%>
https://blog.csdn.net/j2ee_fan/article/details/1837882
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值