Session对象初探

相对于cookie对象而言,session对象是对每一个浏览器的,session是存放在服务器上的,而cookie是存放在客户端机器上的,其实session底层还是使用的cookie帮助实现的一些功能。

首先,session的声明周期为第一次调用request.getsession这句代码的时候,当他发现客户机没有带过来session给指定的id的时候,session就会根据你的一个浏览器给i创建一个对应的session,然后通过cookie下放到客户端,但是这个cookie 是没有限制是时间的,意思就是如果客户偶然把浏览器关了,那就意味着,则需i额数据就丢失了,这个是绝对不可以的,所哟我们需要显示的把这个cookie的有效时长给限制住,还有一点就是,session是存放在服务器端的,如果一个session半个小时没有被访问,他会自动的摧毁,所以,我们显示的下放的cookie可以限定时长为半个小时就好。

还有,session下放的cookie的默认名称为JSESSIONID,名称的意思大家都明白,不需要多解释。

下面将一个简单的例子放上来

package com.bird.session; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * @category 使用Session来实现数据的跨servlet访问 * @author Bird * */ public class SessionDemo1 extends HttpServlet { //这个servlet是用来选择购买商品的名称的 private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); String sessionId = session.getId(); Cookie cookie = new Cookie("JSESSIONID",sessionId); cookie.setPath("/Web"); cookie.setMaxAge(30*60); response.addCookie(cookie); session.setAttribute("name", "洗衣机"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }


package com.bird.session; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; /** * @category 这个servlet是用来结账的 * @author Bird * */ public class SessionDemo2 extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); PrintWriter writer = response.getWriter(); HttpSession session = request.getSession(false);//只是获取session,不创建 String name = (String) session.getAttribute("name"); writer.write(name); session.invalidate();//摧毁session } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值