jsp实验4.(2)session
来源:互联网 发布:马克威算法交易平台 编辑:程序博客网 时间:2024/06/06 02:17
2、题目要求:(X.jsp,Y.jsp)增加代码,在网页X.jsp中设置session变量course的值为“移动Web应用设计”+当前时间(new Date()),在网页Y.jsp和网页Z.jsp中可以取出并显示该变量的值。 所有网页都会显示session ID的值。每个网页都有到另两个网页的链接。
HTTP是无状态协议,这意味着每次客户端检索网页时,都要单独打开一个服务器连接,因此服务器不会记录下先前客户端请求的任何信息。
有三种方法来维持客户端与服务器的会话:
Cookies
隐藏表单域
重写URL
除了以上几种方法外,JSP利用servlet提供的HttpSession接口来识别一个用户,存储这个用户的所有访问信息。
默认情况下,JSP允许会话跟踪,一个新的HttpSession对象将会自动地为新的客户端实例化。禁止会话跟踪需要显式地关掉它,通过将page指令中session属性值设为false来实现,就像下面这样:
<%@ page session="false" %>——参考http://www.runoob.com/jsp/jsp-session.html
首先,充分理解session:
1.http协议是无状态的,但是通过session可以在Web服务器上临时保存少量
变量的状态。 session保存的状态只与当前浏览器相关。在用户第一次访问
页面时Web服务器就会送回sessionId(作为cookie)。服务器根据sessionId访
问session变量。
2.通过服务器端语言(JSP,ASP.net, PHP)设置session对象。 一个网站的后台程
序可以利用session 变量在后台(服务器)保留状态。session与Web服务器
有关,一个Web服务器中设置的session,另一个Web服务器访问不了。
3.如果一个网站的后台程序设置了session变量,当通过浏览器第一次访问该
网站时,服务器脚本语言就会生成一个唯一的session ID,并作为cookie传送
到客户端保存。以后每次访问该网站,该session ID都会和其它cookie一起送
到服务器。通过session ID服务器端可以找到为该session保存的变量,使得
这些变量可以被不同网页所共享。
4.session的生命周期和浏览器有关,浏览器关闭session将被删除。但是如果
你长时间不关闭浏览器,又不访问该网站, session的生命周期也会结束,
一般是三十分钟。
这里用到的一个session对象的函数原型:
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="GB2312" contentType="text/html;charset=GB2312"%><% session.setAttribute("course", "移动Web应用设计"+ new Date()); %><% String id= session.getId(); %><!DOCTYPE html><html lang="zh-cn"><head><title>Session X</title></head><body> <h1>Session X</h1> sessionID:<%= id%><br><a href=Y.jsp>Y.jsp</a> <br><a href=Z.jsp>Z.jsp</a></body></html>生成了session对象,course对应的值为“移动web应用设计”+当前时间,在页面中将sessionID显示出来。
Y.jsp的代码如下:
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="GB2312" contentType="text/html;charset=GB2312"%><% String course = (String)session.getAttribute("course"); %> <% String id= session.getId(); %><!DOCTYPE html><html lang="zh-cn"><head><title>Session Y</title></head><body> <h1>Session Y</h1> sessionID:<%= id%><br> course:<%= course %><br> <a href=X.jsp>X.jsp</a> <br><a href=Z.jsp>Z.jsp</a></body></html>可以看到获取到了的sessionID和x.jsp中的sessionID是一样的,每次访问该网站,该session ID都会和其它cookie一起送到服务器。通过session ID服务器端可以找到为该session保存的变量,使得这些变量可以被不同网页所共享。
Z.jsp的完整代码如下:
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="GB2312" contentType="text/html;charset=GB2312"%><% String course = (String)session.getAttribute("course"); %> <% String id= session.getId(); %><!DOCTYPE html><html lang="zh-cn"><head><title>Session Z</title></head><body> <h1>Session Z</h1> sessionID:<%= id%><br> course:<%= course %><br> <a href=X.jsp>X.jsp</a><br> <a href=Y.jsp>Y.jsp</a></body></html>效果和Y.jsp是一样的。
仅当再次点击X.jsp(再次设置session对象中的course的值时),Y.jsp和Z.jsp看到的session对象中的course值也是会更新的。
回答问题:
(2)在哪些情况下,该浏览器显示的session ID会发生变化:
重新启动浏览器时。session的生命周期和浏览器有关,浏览器关闭session将被删除。但是如果你长时间不关闭浏览器,又不访问该网站,session的生命周期也会结束,一般是三十分钟。
(3)在不同浏览器中浏览这些网页,session ID是否相同?
都不同
(4)通过上面的实验,你如何说明session的含义?
session保存的状态只与当前浏览器相关。在用户第一次访问页面时Web服务器就会送回sessionId(作为cookie)。服务器根据sessionId访问session变量。
- jsp实验4.(2)session
- JSP - cookie与session-2
- JSP session
- jsp---->Session
- JSP Session
- JSP SESSION
- JSP Session
- JSP----session
- JSP Session
- JSP Session
- jsp ----session
- jsp-session
- JSP Session
- jsp session
- JSP Session
- jsp Session
- jsp session
- jsp实验4.(3)cookie的使用
- 仿京东app,采用组件化开发 ARouter + mvp + dagger2 + rxjava + retrofit + fresco 架构
- VTK运行Tcl文件
- hdu 1050 Moving Tables
- redis 主从复制
- 大数计算文章系列博客地址纪录: 阶乘之计算http://blog.csdn.net/liangbch/rss/list
- jsp实验4.(2)session
- 在Javaweb当中contentType和pageEncoding的编码区别
- 从外部访问Docker
- Mybatis-Spring整合Mapper代理开发
- adb操作命令详解及大全
- STM32 ISP下载模式和JLINK下载模式
- 二路归并排序
- 完数
- 文章标题