系列文章目录
前言
接上一篇
一、九大隐含对象
定义:可以在jsp中直接使用的对象。(不需要我们new的对象,服务器实例化的九大隐含对象,并存放在_jspService()方法中)
注意:只是不需要我们自己new 而已 实际上源码中肯定还是帮我们new了
设置完之后重启一下服务器(需要重新编译)
多了1个对象 exception
由上可以看出,不需要我们new的对象,服务器帮我们new好了,服务器实例化的九大隐含对象,并存放在_jspService()方法中
* 对象详情
1. application
* 类型:ServletContext
* 作用:域对象
* Servlet中的获取方式:this.getServletContext()
2. session
* 类型:HttpSession
* 作用:域对象
* Servlet中的获取方式:request.getSession();
3. request
* 类型:HttpServletRequest
* 作用:域对象(4个)
* Servlet中的获取方式:直接使用
4. pageContext
* 类型:PageContext
* 作用
* 域对象
* jsp老大(可以通过老大直接获取其他八个隐含对象)
* Servlet中的获取方式:无
前面4个都是域对象
5. response(关联记忆 3request)
* 类型:HttpServletResponse
* 作用:域Servlet中的response对象一致
* Servlet中的获取方式:直接使用
6. page (关联记忆4. pageContext)
* 类型:Object
* 作用:page = this,当前类的对象。
7. out
* 类型:JspWriter
* 作用:与Servlet中的PrintWriter的作用类似。(都继承了java.io.Writer)
类似,主要用于响应html代码
8. config
* 类型:ServletConfig
* 作用:与Servlet中的ServletConfig的作用一致
* Servlet中的获取方式:this.getServletConfig()
9. exception
* 类型:Throwable
* 作用:(有exception对象才可以)接受处理异常信息
ctrl+shift+T
可以看出 Throwable 是最大的
二、四大域对象
生活中,假如你点了一个外卖会用飞机给你送来吗?很大概率是不会的
同理一般来说,两个区域之间如果都是北京,那么一般使用同城快递,没必要使用全球快递
* 域:区域,在web应用的不同资源中,相互传递数据。
* 生活区域(快递)
* 昌平区域
* 北京同城
* 全国快递
* 全球快递
* 程序区域
* 域对象共有的方法
* getAttribute()
* setAttribute()
* removeAttribute()
* 详情(从大到小如下)
* application
* 范围: 当前项目中有效
* session
* 范围: 当前会话中有效(与浏览器,只要浏览器不关闭|不换,就一直有效)
* request
* 范围: 当前请求中有效(注意转发和重定向,转发 也是 当前请求)
* pageContext
* 范围: 当前页面中有效
* 能用小域,就不用大域。
验证一下
接着测试跳转这个页面,再去取值,看看能否取得到
比如转发才是当前请求,重定向就相当于换了个请求
只有1个null,符合我们前面说的
下面我们再来验证 超链接
2个null 不是当前请求(当前页没了,request 也没了 因为他们都不是当前请求)
再然后测试session ,让session失效,需要关闭浏览器
具体操作:复制当前网址,关闭浏览器,再打开浏览器,粘贴网址,然后按回车
最后一个还关得掉吗?
得把项目关了才能关得掉
重启一下服务器
留一个疑问:
我们重启服务器后,粘贴之前的页面
这是session的特性,后面文章会有说到