用JSP会话对象维护登录状态
Http协议本身是无状态协议,即客户端连续发送的多个请求之间没有连接,下一个请求不关心上一个请求的状态。
然而,在实践中,希望服务器能够记住客户端的请求状态。例如,在网上购物系统中,服务器应该能够为登录系统的每个用户识别和跟踪选择和购买商品的整个过程。因此,web服务器必须采用一种机制来唯一地识别用户并记录用户的状态,这就需要会话跟踪技术。
Java Web使用会话来跟踪会话和管理会话中的状态。
Session对象是jsp内置对象,在加载第一个jsp页面完成会话管理时自动创建。
从客户端打开浏览器并连接到服务器的时间到客户端关闭浏览器并离开服务器的时间,称为会话。当客户端访问服务器时,可能会重复连接服务器的几个页面,并重复刷新一个页面。服务器应该知道它在某种程度上是同一个客户端,这需要会话对象。
当出现以下四种情况之一时,会话对象中的数据将被清空:用户关闭当前正在使用的浏览器程序。关闭网络服务器。用户对服务器的请求没有超过预设时间,Tomcat服务器预设了30分钟。运行程序以结束会话。
1.建立会话变量
不需要在JSP中设置特殊的程序代码来建立用户会话。当程序使用session对象时,会自动建立session,下面一行是session中添加变量数据的方式:session.setAttribute(“变量名”,变量内容)变量内容可以是字符串,也可以是其他对象类型,那么我们来看看如何通过这个方法设置session中的变量数据:
% session.setattribute ("id "," number ");//设置string session . setattribute(" expire ",new date(86400 * 10));//设置date session . setattribute(" level ",新整数(3));//设置整数% 2。返回会话中的变量
在会话中设置变量数据后,可以使用getAttribute读取其他网页中的内容。这个方法返回的数据类型是Object类型,语法如下
3.返回所有会话中的变量名
GetAttributeNames()方法可以取出会话中所有变量的名称,结果就是一个枚举类的实例。语法是:session.getAttributeNames()
4.清除会话中的变量removeAttribute()方法可以清除会话中的变量数据,用法语法如下:session.removeAttribute(“变量名”)
5.结束会话
可以使用invalid()方法结束已建立的会话,使用语法为:session.invalid()
可以使用的其他方法:
现在写一个例子:通过会话记录客户的登录状态:index.jsp登录界面:
“%@”页面内容类型=' text/html;charset=UTF-8 ' language=' Java ' % html Head Title $ Title $/Head body form action=' process _ log in . JSP ' method=' post '用户名:输入类型='text' name='username '密码:输入类型=' text' name=' password '输入类型=' submit' value='submit '输入类型=' reset ' value=' reset '/form A href=' page 1 . JSP ' rel=' external nofollow ' rel=' external nofollow ' 1/A href=' page 2
Session.getAttribute()将告诉page1.jsp文件该用户是否已成功登录。
“%@”页面内容类型=' text/html;charset=UTF-8”语言=“Java”% % String username=request . getparameter(' username ');string password=request . GetParameter(' password ');if(password . equals(' 123 '){ session . setattribute(' username ',username);} response . send redirect(' page 1 . JSP ');%logout.jsp注销
“%@”页面内容类型=' text/html;charset=UTF-8“language=”Java“% % session . invalidate();response . send redirect(' index . JSP ');pages、pages、pages类似,显示验证登录状态记录的页面不同(这里仅以pages为例):
请注意,这里的判断逻辑是一种非常有趣的编写方式,它完全集成了jsp代码和html代码,但是我认为这种方式编写起来相当凌乱。我宁愿只使用一个jsp代码段,它使用out.println()在html中显示不同的内容。
这里主要通过判断session.username是否为空来判断是否已经登录,并传递相关参数信息
“%@”页面内容类型=' text/html;charset=utf-8 ' language=' Java ' % html head title title/title/head body这里是page 1 br % if(session . getattribute(' username ')==null){ % user尚未登录%}else {%已经登录。用户名:%=session . getattribute(' username ')% } % br A href=' page 1 . JSP ' rel=' external nofollow ' rel=' external nofollow ' page 1/A href=' page 2 . JSP ' rel=' external nofollow ' rel=' external nofollow ' page 2/A href=' page 3 . JSP ' rel=' external nofollow ' page 3/A href=' index . JSP ' rel=' external nofollow ' log/A href
注销后,会话。调用了无效的()方法,会话被破坏,因此无法跟踪用户的登录信息
同时,如果我使用另一个浏览器访问同一个页面,并以“2号用户”作为用户名登录,我将始终记录该用户的登录信息(但如果是同一个浏览器,则不会)
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。
版权声明:用JSP会话对象维护登录状态是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

















