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提供的计数器
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。