`
xibiancao
  • 浏览: 4534 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

实现Java Web程序的自动登录

阅读更多
来自:villa123

DOM基础及DOM操作HTML Javascript中装载XML文档的方法有很多Web程序中第一次登录后,在一定时间内(如2个小时)再次访问同一个Web程序时就无需再次登录,而是直接进入程序的主界面(仅限于本机)。实现这个功能关键就是服务端要识别客户的身份。而用Cookie是最简单的身从验证。

如果用户第一次登录,可以将用户名作为Cookie写到本地,代码如下:


Cookie cookie = new Cookie("user", user);
cookie.setMaxAge(365 * 24 * 3600);
cookie.setPath("/");
response.addCookie(cookie);

当用户再次访问程序时,服务端程序应该检测这个Cookie是否存在,代码如下:

Cookie[] cookies=request.getCookies();
for(Cookie cookie: cookies)
{
if(cookie.getName().equals(user))
{
// 如果user Cookie存在,进行处理
break;
}
}

尽管从客户端可以获得User Cookie,但这上Cookie可能存在很长时间,而且仅凭这个Cookie就自动登录并不安全,因此,可以在服务端使用一个Session来管理用户。也就是当第一次登录成功后,就创建一个Session,并将用户的某些信息保存在Session顺。代码如下:

HttpSession session =request.getSession();
session.setAttribute(user, user);
session.setMaxInactiveInterval(2 * 3600); // Session保存两小时

当再次访问程序时,确定了cookie存在后,就会继续验证User Session的存在,代码如下:

Cookie[] cookies=request.getCookies();
for(Cookie cookie: cookies)
{
if(cookie.getName().equals(user))
{
if(session.getAttribute(user) != null)
{
// 直接forward到主界面
break;
}
else
{
// forward到登录界面
}
}
}

虽然上面的代码可以很好地实现自动登录功能,但是当浏览器关闭,再次启动后,由于Servlet用于保存Session ID的JSESSIONID Cookie是临时的(也就是说不是持久Cookie,当浏览器关闭后,这个Cookie就会被删除),因此,需要将JSESSIONID进行持久化。代码如下:

HttpSession session = request.getSession();
session.setAttribute(user, user);
session.setMaxInactiveInterval(2 * 3600); // Session保存两小时
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(2 * 3600); // 客户端的JSESSIONID也保存两小时
session.setMaxInactiveInterval(interval)
cookie.setPath("/");
response.addCookie(cookie);


如果使用上面的代码,即使浏览器关闭,在两小时之内,Web程序仍然可以自动登录。

如果我们自已加一个JSESSIONID Cookie,在第一次访问Web程序时,HTTP响应头有两个JSESSIONID,但由于这两个JSESSIONID的值完全一样,因此,并没有任何影响。如果在响应头的Set-Cookie字段中有多个相同的Cookie,则按着path和name进行比较,如果这两个值相同,则认为是同一个Cookie,最后一个出现的Cookie将覆盖前面相同的Cookie,如下面的两个Cookie,最后一个将覆盖前一个:

Set-Cookie: JSESSIONID=DDB2274CAC6739E1D6747B0043D5D90E; Path=/web

Set-Cookie: JSESSIONID=mysession; Expires=Thu, 05-Jun-2008 05:02:50 GMT; Path=/web

由于下面两个Cookie的path不同,因此,它们是完全不同的两个Cookie:

Set-Cookie: JSESSIONID=DDB2274CAC6739E1D6747B0043D5D90E; Path=/web1

Set-Cookie: JSESSIONID=mysession; Expires=Thu, 05-Jun-2008 05:02:50 GMT; Path=/web2
分享到:
评论

相关推荐

    课程作业-基于Java实现web实验登录界面源码+项目说明.zip

    课程作业-基于Java实现web实验登录界面源码+项目说明.zip课程作业-基于Java实现web实验登录界面源码+项目说明.zip课程作业-基于Java实现web实验登录界面源码+项目说明.zip课程作业-基于Java实现web实验登录界面源码+...

    Selenium+java进行web自动化.doc

    《Selenium+java进行web自动化.doc》文档中介绍了Java的安装、Selenium IDE的安装、Selenium的使用、元素操作等。 Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作...

    Java Web应用程序的安全模型

    Servlet技术规范规定了两种由容器实现的Java Web应用程序的安全模型。它们分别是:声明性安全模型和程序性安全模型。  程序性安全模型是指可以在部署的时候由部署者为WEB资源配置安全限制。如:将用户放入组中...

    Java Web 办公自动化系统

    里面含有三个版本的程序分别对应mysql,sql2000,sql2005,可运行,自己得做相应的更改很简单

    JAVA-Web课程设计--注册登录系统---用SSH框架整合实现注册登录系.docx

    用SSH框架整合实现注册登录系统 注册登录系统几乎是每一个web程序必须拥有的功能,因此,在本次课程设计中将其单独提取出来,并使用SSH框架的整合来实现这个系统。虽然注册和登录系统并不复杂,但这两个子系统却...

    开发者突击:Java Web主流框架整合开发.part07.rar

     随书附赠光盘内容包括本书10种架构原型程序包、个人通讯录及办公自动化系统源程序。  本书内容循序渐进,通俗易懂,覆盖了Java Web开发的最流行技术,无论对于Java Web架构设计还是软件开发,本书都是精通开发...

    开发者突击:Java Web主流框架整合开发.part12.rar

     随书附赠光盘内容包括本书10种架构原型程序包、个人通讯录及办公自动化系统源程序。  本书内容循序渐进,通俗易懂,覆盖了Java Web开发的最流行技术,无论对于Java Web架构设计还是软件开发,本书都是精通开发...

    开发者突击·Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)源码

    《开发者突击:Java Web主流框架整合开发(J2EE+Struts+...随书附赠光盘内容包括《开发者突击:Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)》10种架构原型程序包、个人通讯录及办公自动化系统源程序。

    《Java测试与设计-从单元测试到自动Web测试》[PDF]

    书中将介绍一个快速有效的方法,教会您利用Java知识构建具有产品价值、可扩展性和高性能的Web应用程序。书中介绍的技术、方法和工具能够使软件开发人员、QA技术员和IT管理员高效地协同完成软件的开发和测试自动化。 ...

    JAVA Web程序设计-3期(KC006) 01项目案例_《办公自动化管理系统》设计文档.doc

    JAVA Web程序设计-3期(KC006) 01项目案例_《办公自动化管理系统》设计文档.doc 学习资料 复习资料 教学资源

    《开发者突击:Java web主流框架整合开发》源代码1

    Java Web主流框架整合开发(第2版) 全面地讲解了Java Web开发中的流行技术和软件架构,涵盖了目前从JSP、JavaBean、Servlet到Hibernate、Struts、Spring、Struts 2的主流开发框架,同时通过办公自动化系统实战演练...

    《开发者突击:Java web主流框架整合开发》源代码2

    Java Web主流框架整合开发(第2版) ,全面地讲解了Java Web开发中的流行技术和软件架构,涵盖了目前从JSP、JavaBean、Servlet到Hibernate、Struts、Spring、Struts 2的主流开发框架,同时通过办公自动化系统实战...

    java web开发技术大全

    《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+Spring+Ajax》通过对SSH中的各种技术循序渐进地讲解,使读者尽快掌握开发基于SSH的Web程序的方法。《Java Web开发技术大全:JSP+Servlet+Struts+Hibernate+...

    WebUi自动化

    WebUI自动化测试必须学习的第一个程序,本程序模拟的是打开网页,输入关键字,点击搜索的过程。代码中需要修改的地方有以下几个:1、Firefox浏览器如果安装不是默认位置,请修改代码第一句的第二个参数。2、根据...

    java web简单扫雷程序

    java web开发:jsp+mysql+css+js,模拟电脑桌面游戏扫雷游戏,分为三个级别,低中高,适合不同程度的玩家,并对每次游戏进行计时,自动排出名次。

    Java-Web程序设计实战-第8章-JDBC详解.pptx

    Java-Web程序设计实战-第8章-JDBC详解全文共86页,当前为第1页。 2 Java-Web程序设计实战-第8章-JDBC详解全文共86页,当前为第2页。 3 Java-Web程序设计实战-第8章-JDBC详解全文共86页,当前为第3页。 JDBC是一个...

    《Java-web程序设计》教案.doc

    《Java-web程序设计》教案 课题:第一章 Java Web概述 【教学目标】 掌握JSP运行环境的搭建,能进行简单的JSP程序编写与运行。 【教学重点】 Eclipse+Dreamweaver工具、项目的导入、导出、发布打包 【教学难点】 ...

    (java_mail_web.rar_java mail_java web_java web mail _javamail we

    后台自动发送邮件的程序(java mail,web版)

    开发者突击:Java Web主流框架整合开发.part09.rar

     随书附赠光盘内容包括本书10种架构原型程序包、个人通讯录及办公自动化系统源程序。  本书内容循序渐进,通俗易懂,覆盖了Java Web开发的最流行技术,无论对于Java Web架构设计还是软件开发,本书都是精通开发...

Global site tag (gtag.js) - Google Analytics