JSP与EL隐式对象
2017-06-30 16:15
260 查看
一,JSP内置对象
隐式对象是可以直接使用的,无需声明。因为在JSP转译为servlet文件后,会自动声明其对象。
注意①:隐式对象只能在<% %>之间,或<%= %>之间只用,因为正如先前所提,隐式对象在转译为
servlet后,是_jspService()中的局部变量,无法再<%! %>之间使用隐式对象。
注意②:out对应的是JspWriter对象,而非PrintWriter。不同在于JspWriter直接继承于 java.io.writer,虽然内部也是调用printwriter,但具有缓冲区功能。如果jsp页面没有缓 冲,直接来输出响应,但jsp页面有缓冲时,只有在清除(flush)缓冲区时才会进行输出。 在编写JSP页面时,可以通过page指示元素的buffer属性来设置缓冲区的大小,默认值 是8kb。默认缓冲区满后自动输出。
注意③:pageContext隐式对象转译后,对应javax.servlet.jsp.PageContext类。这个对象将所有jsp 页面的信息封装,要取得对应jsp页面的servletContext、servletConfig、httpSession与 jspWriter对象时,可以通过以下代码取得:
Aplication = pageContext.getServletContext();
Config = pageContext.getServletConfig();
Session = pageContext.getSession();
Out = pageContext.getOut();
除了封装所有的jsp页面信息之外,还可以使用pageContext来设置范围属性,同样使用 setAttribute()、getAttribute()与 removeAttribut()来进行设置:
getAttribute(String name,int scope)
setAttribut(String name , Object value, int scope)
removeAttribute(String name , int scope)
其中的scope可以使用以下的常数来制定范围:
pageContext.PAGE_SCOPE、 (当前页面)
pageContext.REQUEST_SCOPE、 (请求)
pageContext.SESSION_SCOPE、 (会话)
PageContext.APPLICATION_SCOPE。 (应用程序)
当不知道属性范围时,可以不设定scope,会自动依序从页面、请求、会话、应用程序(基 本是从小到大)来寻找对应的属性,当然这样做很不好。也可以使用findAttribut()来查找 范围。
二,EL隐式对象
注释①:JSP隐式对象pageContext 与EL隐式对象pageContext其实是同一对象。与其
他隐式对象不同,pageContext是对象的实际引用,而其他隐式对象,而都是映射(Map , 键值对的集合)。
注释②:如果请求中有多个参数的key同名,param.name只能取得一个参数的值。但
使用paramValues.name[x]可以取得key为name的第(x-1)个参数的值。headerValues同
样如此。
隐式对象是可以直接使用的,无需声明。因为在JSP转译为servlet文件后,会自动声明其对象。
隐式对象① | 说明 |
out | 对应JspWriter对象,其内部关联一个PrintWriter对象② |
Request | 对应HttpServletRequest对象 |
Response | 对应HttpServletResponse对象 |
Config | 对应ServletConfig对象 |
Application | 对应ServletContext对象 |
Session | 对应HttpSession对象 |
pageContext ③ | 对应PageContext对象,它提供了jsp页面资源的封装,并可设置页面范围属性 |
Exception | 对应Throwable对象,代表由其他JSP页面抛出的异常对象,只会出现于JSP错误页面 |
page | 对应this |
注意①:隐式对象只能在<% %>之间,或<%= %>之间只用,因为正如先前所提,隐式对象在转译为
servlet后,是_jspService()中的局部变量,无法再<%! %>之间使用隐式对象。
注意②:out对应的是JspWriter对象,而非PrintWriter。不同在于JspWriter直接继承于 java.io.writer,虽然内部也是调用printwriter,但具有缓冲区功能。如果jsp页面没有缓 冲,直接来输出响应,但jsp页面有缓冲时,只有在清除(flush)缓冲区时才会进行输出。 在编写JSP页面时,可以通过page指示元素的buffer属性来设置缓冲区的大小,默认值 是8kb。默认缓冲区满后自动输出。
注意③:pageContext隐式对象转译后,对应javax.servlet.jsp.PageContext类。这个对象将所有jsp 页面的信息封装,要取得对应jsp页面的servletContext、servletConfig、httpSession与 jspWriter对象时,可以通过以下代码取得:
Aplication = pageContext.getServletContext();
Config = pageContext.getServletConfig();
Session = pageContext.getSession();
Out = pageContext.getOut();
除了封装所有的jsp页面信息之外,还可以使用pageContext来设置范围属性,同样使用 setAttribute()、getAttribute()与 removeAttribut()来进行设置:
getAttribute(String name,int scope)
setAttribut(String name , Object value, int scope)
removeAttribute(String name , int scope)
其中的scope可以使用以下的常数来制定范围:
pageContext.PAGE_SCOPE、 (当前页面)
pageContext.REQUEST_SCOPE、 (请求)
pageContext.SESSION_SCOPE、 (会话)
PageContext.APPLICATION_SCOPE。 (应用程序)
当不知道属性范围时,可以不设定scope,会自动依序从页面、请求、会话、应用程序(基 本是从小到大)来寻找对应的属性,当然这样做很不好。也可以使用findAttribut()来查找 范围。
二,EL隐式对象
类别 | 隐式对象 | 说明描述 |
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 | 存放应用程序初始化属性键值对的Map |
他隐式对象不同,pageContext是对象的实际引用,而其他隐式对象,而都是映射(Map , 键值对的集合)。
注释②:如果请求中有多个参数的key同名,param.name只能取得一个参数的值。但
使用paramValues.name[x]可以取得key为name的第(x-1)个参数的值。headerValues同
样如此。
相关文章推荐
- Jsp的隐式对象和EL的隐式对象学习
- JSP 4个域对象-9个内置对象-11个EL隐式对象
- Jsp的隐式对象和EL的隐式对象学习
- Jsp隐式对象 和 EL隐式对象
- jsp中9大内置对象与servlet3大域对象与EL里面的11隐式对象
- JSP 4个域对象-9个内置对象-11个EL隐式对象
- 第十一天3月4日之JSP、EL表达式、el的11个隐式对象、jstl
- JSP 4个域对象-9个内置对象-11个EL隐式对象
- JSP中的EL隐式对象
- Jsp的隐式对象和EL的隐式对象学习
- Jsp的隐式对象和EL的隐式对象
- JSP九大隐式对象-----jsp实现图片的下载
- JSP的隐式对象
- JSP隐式对象之Application
- JSP的隐式对象
- JSP的执行过程\JSP的隐式对象
- JSP技术 指令 乱码问题 运行原理和九大隐式对象 web开发的四个域对象 javabean
- JSP隐式对象--request对象(转)
- JSP隐式对象和EL表达式隐式对象的区别
- JSTL的EL隐式对象