JSP内置对象之------response、session、application


1. 重定向和转发
   response.sendRedirect("地址");
a. 页面地址显示最终页面
        b. 不可向后传递参数
        c. 跳到外部站点


   request.getRequestDispatcher("地址").forward(request, response);
a. 页面地址显示请求页面
        b. 可以向后传递参数
        c. 不可以跳到外部站点


通俗的来说两者的区别就是:


  重定向:发出两次请求,不能够共享前一次请求中封装的参数信息
  转发:   发一次请求


2、HTTP是无状态的,   只要是两次请求,则无法保持状态. 
当客户向服务器端发出请求(request),然后服务器返回响应(response),连接关闭。在服务器端不会保存连接的相关信息,下一次客户再发出请


求,服务器无法判断这一次的连接和上一次的连接是否属于同一个客户,所以上述的  重定向 在一次请求发出后,第二次无法再获取到响应中的参数。
但是,当我们在浏览网站的时候,(例如:逛淘宝)登录成功之后,随意浏览该网站的其他页面,信息还能够得以保存。这是怎么办到的呢?
解决方案:
  1. 客户端:    Cookie
  2. 服务器端:
                request   (不能解决)
                session
                application


3、cookie
cookie对象不属于jsp内置对象,通常用于在浏览器端保存会话过程中的一些参数,如下面要介绍的 sessionId
它是web服务器保存在用户硬盘上数据,保存路径为:C:\Documents and Settings\登录用户名\Cookies ,信息片段以“名”/“值” 对( name--


value)的方式存取
cookie对象的写入要结合 response 对象来实现,主要步骤:
a、创建 cookie对象
b、设定属性( 一般为 有效期)  以  秒  为单位
c、通过response写入客户端
<%
Cookie c=new Cookie("username","emily_RR");
c.setMaxAge(60*60);
response.addCookie(c);
%>




4、session 
工作原理:
(1)、客户首次访问服务器的一个页面时,服务器就会为客户分配一个session对象,该对象对应一个唯一的 sessionId ,将该sessionId 发送到客


户端,并写入到 cookie中,使得客户端和服务器端对应
(2)、当客户继续访问服务器上的其他资源时,session不会被重新分配。直到session被销毁
(3)、session被销毁后,重新向服务器发送请求时,session对象也会重新分配


这就好比你去图书馆借书,管理员一定需要你出示借书证,如果没有,会让你办理一张,然后发给你,凭借这个证,你可以在这个借书证的有效时间内


借书,一旦图书证销毁( 丢失、或者是到期),当你又去图书馆借书的时候,又会重新给你办理一张。


session 的常用方法:     session.setAttribute("uname",“emily_RR”);
session.getAttribute("uname");
session.removeAttribute("uname");
session.invalidate();   销毁 session   
5、session销毁的时机:
a、 关闭浏览器一段时间后.    会话有持续时间
b、 session.invalidate();
    session.removeAttribute("");
c、 关闭服务器.


6、application对象
提供全局信息,不同的客户可以共享,但是session对象是与客户根据编号一一对应的,而且session对象是客户第一次访问服务器上的jsp页面时被创


建的,application则是在 服务器被启动的时候建立的,知道服务器被关闭,application对象才被取消。
我们发现在一些网站上可以显示:您是本站第xxxx位访问者,这个就是用application提供的计数器


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章