`
kissuyoyo
  • 浏览: 15262 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

JSP九大内置对象(二)

    博客分类:
  • web
 
阅读更多

 接着来看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信息释放,资源回收。

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

分享到:
评论

相关推荐

    jsp九大内置对象

    ### JSP九大内置对象详解 #### 一、Request对象 - **定义**:`javax.servlet.http.HttpServletRequest` 类型的对象。 - **用途**:用于接收客户端发送到服务器端的数据(包括但不限于HTTP请求头、请求参数等)。 - ...

    jsp九大内置对象讲解

    二、JSP九大内置对象 1. request对象(javax.servlet.http.HttpServletRequest) request对象是JSP九大内置对象之一,每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。request...

    JSP九大内置对象

    jsp九大内置对象是学习jsp必须了解的内容,所以现在总结一下,以便以后学习中可以使用。

    Jsp九大内置对象代码

    在"Jsp九大内置对象对应代码"这个压缩包中,包含了针对这九大内置对象的具体应用示例。通过这些代码,你可以更深入地理解每个对象的功能和使用场景。例如,你可能会看到如何使用request对象获取参数,如何通过...

    jsp的九大内置对象详细讲解

    在Java Server Pages(JSP)技术中,九大内置对象是开发者处理网页动态内容时最常用到的工具。这些对象由JSP容器自动创建并注入到每个JSP页面,使得开发人员能够轻松地访问服务器端的功能。下面将对这九大内置对象...

    jsp九大内置对象.doc

    【jsp九大内置对象】是JavaServer Pages (JSP) 技术的核心组成部分,它们提供了一种方便的方式来访问和操作与HTTP请求相关的各种信息。以下是这九大内置对象的详细说明: 1. **Request对象**:全称为...

    jsp九大内置对象和四大作用域详解.docx

    jsp九大内置对象和四大作用域详解 jsp中的九大内置对象和四大作用域是jsp编程中非常重要的概念,它们提供了访问和操作服务器端资源的能力,帮助开发者快速构建动态Web应用程序。 一、request对象 request对象代表...

    jsp的九大内置对象和四大作用域

    【JSP的九大内置对象】 JSP的九大内置对象是JSP页面中可以直接使用的Java对象,无需显式声明。它们提供了对HTTP请求、响应、会话管理、页面上下文访问等核心功能的支持。 1. **request对象**:代表...

    jsp九大内置对象.xmind

    JSP九大内置对象思维导图,对正在学习JSP的同学很有帮助。session、request、response、application等等。

    jsp九种内置对象举例讲解

    【jsp九种内置对象详解】 在JavaServer Pages (JSP)技术中,内置对象是预定义的、可以直接在页面上使用的对象,无需显式创建。它们提供了与服务器、用户交互以及管理请求和响应数据的能力。以下是JSP的九种内置对象...

    Jsp九大内置对象,request,session,application

    全面介绍了JSP的几种内置对象。熟练使用这些内置对象是开发JSP应用程序的基本要求,尤其是对于request、session和application对象更是必须要掌握的。 会使用对象所具有的方法,能熟练使用每一种对象的几种常用方法。...

    JSP九大内置对象详解

    ### JSP九大内置对象详解 #### 1. request对象 **概述:** `request`对象是JSP中非常重要的一个内置对象,它主要用于封装客户端发送到服务器端的HTTP请求信息。通过这个对象,开发者可以获取客户端请求的各种信息...

    JSP九大内置对象.md

    JSP九大内置对象

    jsp9大内置对象讲解

    《JSP 九大内置对象详解》 在JavaServer Pages (JSP) 技术中,开发者可以使用九个预定义的、与请求处理相关的对象,这些对象被称为“内置对象”。这些对象提供了对HTTP请求的访问,简化了网页开发,使得程序员能够...

Global site tag (gtag.js) - Google Analytics