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

java的web项目中使用cookie保存用户登陆信息

阅读更多
最近在编写论坛系统的实现,其中就涉及到用户登陆后保持会话直到浏览器关闭,同时可以使用cookie保存登陆信息以便在下次可以自动登陆。使用struts2框架实现。   下面是在action里登陆和注销的函数

Java代码
public String logout() {  
    this.getSession().clear();   
     Cookie idCookie = new Cookie("id", "");   
     Cookie passwordCookie = new Cookie("password", "");   
     idCookie.setMaxAge(0); //使cookie失效   
     passwordCookie.setMaxAge(0);   
     idCookie.setPath("/");   //这个不能少   
     passwordCookie.setPath("/");   
     servletResponse.addCookie(idCookie);   
     servletResponse.addCookie(passwordCookie);   
    return SUCCESS;   
}   
  
public String login() {   
  
     User user = userService.getUser(id, password);   
    if (user != null) {   
        this.getSession().put("user", id);   
        //如果选择保存登陆信息   
        if (saveLogin != null) {   
             Cookie idCookie = new Cookie("id", id); //可以使用md5或着自己的加密算法保存   
             Cookie passwordCookie = new Cookie("password", password);   
             idCookie.setPath("/webappName/"); //cookie路径问题,在我的其他文章里有专门的讲解   
             idCookie.setMaxAge(MAX_AGE);   
             passwordCookie.setPath("/webappName/");   
             passwordCookie.setMaxAge(MAX_AGE);   
             servletResponse.addCookie(idCookie);   
             servletResponse.addCookie(passwordCookie);   
             saveLogin = null;   
         }   
        return SUCCESS;   
     } else {   
        this.setInfo("用户名或密码错误");   
        return INFO;   
     }   
} 

在保存完cookie后要保证以后用户每次访问该系统的任意页面系统都必须先访问用户的cookie查看是否有登陆信息,这个使用servlet的filter实现最为方便。下面就是filter的代码

Java代码
private void doBeforeProcessing(ServletRequest request) {   
         HttpSession session = ((HttpServletRequest) request).getSession(true);   
        //首先检查session,若已经登陆则直接忽略一下代码   
        if (session.getAttribute("user") != null) {   
            return;   
         }   
         Cookie[] cookies = ((HttpServletRequest) request).getCookies();   
         String id = null;   
         String password = null;   
        if (cookies != null) {   
            for (Cookie c : cookies) {   
                if (c.getName().equals("id")) {   
                     id = c.getValue();   
                 }   
                if (c.getName().equals("password")) {   
                     password = c.getValue();   
                 }   
             }   
         }   
         UserService userService = (UserService) this.getApplicationContext().getBean("userService");   
        if (userService.isUser(id, password)) {   
             session = ((HttpServletRequest) request).getSession(true);   
             session.setAttribute("user", id);   
         }   
     }   
  
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)   {   
         doBeforeProcessing(request);   
         chain.doFilter(request, response);   
     }   
     其中涉及的在filter中访问spring的上下文
分享到:
评论

相关推荐

    javacookie的使用

    JAVA中COOKIE的使用 在JAVA的WEB环境中COOKIE是以一个数组的形式保存的:

    javaweb中Cookie对用户密码保存的例子

    javaweb中Cookie对用户密码保存的例子,当我们在购物网站浏览的时候,下次访问的时候就会出现我们访问过的记录,这个例子就是以Cookie为原理写的JavaWeb代码例子.

    cookie在jsp中的使用,登录页面选择时间保存cookie-----代码

    所以web.xml中使用: <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation=...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 13.2.2 [jsp:setproperty] 413 13.2.3 [jsp:getproperty] 414 13.2.4 示例 414 13.3 网上书店程序 418 13.4 小结 440 第14章 jsp开发的两种模型 441 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 13.2.2 [jsp:setproperty] 413 13.2.3 [jsp:getproperty] 414 13.2.4 示例 414 13.3 网上书店程序 418 13.4 小结 440 第14章 jsp开发的两种模型 441 ...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 全书分为两部分,需 要全部下载下载一起解压,此部分为第一部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 ...

    MLDN李兴华JAVA_WEB笔记pdf文档

    |-第1节 实例讲解—用户登陆(Cookie保存信息) |-第2节 分页实现(上)_假分页 |-第3节 分页实现(下)_真分页 |-第4节 JavaBean |-第5节 上传组件Smartupload 第23天 项目及DAO设计模式 |-第1节 实例讲解:...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 13.2.2 [jsp:setproperty] 413 13.2.3 [jsp:getproperty] 414 13.2.4 示例 414 13.3 网上书店程序 418 13.4 小结 440 第14章 jsp开发的两种模型 441 ...

    李兴华Java Web开发实战经典(高清版) Part2

    MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 全书分为两部分,需 要全部下载下载一起解压,此部分为第二部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 ...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    MLDN 李兴华 Java Web 开发实战经典.pdf (高清版) 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    13.2 在jsp中使用javabean 412 13.2.1 [jsp:usebean] 412 13.2.2 [jsp:setproperty] 413 13.2.3 [jsp:getproperty] 414 13.2.4 示例 414 13.3 网上书店程序 418 13.4 小结 440 第14章 jsp开发的两种模型 441 ...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器...

    java web 视频、电子书、源码(李兴华老师出版)

    11.2、在Tomcat中使用数据库连接池 11.3、查找数据源 11.4、本章摘要 第12章 JSP标签编程 12.1、标签编程简介 12.2、定义一个简单的标签 —— 空标签 12.3、定义有属性的标签 12.4、TagSupport类 12.5...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    目前市场业务中在产品以及其他项目的认证和检测方面存在诸多不便,用户需要实地考察并频繁与检测单位沟通,填写繁琐的纸质检测报告、当面送递样品,对于检测环节中存在的问题难以及时交互并处理。市场上相应的检测...

    jwt简单的介绍和了解

    用户登录成功,服务端会保证一个session,当然会给客户端一个sessionId,客户端会把sessionId保存在cookie中,每次请求都会携带这个sessionId。 cookie+session这种模式通常是保存在内存中,而且服务从单服务到多...

    李兴华 Java Web 开发实战经典 高清扫描版Part3

    第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器...

    JAVA面试题最全集

    1.xml在项目中的作用 2.s-EJB 与 e-EJB的区别 3.会话面的作用 4.cmp与bmp的优缺点 5.j2me程序的必需的几个部分 6.c/s与b/s的区别 7.构建一个connect pool,然后再调用它, 8.j2ee平台与dotnet平台的区别 9....

    java 面试题 总结

    子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...

Global site tag (gtag.js) - Google Analytics