关于session和Cookie的学习总结

原创 2013年12月05日 15:58:57

前天开始看Java Web中的JSP内置对象一部分,在看完书以及视频后,对Cookie,session,response等的理解感觉特别不透彻,一直搞不清楚都是保存在哪里的。今天下午做了几个小实验,基本算是搞清楚了,写出来分享给大家,有经验的看看我说的对不对。

四个内置对象:page,request,session和application都是保存在服务器上的,为什么是四个而不是五个,response对象是服务器对客户端进行回应的,他不用来保存客户端请求的信息所以不在其中,在用户输入网址对服务器提交请求后,WEB容器也就是tomcat服务器创建了这些对象供使用,除了application以外的内置对象都是关闭浏览器窗口后都会自动消失的,但他们的作用范围或者消失时间是不一样的,session范围大一些,只要用户登录后不注销,不关闭窗口都会一直存在,而request则是服务器端跳转会保存,客户端跳转不保存,page是只要跳转就消失。

我做了这样一个小程序用来验证用户名密码,在登录页输入用户名密码和Cookie保存时间,将这些信息通过action传递给检查页,连接数据库检查正确后将使用session.setAttribute("name",rs.getString(1)) 和session.setAttribute("id",mid);这两个语句保存将信息保存在session中,同时创建Cookie对象:Cookie c1 = new Cookie("mid",mid);Cookie c2 = new Cookie("password",password);并设置Cookie的时间范围,进而跳转到欢迎页面,欢迎页面检查是否存在session的属性,如果存在则表明已经登录过,继续执行,否则跳转回登录页。

接下来要说保存的Cookie到底如何使用,我们创建了另外一个Cookie_operate.jsp文件,里面设置着使用过程,并将这个页面加入欢迎页,即在欢迎页的最开头假如jsp:include语句:<jsp:include page="Cookie_operate.jsp"/>,这样做的话如果已经保存了cookie,既是是关闭或注销页面后直接访问欢迎页也是可以访问的,因为Cookie保存在客户端,没有消失。在operation文件中,我们先检查session的id属性是否为空,如果为空则表示用户没有登录,进行下面的判断,判断将拿出保存在浏览器的Cookie信息,并提交到数据库去查询,如果有匹配的,则在此时设置session的id属性和name属性,文件执行完毕会继续往下执行。源代码如下:

login.jsp

<% request.setCharacterEncoding("GBK") ;%>

登陆程序


用户  ID:
密    码:
保存密码:
验证码:

check.jsp

<% // 乱码解决request.setCharacterEncoding("GBK") ;%>

登陆程序


<%String rand = (String) session.getAttribute("rand") ;// 从session中取出验证码String code = request.getParameter("code") ;if(!rand.equalsIgnoreCase(code)){request.setAttribute("info","请输入正确的验证码!") ;%><%}%><%!public static final String DBDRIVER = "com.mysql.jdbc.Driver" ;public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;public static final String DBUSER = "root" ;public static final String DBPASSWORD = "root" ;%><%Connection conn = null ;PreparedStatement pstmt = null ;ResultSet rs = null ;%><%String mid = request.getParameter("mid") ;String password = request.getParameter("password") ;String sql = "SELECT name FROM member WHERE mid=? AND password=?" ;%><%boolean flag = false ;Class.forName(DBDRIVER) ;conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;pstmt = conn.prepareStatement(sql) ;pstmt.setString(1,mid) ;pstmt.setString(2,password) ;rs = pstmt.executeQuery() ;// 进行查询if(rs.next()){// 现在可以查找到内容session.setAttribute("name",rs.getString(1)) ;//保存用户名session.setAttribute("id",mid);//保存用户IDCookie c1 = new Cookie("mid",mid);Cookie c2 = new Cookie("password",password);int savetime = Integer.parseInt(request.getParameter("savetime")) ;c1.setMaxAge(savetime);c2.setMaxAge(savetime);response.addCookie(c1);response.addCookie(c2);flag = true ;}conn.close() ;// 关闭数据库连接%><%if(flag){ // 现在已经登陆成功%><%} else {request.setAttribute("info","错误的用户名或密码!") ;%><% }%>

welcome.jsp

登陆程序


<%if(session.getAttribute("name") != null){%>

欢迎<%=session.getAttribute("name")%>光临!

登陆注销

<% } else {request.setAttribute("info","请先登陆!") ;%><%}%>

cookie_operate.jsp

<% // 乱码解决request.setCharacterEncoding("GBK") ;%><%if(session.getAttribute("id") == null) {// 用户现在还没有登陆过%><%!public static final String DBDRIVER = "com.mysql.jdbc.Driver" ;public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;public static final String DBUSER = "root" ;public static final String DBPASSWORD = "root" ;%><%Connection conn = null ;PreparedStatement pstmt = null ;ResultSet rs = null ;%><%String mid = null ;String password = null ;Cookie c[] = request.getCookies() ;if(c != null) {for(int x=0; x<%boolean flag = false ;Class.forName(DBDRIVER) ;conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;pstmt = conn.prepareStatement(sql) ;pstmt.setString(1,mid) ;pstmt.setString(2,password) ;rs = pstmt.executeQuery() ;// 进行查询if(rs.next()){// 现在可以查找到内容// 如果用户登陆成功了,则进行保存Cookie的操作。session.setAttribute("name",rs.getString(1)) ;//保存用户名session.setAttribute("id",mid) ;// 保存midflag = true ;}conn.close() ;// 关闭数据库连接%><%}}%>
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

asp.net学习总结——Asp.net对象之Session对象、Cookie对象

Asp.net对象之Session对象、Cookie对象

Servlet_Session和Cookie学习

  • 2013-10-17 16:02
  • 909KB
  • 下载

Java web基础总结六之—— Cookie与Session

session cookie java web 会话 HttpSession

Cookie和Session总结

会话的定义 Cookie的常用方法与应用场景 Session的常用方法与应用场景 URL重写

Cookie与Session的区别-总结很好的文章

来自:Lai18.com  链接:http://www.lai18.com/content/407204.html(点击尾部阅读原文前往) 本文分别对Cookie与Sess...

cookie/session总结

什么是会话?用户打开浏览器,访问一个网站进行一系列操作,关闭浏览器离开,完整过程 就是会话     Cookie : 一种将用户信息保存在客户端技术 ,客户端会将cookie信息自动发送给服务器 ...

Cookie与Session的区别-总结很好的文章

本文分别对Cookie与Session做一个介绍和总结,并分别对两个知识点进行对比分析,让大家对Cookie和Session有一个更深入的了解,并对自己的开发工作中灵活运用带来启示。 1. cooki...

session、cookie、Memcache总结

基于Memcache的 Session数据的多服务器共享(一) 一 相关介绍 1. memcache + memcache的多服务器数据共享 的介绍,请参见http://www.guigui8.c...

request_response_cookie-session总结

昨天跟前天讲了HttpServletRequest,HttpServletResponse,Cookie, Seesion,怎么说呢, 觉得还是cookie和session比较难些,request与r...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)