- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
web11-03session教程
Session
Cookie技术可以将用户的信息保存在各自的浏览器中,
优点:很明显实现了同一个用户不同请求中数据共享。
缺点:黑客可以利用脚本等手段 窃取cookie中的重要数据,从而泄漏个人的隐私,存在巨大的安全隐患。
session技术 是将会话的数据保存在服务器端的技术。
什么是session?
为了更好的理解session,以网站购物为例,通过一张图来描述session保存用户 信息的原理。
用户甲和用户乙都调用buyServlet将商品添加到购物车,调用payServlet进行商品结算。
由于甲和乙购买商品类似,这里以甲为主。 当用户甲访问购物网站时,服务器为甲创建了一个session对象(相当于购物车)。
当甲将小米手机添加到购物车时,小米手机的信息便存到了session对象中,同时,服务器将session对象的唯一标识id属性以Cookie的形式返回给甲的浏览器。
当甲完成购物进行结账时,需要向服务器结账请求,这时,浏览器就会???动在请求头将 唯一标识 回送给服务器。
服务器根据唯一标识,找到为用户甲创建的session容器,并将session对象中存放的手机信息进行结算。
需要注意的是:由于客户端需要接受、记录、和回送session的唯一标识,
因此通常情况下,session是借助cookie技术来传递ID属性的。
Session的API
获取Session对象
Session是基于用户的请求,而把用户的重要信息在服务器端针对这个用户(浏览器)创建了一个容器。
而这个Session容器是由web服务器(tomcat)帮助我们创建的,在程序中我们只能去获取到这个容器,然后给容器添加数据或者取出数据,或者删除数据,而我们是不能创建这个容器对象。
在HttpServletRequest对象中提供了获取session对象的方法:
使用request对象就可以获取到当前针对用户的请求服务器内部创建的那个Session容器对象。
HttpSession依然是一个接口,而这个接口的实现类有web服务器来提供。只要能够运行我们JavaEE项目的web访问前,它们都会实现Java提供的所有web技术中的接口。
演示Session:
需要2个Servlet程序:
在第一个Servlet中获取到Session对象,然后把用户当前的ip保存在Session中,在第二Servlet中取出,然后通过response对象把ip给客户端响应回去。第一个Servlet访问完之后,不使用转发技术。
给Session对象中保存数据:
需要使用HttpSession接口中的:
获取数据:
删除Session中的数据
需求1: 共享数据:第一个Servlet程序:获取到用户的ip保存在Session中;在第二个servlet中取出session中的ip(debug演示)
1、新建包:cn.itcast.x_session
2、编写 Session1Servlet,将ip地址保存到session中。
public class Session1Servlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 需求1: 在session中保存ip地址
// 获得session
HttpSession session = request.getSession();
// 获得ip地址
String ip = request.getRemoteAddr();
// 保存ip
session.setAttribute(ip, ip);
// 给浏览器输出一句话
response.setContentType(text/html;charset=utf-8);
response.getWriter().println(保存ip成功!);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
3、新建Session2Servlet,从session中获取ip
public class Session2Servlet extends HttpServlet {
public void doGet(HttpServletRequest re
文档评论(0)