JSP内置对象预览及四种属性范围详解

最近的一段工作,发现学习离不开记忆,在理解的基础上一定要去记忆,否则每次工作效率都会很低的,通过死记硬背以及更多的实践操作去记忆。不光要记忆具体的知识点细节,更要记忆知识体系,遇到的问题和解决的办法!言归正传,JSP内置对象!

这部分学习JSP九大内置对象及对应的操作接口,4种属性范围及属性操作

一.JSP内置对象预览

【1】pageContext         (javax.sevlet.jsp.PageContext)                                  JSP的页面容器

【2】request                (javax.sevlet.http.HttpServletRequest)                 该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象

                                                                                                                                   可以获取用户提交信息。

【3】response            (javax.servlet.http.HttpServletResponse)            对客户的请求做出动态的响应,向客户端发送数据。

【4】session               (javax.servlet.http.HttpSession)                            用来保存每一个用户的信息

1.什么是Session:Session对象是一个jsp内置对象,它在第一个jsp页面被装载时自动创建,完成会话期管理。
  从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。
2.session对象的Id:当一个客户首次访问服务器上的一个jsp页面时, jsp引擎产生一个session对象,同时分配一个String类型的Id号,jsp引擎同时将这个Id号发送到客户端,存放在Cookie中,这样 session对象和客户之间就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏览器后,服务器端该客户的session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的session对象。


【5】application          (javax.servlet.ServletContext)                               服务器启动后就产生了这个application对象,当客户再所访问的网站的各个页面之间浏览时,这个

                                                                                                                                 application对象都是同一个,直到服务器关闭。但是与session不同的是,所有客户的application对

                                                                                                                                  象都是同一个,即所有客户共享这个内置的application 对象。

【6】config                   (javax.servlet.ServletConfig)                                 服务器配置,可以取得初始化参数

【7】out                         (javax.servlet.jsp.JspWriter)                                Out对象是一个输出流,用来向客户端输出数据。Out对象用于各种数据的输出

【8】page                     (java.lang.Object)                                                    表示从该页面中表示出来的一个Servlet实例

【9】exception              (java.lang.Throwable)                                            表示JSP页面所发生的异常,在错误页中才起作用


二.四种属性范围预览

属性范围是指一个内置对象可以在多少个页面中保存并继续使用

【1】pageContext(习惯称为page属性范围)                                 只在一个页面中保存属性,跳转之后无效

【2】request                            只在一次请求中有效,服务器跳转后依然有效

【3】session                           在一次会话范围中,无论何种跳转都可以使用,但是新开浏览器无法使用

【4】application                      在整个服务器上保存,所有的用户都可以使用

这4个内置对象都支持以下的属性操作方法:

【1】public void setAttribute(String name,Object o)  设置属性的名称及内容

【2】public Object getAttribute(String name)              根据属性名称取得属性

【3】public void removeAttribute(String name)           删除指定的属性

例如:

request.setAttribute("message", "用户名或密码错误");

注意我们通过getAttribute(String name)方法返回的是Object类型,有时候我们需要进行强制类型转换

String message = (String)request.getAttribute("message");


1.page属性范围

JSP内置对象预览及四种属性范围详解_第1张图片

JSP内置对象预览及四种属性范围详解_第2张图片

如果在上图代码光标处加入代码:<jsp:forward page="pagescope02.jsp" />

并且编写jsp页面

JSP内置对象预览及四种属性范围详解_第3张图片

结果:

即使是服务器端跳转,pagescope02.jsp也无法得到pagescope01.jsp中设置的pageContext的属性值


2.request属性范围

JSP内置对象预览及四种属性范围详解_第4张图片

JSP内置对象预览及四种属性范围详解_第5张图片

但是将服务器跳转改为超链接形式:<a href="pagescope02.jsp"

我们发现通过超链接并不能取得属性值

&&&详解request

request表示客户的请求。正常情况下,一次请求服务器只会给予一次回应,那么这时如果是服务器端跳转,请求的地址栏没有改变,所以也就相当于回应了一次;但是如果地址栏改变了,比如采取超链接形式,就相当于发出了第二次请求,则第一次请求的内容肯定就已经消失,无法取得。


3.session属性范围

不论是客户端跳转还是服务器端跳转,只要属性设置了就能取得

但是如果此时再打开一个新的浏览器再进行访问,则无法取得设置的session属性。

注意:当你打开一个浏览器的时候,有许多选项卡,如果只关闭pagescope02.jsp这个选项卡,不关闭浏览器,新开一个选项卡进行该页面的登录,仍然可以取得属性值。

每一个浏览器连接到服务器后,实际上都表示各自的session,表示每一位不通的上网者都有各自的属性,所以新的浏览器打开后无法取得其他session设置的属性。

JSP内置对象预览及四种属性范围详解_第6张图片

JSP内置对象预览及四种属性范围详解_第7张图片

JSP内置对象预览及四种属性范围详解_第8张图片


4.application属性范围

设置了application属性范围,再新开一个浏览器直接访问pagescope02.jsp也可以获得属性,

因为本程序会将这两个属性保存在服务器上。

JSP内置对象预览及四种属性范围详解_第9张图片



5.page属性范围扩展

在javax.sevlet.jsp.PageContext类中,还有一种设置属性的方法

public void setAttribute(String name, Object value, int scope)

在PageContext类中存在四个表示属性范围的常量;

【1】public static final int PAGE_SCOPE;

【2】public static final int REQUEST_SCOPE;

【3】public static final int SESSION_SCOPE;

【4】public static final int APPLICATION SCOPE;

使用这种方式较少。





你可能感兴趣的:(JSP内置对象预览及四种属性范围详解)