Java Web会话技术Session的简单使用

网友投稿 311 2022-10-24


Java Web会话技术Session的简单使用

什么是Session

Session技术是将信息保存在服务端,而客户端需要接收、记录和回送Session的ID,VOShz所以Session通常情况下是借助Cookie技术来传递ID给服务端的,服务端拿到session id之后查询内存中对应的记录。

一个客户端对应一个Session,而一个Session有多个Attribute,每一个Attribute有唯一的name。

编写代码证明提出的观点:

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

HttpSession session = req.getSession();

PrintWriter writer = resp.getWriter();

// 给session绑定一个user对象

session.setAttribute("user", new User(1, "kongsam"));

List users = new ArrayList<>();

users.add("kongsam");

users.add("xiaoming");

users.add("xiaohong");

// 给session绑定一个list数组

session.setAttribute("list", users);

// 最后打印输出

writer.println("jsESSIONID = " + session.getId());

writer.println("object => user = " + session.getAttribute("user").toString());

for (String user : users) {

writer.println("list => user = " + user);

}

}

两个不同的浏览器就是两个不同的客户端,这两个客户端对应不同的JSESSIONID。

Session如何工作

在现实生活中,当你去理发店理发时,你可以选择在前台办理一张会员卡,前台工作人员将你的基本信息和之后的消费信息等都存储到店家电脑的硬盘上,在以后消费的时候你仅凭一张会VOShz员卡就可以查询到你所有的信息和消费记录。注意,这里的你是指客户端,前台(店家)指的是服务端。

结合代码理解Session

SessionDemo01是用来创建一个假的数据库,并且把这个数据库存放到Session中进行保管。

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

HttpSession session = req.getSession();

// 创建一个假数据库

Map vipUsers = new HashMap<>();

vipUsers.put("kongsam", new VipUser(1, "kongsam", "123", 50));

vipUsers.put("xiaoming", new VipUser(2, "xiaoming", "123", 100));

vipUsers.put("xiaohong", new VipUser(3, "xiaohong", "123", 200));

// 将假数据库的数据存放到Session中

session.setAttribute("vipUsers", vipUsers);

}

然后SessionDemo02用于访问Session里vipsUsers数据库,如果用户没有办理或者不存在该用户则为其注册一个新VIP。

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

req.setCharacterEncoding("utf-8");

resp.setCharacterEncoding("utf-8");

resp.setContentType("text/html;charset=utf-8");

HttpSession session = req.getSession();

// 获取username

String username = req.getParameter("username");

// 从Session中取出数据库

Map maps = (Map) session.getAttribute("vipUsers");

// 判断数据库中是否有和username匹配的用户

if (maps.get(username) != null && maps.get(username).getUsername().equals(username)) {

resp.getWriter().println(maps.get(username).getUsername() + "您好,您目前的积分是: " + maps.get(username).getPoints());

} else {

resp.geVOShztWriter().println("您还没有办理会员卡,前台正在为您办理中...,请刷新页面。");

maps.put(username, new VipUser(1, username, "123", 50));

session.setAttribute("vipUsers", maps);

}

}

来看看效果吧!

以上就是java Web会话技术Session的简单使用的详细内容,更多关于Java Session的使用的资料请关注我们其它相关文章!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:防御式编程
下一篇:数据传输中用到的模拟量和开关量指什么?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~