全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

利用JSP session对象保持住登录状态

http协议本身是一种无状态的协议,也就是客户端连续发送的多个请求之间没有联系,下一次请求不关心上一次请求的状态。

而实际运用中却希望服务器能记住客户端请求的状态,比如在网上购物系统中,服务器端应该能够识别并跟踪每个登录到系统中的用户挑选并购买商品的整个流程 。为此,web服务器必须采用一种机制来唯一地标识一个用户,同时记录该用户的状态,这就要用到会话跟踪技术。

Java Web使用Session来跟踪会话和管理会话内的状态。

Session对象是一个jsp内置对象,它在第一个jsp页面被装载时自动创建,完成会话期管理。

从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。

当发生以下四种情形其中之一时,session对象中的数据便会清空 :
用户关闭目前正在使用的浏览器程序。
关闭网页服务器。
用户未向服务器提出请求超过预设的时间,Tomcat服务器预设为30分钟。
运行程序结束session。

1.建立session变量

在JSP中不需要特别设置程序代码来建立用户session,当程序使用了session对象时,便会自动建立session,而下面这行语句便是在session中新增变量数据的方式:
session.setAttribute(“变量名称”,变量内容)
变量内容可为字符串或者其他对象类型,接着让我们来看看如何使用这个方法在session中设置变量数据:

<% 
session.setAttribute(“id”,”编号”); //设置字符串 
session.setAttribute(“expire”,new Date(86400*10)); //设置日期 
session.setAttribute(“level”,new Integer(3)); //设置整数 
%> 

2.返回session中的变量

在session中设置了变量数据后,在其他的各个网页中便可使用getAttribute读取其中的内容,此方法所返回的数据类型为对象(Object)类型,语法如下:
session.getAttribute(“变量名称”)

3.返回所有session中的变量名称

getAttributeNames()方法可以取出session中所有变量的名称,其结果为一个枚举类的实例。语法为:
session.getAttributeNames()

4.清除session中的变量
removeAttribute()方法可以清除session中的变量数据,使用语法如下:
session.removeAttribute(“变量名称”)

5.结束session

对于已经建立的session,可使用invalidate()方法将其结束,使用语法为:
session.invalidate()

其他的一些可能会用到的方法:

现在写一个实例:通过session来记录客户的登录状态:
index.jsp登录界面:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
  <title>$Title$</title>
 </head>
 <body>
 <form action="process_login.jsp" method="post">
  用户名:<input type="text" name="username">
  密码:<input type="text" name="password">
  <input type="submit" value="submit">
  <input type="reset" value="reset">
 </form>
 <a href="page1.jsp" rel="external nofollow" rel="external nofollow" >1</a>
 <a href="page2.jsp" rel="external nofollow" rel="external nofollow" >2</a>
 <a href="page3.jsp" rel="external nofollow" rel="external nofollow" >3</a>
 </body>
</html>

process_login.jsp处理登录数据,这里知道输入密码是123都可以登录成功:

session.getAttribute()将会告诉page1.jsp文件这个用户是否登录成功了

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
  String username=request.getParameter("username");
  String password=request.getParameter("password");
  if (password.equals("123")){
    session.setAttribute("username",username);
  }
  response.sendRedirect("page1.jsp");
%>

logout.jsp登出

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
  session.invalidate();
  response.sendRedirect("index.jsp");
%>

page1.jsp, page2.jsp, page3.jsp大同小异显示不同的页面,用于验证登录状态的记录(这里仅以page1.jsp为例):

注意这里的判断逻辑是一种很有趣的写法,把jsp代码和html代码完全融合起来了,不过我觉得这样写还是比较乱,宁愿只用一个jsp代码段,里面用out.println()在html中来实现显示不同的内容

这里主要是靠判断session.username是否为空来判断是否登录过了,并且传递相关的参数信息

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>Title</title>
</head>
<body>
  这里是Page1<br>
  <%if (session.getAttribute("username")==null){%>
  用户还没有登录
  <%}else {%>
  已登录,用户名:<%= session.getAttribute("username")%>
  <%}%>
  <br>
  <a href="page1.jsp" rel="external nofollow" rel="external nofollow" >page1</a>
  <a href="page2.jsp" rel="external nofollow" rel="external nofollow" >page2</a>
  <a href="page3.jsp" rel="external nofollow" rel="external nofollow" >page3</a>
  <a href="index.jsp" rel="external nofollow" >login</a>
  <a href="logout.jsp" rel="external nofollow" >logout </a>
</body>
</html>

可以看到,登录以后,不管跳转到哪个页面,用户的登录状态都没有丢失

一旦logout登出以后,session.invalidate()方法被调用,session被销毁,就跟踪不到用户的登录信息了

同时,如果我采用另一个浏览器访问同样的页面,以“2号用户”为username登录,也会一直记录到这个用户的登录信息(不过如果是同一种浏览器的话就不行了)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# JSP  # session  # 登录  # jsp cookie+session实现简易自动登录  # JSP登录中Session的用法实例详解  # jsp如何获取Session中的值  # jsp中存取session值简单介绍  # JSP 中Session的详解及原理分析  # JSP Session超时设置的实现方法  # JSP 开发之 releaseSession的实例详解  # jsp session.setAttribute()和session.getAttribute()用  # 是一种  # 其他的  # 这就  # 便会  # 客户端  # 是一个  # 这是  # 几个  # 还没有  # 也会  # 在这个  # 我觉得  # 过了  # 第一个  # 让我们  # 多个  # 将会  # 将其  # 便可  # 要用 


相关文章: 详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  如何在宝塔面板中修改默认建站目录?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  建站之星安装后如何配置SEO及设计样式?  如何在阿里云虚拟主机上快速搭建个人网站?  如何通过.red域名打造高辨识度品牌网站?  常州企业建站如何选择最佳模板?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  ,怎么在广州志愿者网站注册?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  如何通过服务器快速搭建网站?完整步骤解析  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  如何快速生成凡客建站的专业级图册?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  建站主机与虚拟主机有何区别?如何选择最优方案?  建站主机SSH密钥生成步骤及常见问题解答?  制作门户网站的参考文献在哪,小说网站怎么建立?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  如何通过虚拟主机快速搭建个人网站?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  建站之星免费模板:自助建站系统与智能响应式一键生成  如何在橙子建站中快速调整背景颜色?  建站VPS配置与SEO优化指南:关键词排名提升策略  如何在阿里云通过域名搭建网站?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  如何在云主机快速搭建网站站点?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  C#怎么使用委托和事件 C# delegate与event编程方法  手机网站制作与建设方案,手机网站如何建设?  利用JavaScript实现拖拽改变元素大小  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  已有域名和空间,如何快速搭建网站?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  Android自定义listview布局实现上拉加载下拉刷新功能  如何快速生成专业多端适配建站电话?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  如何通过VPS建站实现广告与增值服务盈利?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  济南专业网站制作公司,济南信息工程学校怎么样?  网站制作的步骤包括,正确网址格式怎么写?  建站之星云端配置指南:模板选择与SEO优化一键生成  香港服务器租用每月最低只需15元?  建设网站制作价格,怎样建立自己的公司网站?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  网站制作需要会哪些技术,建立一个网站要花费多少?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  简历在线制作网站免费版,如何创建个人简历?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。