Java Web学习(12):JSP九大内置对象(二)

接着来看JSP内置对象。

response对象

response对象是javax.servlet.http.HttpServletResponse类的实例。当服务器创建request对象时会同时创建用

于响应这个客户端的response对象。

response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,

HTTP状态码等等。

response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。response对象具有页面作用域,即

访问一个页面时,该页面的response对象只能对这次访问有效,其它页面的response对象对当前页面无效。

response对象代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作

用域,它只在JSP页面内有效。

response对象常用方法如下:

实例:

我们创建一个名字叫做response.jsp页面:

运行结果:

我们看到输出的顺序和我们编写代码的顺序有出入,PrintWriter对象的输出提前于内置对象out对象的输出,那

么我们怎么做到正常顺序输出呢?

在输出之前我们强制清空缓冲区,就可以做到:

运行结果:

我们学习了reuqest对象和reposnse对象,那么再来看一个重要的知识点就是请求重定向与请求转发。

生活实例:

假设你去办理某个护照:

重定向:你先去了A局,A局的人说:“这个事情不归我们管,去B局”,然后,你就从A退了出来,自己乘车去

了B局。

转发:你去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会

儿,自己到后面办公室联系B的人,让他们办好以后,送了过来。

使用代码验证

请求重定向:客户端行为,response.sendRedirect()。从本质上讲等同于两次请求,前一次请求对象不会保存,

地址栏的URL地址会改变。

例子:

我们继续使用reg.jsp用户注册页面,只不过需要提交的页面改为:

在response.jsp页面我们使用response对象重定向到request.jsp页面:

在注册页面输入用户名和选择爱好:

最后的结果:

请求转发:服务器端行为,request.getRequestDispatcher().forward(requset,response);  是一次请求,转发

后请求对象会保存,地址栏的URL地址不会改变。

还是上面那个例子:

这一次我们在response.jsp页面中把请求重定向注释掉,输入下面的一行转发代码:

还是输入用户名和选择爱好, 最后的结果:

session对象

什么是session?

session表示客户端与服务器的一次会话。Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器

关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。从上述的定义中可以看到,session实际上是一个特

定的时间概念。在服务器的内存中保存着不同用户的session。

从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个

客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办

法知道这是同一个客户,这就需要session对象。

session对象

session对象是javax.servlet.http.HttpSession类的实例。session对象是由服务器自动创建的与用户请求相关的

对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部

使用Map类来保存数据,因此保存数据的格式为"Key/value"。 session对象的value可以使复杂的对象类型,而不仅

仅局限于字符串类型。

session对象的ID指的是当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,同时分

配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在Cookie中,这样session对象和客户之间就

建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭

浏览器后,服务器端该客户的session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到

该服务器时,服务器为该客户再创建一个新的session对象。会话结束指的是和session相关的页面全部关闭。

session对象存在一定时间过期问题,所以存在session中的名值对会在一定时间后失去,可以通过更改session有

效时间来避免这种情况。同时编程时尽量避免将大量有效信息存储在session中,request是一个不错的替代对象。

session是JSP的四大域之一,但我们常用session来做会话管理/会话跟踪,就是在用户登录的时候,把用户的登

陆信息放进session里面,并在一些内部页面校验是否是当前的session ,以确保当前用户不是游客,并且拥有更多的权

限,如添加到购物车,支付购买等。并且通常情况下我们只设置一个session所以,用户登录时就会被自动把用户信息

保存到session域里面。

当你浏览商品,点击购买会提示你还没有登陆,直到登陆后,你的session才开始跟踪你的浏览记录,你才拥有购

买的权限。session是保存在服务器的,底层依赖于cookie,你在浏览器的整个浏览记录都会被保存到cookie(缓存)当

你登录的时候,服务器端的session才会创建(记住,session只保存与用户相关的信息)。

我们生活中的购物流程:

session对象常用的方法:

实例:

我们来创建两个JSP页面,一个是session_page1.jsp页面:

另一个是session_page2.jsp页面:

运行结果:

我们在session_page1.jsp页面中可以设置session保存的多个属性与属性值:

那么在session_page2.jsp也可能需要接受这么多:

最后运行结果:

session生命周期

       

1)创建:

当客户端第一次访问某个JSP或者Servlet时候,服务器会为当前会话创建一个sessionId,每次客户端向服务器端

发送请求时,都会将此sessionId携带过去,服务器会对此sessionId进行校验。

2)活动:

某次会话当中通过超链接打开的新页面属于同一次会话。

只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同一次会话。

除非本次会话的所有页面都关闭后再重新访问某个JSP或者Servlet将会创建新的会话。

注意事项:注意原有会话还存在,只是这个旧的sessionId仍然存在于服务端,只不过再也没有客户端会携带它然

后交予服务端校验。

3)销毁:

session的销毁有三种方式:

1调用了session.invalidate()方法

2session过期(超时)

3服务器重新启动

实例:

我们在session_page1.jsp页面中设置最大的生命周期时间,过了期限那么跳转到session_page.jsp页面接受到的

信息就不会保存。

在session_page1.jsp页面增加一行代码:

运行结果:

在session_page1.jsp页面中设置了setMaxInactiveInterval()的时间,比如setMaxInactiveInterval(10),无论你

是否跳转到session_page2.jsp页面,10s后,session_page1的session的ID就无效了,所以session_page2后面的

sessionId也无效。

我们可以通过代码验证上面session生命周期活动这一阶段的结论。

1)测试某次会话中通过超链接打开新的页面属于同一次会话

