Javaweb中session共享数据初级实验

来源:互联网 发布:大型开放式网络课程 编辑:程序博客网 时间:2024/05/01 22:02

        先简单说下session,session其实就是当一个浏览器去访问一个服务器的时候服务器的内存为浏览器分配的一个空间,而这个空间是被你的浏览器独占的,注意是你的浏览器而不是你的客户端(电脑)。而这个session可以实现数据共享,今天给大家分享一个最简单的session的共享数据小案例。

如先创建session1

session1

package com.session;
import java.awt.print.Printable;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
//以上包部分不做过多解释
//设置写入session1的数据然后让session2去拿到共享数据
public class Session1 extends HttpServlet {
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
HttpSession ht = req.getSession(true);
String sid = ht.getId();//此处是查看session的ID,后面会发现session1的ID和session2的ID是一样的,这就实现了数据的共享
System.out.println(sid);//控制台打印出session的ID
ht.setAttribute("name", "zhang3");//设置session的属性为name,值为zhang3
ht.setMaxInactiveInterval(30);//此处是设置浏览器的间隔时间30S 可以查看api此方法  
为了更好的看到效果此处加上以下代码显示在浏览器界面
PrintWriter pw =  res.getWriter();
          pw.println("my name is zhang3"); //向浏览器写入我的名字是zhang3
}
}
到此session1完成编译

创建session2去访问session1中共享的数据信息

session2
package com.session;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
//以上包不做解释
//设置session2去拿到session1共享的数据
public class Session2 extends HttpServlet {
protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
HttpSession ht = req.getSession(true);
String sid = ht.getId();
System.out.println(sid);//同样打印session2的ID
String myname = (String)ht.getAttribute("name");//获取到session1的name
PrintWriter pw = res.getWriter();
pw.println("name="+myname);//将从session1中获取的name显示到浏览器
}
}
现在我们看如下结果
当然在访问session之前你的web.xml的设置是正确的否则会访问不了
这是我的web.xml

现在我们开始访问session1


现在我们开始访问session2


证明session1共享的数据确实被session2所拿到

下面解释下

ht.setMaxInactiveInterval(30);

意思就是当过了30s以后session2就拿不到session1的数据了看下图


最后我们看session1的ID和session2的ID是否相同


很明显两次的ID是相同的

这样一个session的共享小案例再此分享给大家,希望可以和大家多多交流,也希望大神多多指教。

原创粉丝点击