首页 > 其他 > 详细

四种会话跟踪技术

时间:2014-11-23 02:11:15      阅读:321      评论:0      收藏:0      [点我收藏+]

一、会话
?? 同一个浏览器进程多次访问服务器,就是一个会话,一个会话包含多个请求。
二、会话跟踪
?? 将现在页面的数据共享到下面的页面。
三、会话跟踪的四种方式:
?1、url
?? 在跳转的url地址后面加?XX=XXX,多个用&连接

?? 数据的保存
?<%
?Sring name = request.getParameter("userName");
?Sring pwd = request.getParameter("userPwd");
?%>
?<form action="suc.jsp?name=<%=name%>&pwd=<%=pwd%>" method="post">
??标题:<input type="text" name="title" />
??内容:<textarea name="content"></textarea>
??
??<input type="submit" value="发表">
?</form>
? suc.jsp中获取数据
??????? Sring name = request.getParameter("userName");
?Sring pwd = request.getParameter("userPwd");

2、表单隐藏域
??? 数据保存
??? <form action="suc.jsp" method="post">
??标题:<input type="text" name="title" />
??内容:<textarea name="content"></textarea>
??<input type="hidden" name="userName" value="<%=request.getParameter????("userName") %>">
??<input type="submit" value="发表">
?</form>
?suc.jsp中获取数据
??????? Sring name = request.getParameter("userName");
?Sring pwd = request.getParameter("userPwd");
3、cookie方式
??? 服务器上,响应cookie给浏览器

?<% String name = request.getParameter("userName");
??? String pwd = request.getParameter("userPwd");
??? Cookie cookie = new Cookie("user",name+","+pwd);
??? cookie.setMaxAge(1000);
??? response.addCookie(cookie);
??
?%>

??? 浏览器访问服务器的时候会将所有cookie发送给服务器
??? 在服务器端变量cookie,找到需要的cookie得到账号和密码来自动登录
?<%
?//遍历cookie,不同的网站的cookie的名字是不一样的
?Cookie[] cs=request.getCookies();
?String name ="";
?String pwd="";
?if(cs!=null){
??for(int i=0;i<cs.length;i++){
???if(cs[i].getName().equals("user")){
????String[] str = cs[i].getValue().split(",");
????name=str[0];
????pwd=str[1];
????
???}
??}
??
?}
?
?%>

?<form action="cookie.jsp" method="post">
??账号:<input type="text" name="userName" value="<%=name %>" /><br />
??密码:<input type="password" name="userPwd" value="<%=pwd %>" /><br />
??<input type="submit" value="登陆" />
?</form>

4、session
?? 浏览器访问服务器的时候,请求对象中会包含一个信息,sessionID(通过浏览器的cookie得到),服务器拿到id,如果id为空,或者服务器根据id找不到对应的会话对象,会新生成一个会话对象和id,会话对象保存在服务器,id发送给浏览器,保存在浏览器的临时cookie中,下次浏览器再次发送请求的时候,请求对象中的会话id就是刚才服务器发过来的,服务器就可以找到对应的会话对象,如果将数据保存在会话对象中,只要请求对象中的id不变,就可以访问相同会话对象的数据。
? 在session中保存数据
?? <%
?//得到数据,保存在session中,重新定向,由于浏览器中的cookie不变,所以服务器还是会找到同一个session对象
?String name = request.getParameter("userName");
?session.setAttribute("userName", name);
?
?response.sendRedirect("sucsession.jsp");
?%>

重定向:浏览器再次访问服务器,请求对象中的会话id就是刚才的id得到的session就是刚才的会话对象
?sucsession.jsp中得到数据
???? <% String name=(String) session.getAttribute("userName"); %>
?<%=name %>登陆成功
???

总结:url、隐藏表单域、cookie都是存放在请求对象中,发给服务器,服务器再通过请求对象得到,但是session对象是保存在服务器的,通过请求对象中包含的sessionID来匹配对应的对象

?

?


?

四种会话跟踪技术

原文:http://376798041.iteye.com/blog/2159302

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!