这个我们已经在上面遇到过,这一次还是使用同样的代码进行演示:

sessionLifeDemo.jsp页面代码:

session_page2.jsp页面代码还是不变。

运行结果:

2)只要当前会话页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源时属于同一次会话。

我们在不关闭sessionLifeDemo.jsp页面和session_page2的情况下,再次重新打开新的浏览器窗口,这一次我们

单独访问session_page2.jsp页面,ID编码还是和上面相同的,说明,这种情况还是属于同一次会话。

请看结果:

3)本次会话的所有页面都关闭后再重新访问某个JSP或者Servlet将会创建新的会话。

我们这一次全部关闭本次会话的所有页面,重新启动浏览器,重新打开sessionLifeDemo.jsp页面。

重新打开的结果:

4)使用sessio对象的invalidate()方法是销毁当前会话

每次刷新页面,都会进行新的一次会话,也就是sessionId每次刷新后都不同。session是服务器端保存用户信

息,创建时服务器端生成相应的sessionId,接下来的客服端与服务器端的联系标识就是该sessionId。销毁是将服务

器端的session信息释放,资源回收。

这个比较简单,就不再验证。

时间: 2024-11-09 08:25:16

Java Web学习(12):JSP九大内置对象(二)的相关文章

Java Web学习(11):JSP九大内置对象(一)

在学习九大内置对象之前先来看看Web应用程序的请求响应模式. Web应用程序请求响应模式 Web应用程序的请求响应模式图示: 1)用户发送请求(request) 2)服务器给用户响应(response) 生活案例: JSP九大内置对象一览 JSP内置对象是Web容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明,也就是不使用 new关键字就可以使用的内置对象.JSP内置对象也被称为预定义变量. 九大内置对象为: 九个内置对象的简介见下表: out对象 out对象是javax.

Java Web学习(13):JSP九大内置对象(三)

application对象 什么是application? 服务器启动后就产生了这个application对象,当客户在所访问的网站的各个页面之间浏览时,这个application 对象都是同一个,直到服务器关闭.但是与session不同的是,所有客户的application对象都是同一个,即所有客户 共享这个内置的application对象. appliaction对象 application对象直接包装了servlet的ServletContext类的对象,是javax.servlet.Se

黑马程序员【JSP九大内置对象和四个作用域】转载

http://www.cnblogs.com/fanfu1/p/4530980.html JSP九大内置对象和四个作用域 ------- android培训.java培训.期待与您交流! ---------- 在学习JSP的时候,首先就要先了解JSP的内置对象,什么是内置对象呢?内置对象也叫隐含对象,就是不需要预先声明就可以在脚本代码和表达式中随意使用.而这样的内置对象在JSP中一共有九个以及四个作用域,在下面的文章中我们会一一讲解. 现在我们先来说一下四个作用域,以便描述各大对象都分属于什么作

五------Jsp九大内置对象。

Jsp九大内置对象,当中最基本的是前五个对象. 5-1 out对象 out对象是JSPWriter类的实例.是向client输出内容经常使用的对象. out对象经常使用的方法例如以下: 1.out.println():向client打印字符串 2,out.clear():清除缓冲区的内容,假设在flush之后调用会抛出异常 3,out.clearBuffer():清除缓冲区的内容,假设在flush之后调用不会抛出异常 4,out.flush():将缓冲区内容输出到client 5,int get

JSP九大内置对象及其作用+四大域对象

JSP九大内置对象及其作用+四大域对象 一,什么是内置对象? 在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创建就会特别的繁琐.SUN公司因此在设计jsp时,在jsp页面加载完毕之后自动帮开发者创建好了这些对象,开发者只需要使用相应的对象调用相应的方法即可.这些系统创建好的对象就叫做内置对象. 在servlet程序中,如果开发者希望使用session对象,必须通过re

jsp九大内置对象及四个作用域【转】

1.Request对象 该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以 获取用户提交的信息. 当Request对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理.首先,将获取的 字符串用ISO-8859-1进行编码,并将编码存发岛一个字节数组中,然后再将这个数组转化为字符串对象 即可.如下: String textContent=request.getParameter("boy") byte b[]=textContent.get

JSP九大内置对象和四种属性范围解读

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文首先主要解说了JSP中四种属性范围的概念.用法与实例. 然后在这个基础之上又引入了九大内置对象,并对这几大内置对象一个一个的进行分析的解读.内容非常具体,例子都附有代码和执行的结果截图. 本文project下载 一.四种属性范围 1.1.在JSP中提供了四种属性保存范围 page:在一个页面内保存属性.跳转之后无效request:在一次服务请求范围内.server跳转后依旧有效se

JSP九大内置对象的作用和用法总结(转发)

jsp九大内置对象: 内置对象/作用域(每一种作用域的生命周期是不一样的): 1, application 全局作用域 2, session 会话作用域 3, request 请求作用域 4, pageContext 页面作用域 内置对象 5, response 响应对象 6, out 输出流对象 7, page 当前页面对象的实例 8, exception 异常 9, config ServletConfig/FilterConfig对象 优先级(按照生命周期的长短): application

JSP九大内置对象的作用和用法总结【转】

JSP九大内置对象的作用和用法总结? JSP中一共预先定义了9个这样的对象,分别为:request.response.session.application.out.pagecontext.config.page.exception 1.request对象javax.servlet.http.HttpServletRequest request对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据.(包括头信息.系统信息.请求方式以及请求参数等).request对 象的作用域