在ASP.NET的学习中,我们就接触过Session,今天在这我们再次来复习一下在java中的session.Session对象用来保存一些在与每个用户会话期间需要保持的数据信息,这样就方便会话期间的一些处理程序.如可以用session变量记住用户的用户名,以后就不必在其他的网页中重复输入了.session对象的信息保存在服务器中,但ID保存在客户机的cookies中,如果客户机不支持Cookies则转为URL重写,一般在session对象时不必考虑其实现的细节问题.
当用户关闭了所有某个Web服务器上的网页时,则此服务器与客户机的session对象以及其变量会自动消失.
单说Session,可能大家觉得有点难以理解,那么就以一个很常用的demo来看看--用户登录:
1.用户登录界面sessionUserLogin.jsp
<%@page import="org.apache.catalina.connector.Request"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <script type="text/javascript"> function on_submit(){ if(form1.username.value=="") { alert("用户名不能为空,请输入用户名!"); form1.username.focus(); return false; } if(form1.userpassword.value=="") { alert("密码不能为空,请输入密码!"); form1.userpassword.focus(); return false } } </script> <%! public String codeToString(String str){ //处理中文字符串的函数 String s=str; try { byte tempB[]=s.getBytes("ISO-8859-1"); s=new String(tempB); return s; }catch(Exception e) { return s; } } %> <% String username=request.getParameter("username"); String userpassword=request.getParameter("userpassword"); if(username!=null &userpassword!=null) { //如果用户名和密码都合法,则记下用户名,一般把用户和密码存在数据库中 //用数据库中的信息与提交的用户名和密码比较以进行用户合法性检查 session.setAttribute("username", codeToString(username)); response.sendRedirect("sessionUserLogin1.jsp"); } %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>用户登录</title> </head> <body> <table aligin="center"> <form name="form1" method="post" action="sessionUserLogin.jsp" onsubmit="return on_submit()"> <tr aligin="center"> <td> 用户登录 </td> </tr> <tr aligin="center"> <td> 请输入用户名:<input type="text" name="username" size="20"> </td> </tr> <tr aligin="center"> <td> 请输入密码: <input type="password" name="userpassword" size="20"> </td> </tr> <tr aligin="center"> <td> <input type="submit" value="提交" name="B1"> <input type="reset" value="全部重写" name="B2"> </td> </tr> </form> </table> </body> </html>
在本个页面中,首先声明一个表单,用于填写用户名和密码;文件开始处是一个javascript程序,这段程序主要是用于验证用户名和密码是否为空,由浏览器执行.接下来的是字符串的中文处理函数;再下来是一段java程序.如果数据合法,表单提交后,要判断用户名和密码是否为空.检查用户名和密码则通过用一个session对象的数据对象username记住这个用户名,再将这个页面重定向至sessionUserLogin1.jsp页面.
2.登录成功跳转页面sessionUserLogin1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>用户登录成功</title> </head> <body> 用户登录成功!<br> 您的用户名是:<%=(String)session.getAttribute("username")%> </body> </html>
在这个页面中,用getAttribute()方法获得session对象的数据对象username的值并输出.
从以上的两个页面重哦,由此可以发现session对象可以在同一个会话的不同网页中共享变量.