转自:http://www.blogjava.net/tscfengkui/archive/2011/01/21/343341.html

很感谢,让小白明白其中道理

Java cookie的使用

1.cookie是什么?

cookie是web应用当中非常常用的一种技术,用于储存某些特定的用户信息。

2.cookie的作用?

在用户登陆时将用户的信息存放在cookie中,用户在一定的时间中再次登陆时不需要输入用户名和密码直接跳转到下一个界面。

3.设置cookie

Cookie cookie = new Cookie("key", "value");

cookie.setMaxAge(saveTime*24*60*60);

生存周期默认时间为秒,如果设置为负值的话,则为浏览器进程Cookie(内存中保存),关闭浏览器就失效。

cookie.setPath("/test/test2");

设置Cookie路径,不设置的话为当前路径(对于Servlet来说为request.getContextPath() + web.xml里配置的该Servlet的url-pattern路径部分) 。

response.addCookie(cookie);

4.读取cookie

该方法可以读取当前路径以及“直接父路径”的所有Cookie对象,如果没有任何Cookie的话,则返回null。如果设置了路径使用这个方法也没有值。

Cookie[] cookies = request.getCookies();

5.删除cookie

Cookie cookie = new Cookie("key", null);

cookie.setMaxAge(0);

设置为0为立即删除该Cookie;

cookie.setPath("/test/test2");

删除指定路径上的Cookie,不设置该路径,默认为删除当前路径Cookie;

response.addCookie(cookie);

下面看一个例子,这是模拟126邮箱登陆的小功能。建立一个名为AutoLoginFilter的project,包结构如下:

project下有三个java文件、两个jsp还有个html,

CheckLogin.java代码如下:

public class CheckLogin {

     public static boolean login(String username, String password) {

            if ("admin".equals(username) && "123456".equals(password)) {

                return true;

            } else {

                return false;

            }

        }

}

IndexFilter.java代码如下:

package com.bx.course;

/**

* Filter可以实现对请求的过滤和重定向等,也就是说可以操作request和response,session等对象,listner只能监听到以上对象的属性的修改。

*/

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class IndexFilter implements Filter {

    public void destroy() {

        // TODO Auto-generated method stub

    }

    public void doFilter(ServletRequest arg0, ServletResponse arg1,

            FilterChain arg2) throws IOException, ServletException {

        System.out.println("every request pass here haha");

        HttpServletRequest request = (HttpServletRequest) arg0;

        HttpServletResponse response = (HttpServletResponse) arg1;

        Cookie[] cookies = request.getCookies();

//        Cookie cookie = new Cookie("user",null);

//        cookie.setMaxAge(0);

//        response.addCookie(cookie);

        String[] cooks = null;

        String username = null;

        String password = null;

        if (cookies != null) {

            for (Cookie coo : cookies) {

                String aa = coo.getValue();

                System.out.println("1");

                cooks = aa.split("==");

                if (cooks.length == 2) {

                    System.out.println(cooks[0]+cooks[1]);

                    username = cooks[0];

                    password = cooks[1];

                }

            }

        }

        System.out.println("cookie username | " + username);

        System.out.println("cookie password | " + password);

        if (CheckLogin.login(username, password)) {

            System.err.println("check successfully cookie data ");

            request.getSession().setAttribute("username",username);

            request.getRequestDispatcher("/main126.jsp").forward(request, response);

        }else{

            arg2.doFilter(request,response );

        }

    }

    public void init(FilterConfig arg0) throws ServletException {

        // TODO Auto-generated method stub

    }

}

LoginServlet.java代码如下:

package com.bx.course;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        this.doPost(request, response);

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

           String username=request.getParameter("username");

           String password=request.getParameter("password");

           String savetime=request.getParameter("saveTime");

           System.out.println("usrename  "+username+"  password "+password);

           if(CheckLogin.login(username, password)){

               if(null!=savetime){

                   int saveTime=Integer.parseInt(savetime);//这里接受的表单值为天来计算的

                   int seconds=saveTime*24*60*60;

                   Cookie cookie = new Cookie("user", username+"=="+password);

                   cookie.setMaxAge(seconds);

                   response.addCookie(cookie);

               }

               request.setAttribute("username",username);

               request.getRequestDispatcher("/main126.jsp").forward(request,response);

           }else{

               request.getRequestDispatcher("/failure.jsp").forward(request,response);

           }

    }

}

web.xml配置文件代码如下:

        loginFilter

        com.bx.course.IndexFilter

        loginFilter

        /login.html

        LoginServlet

        com.bx.course.LoginServlet

        LoginServlet

        /login.do

        login.html

        main126.jsp

login.html代码如下:

    126邮箱登录

           用户名:

           密    码:

        一年

        半年

        一个月

        一周

main126.jsp代码如下:

测试cookie

登录成功,欢迎${username}的到来 126邮箱

测试cookie的功能

failure.jsp代码如下:

    Login failure

运行效果:

显示如下界面:

输入用户名:admin    密码:123456 选择保存时间,然后点击登陆,就会进入以下界面:

就会直接进入登陆成功界面。如果用户名或密码不正确则会进入以下界面:

java cookie包_Java cookie的使用相关推荐

  1. java md5包_JAVA中有没有提供MD5算法的包啊?

    拉莫斯之舞 有,在java.security包的MessageDigest类.例子:import java.security.MessageDigest;public class Test2 {pub ...

  2. java.awt包_java.awt包介绍

    组件, Component类是所有AWT组件的根. 用户与组件交互操作时,一些组件会激发事件, AWTEvent类及其子类用于表达AWT组件能够激发的事件. 容器是一个可以含有组件和其他容器的组件, ...

  3. java.awt包_java.awt包 简介

    java.awt有创建用户接口.绘图和图像的所有类.用户接口对象,例如按钮或滚动条, 在AWT(Abstrat Window Toolkit)中被称为组件, Component类是所有AWT组件的根. ...

  4. java解包_Java的原始类型自动包装与解包机制

    java5之后对原始数据类型如int.char.long等基本数据类型有自动打包成相应的复合类型Integer.Character.Long等的机制:也可以将复合类型自动转换为原始类型. 这取决于程序 ...

  5. java newinstance 包_Java Class类 newInstance()方法及示例

    Class类newInstance()方法newInstance()方法在java.lang包中可用. newInstance()方法用于创建此Class对象表示的类的新实例. newInstance ...

  6. java cookie 加密_java cookie encodeBase64加密

    //用encodeBase64加解密放到cookie判断登陆 package com.ott.util; import java.io.UnsupportedEncodingException; im ...

  7. java unit包_Java接入UNIT文本对话处理源码详解

    应邀一位网友的想法,想实现调用UNIT接口,实现文字对话功能,特整理一下内容分享给大家. 此功能对于大神来说非常简单,但是对于新手理解代码处理逻辑,并且如何解析UNIT返回参数的处理,还是有一定的帮助 ...

  8. java ip包_java网络抓ip包 首部是个什么情况

    展开全部 首先要去62616964757a686964616fe59b9ee7ad9431333366306539下载jpcap并在IDE上做配置,具体操作方式参考以下链接 代码:import jav ...

  9. java spring包_java 自定义加载器,加载spring包,动态加载实现,jar包隔离,tomcat加载webapp方式...

    java 自定义加载器,加载spring包,动态加载实现,jar包隔离,tomcat加载webapp方式 发布时间:2018-08-20 12:02, 浏览次数:774 , 标签: java spri ...

最新文章

  1. 李飞飞团队最经典计算机视觉课更新!斯坦福出品,深度学习入门必备
  2. 这个主板制作的是一样的吗?
  3. websocket中发生数据丢失_为什么事实上却发生了数据丢失,只有少部 分数据可以加载进来...
  4. JS_dom查询节点
  5. 简单的java方法_Java简单实用方法一
  6. 【C++基础学习】关于C++静态数据成员
  7. JavaAgent的使用总结
  8. 嵌套点击事件只执行第一次
  9. leetcode-longestPalindrome-java
  10. 使用js获取ajax对象,JS获取dom 对象 ajax操作 读写cookie函数
  11. 新浪微博Emoji表情解析
  12. NXP Kinetis的 单片机LPUART 模块调试记录
  13. 古人为什么除了本名还要取字号?取字号根据什么规矩呢?
  14. 学习笔记10-Python图像批量处理(对比度、灰度)-内含代码可实现
  15. Flutter笔记--Sliver用法
  16. HJL-E6/A DC220V数字式【电流继电器】
  17. linux常用运维shell,常用的shell命令,持续更新 | linux运维小站–linux系统架构_服务器运维_Linux运维工程师工作手札...
  18. 转换金额为大写人民币-Java
  19. Javascript中Window.open参数详解
  20. Oracle数据库访问性能优化

热门文章

  1. 复旦邱锡鹏组最新综述:A Survey of Transformers!
  2. Python正则表达式总结
  3. android第三方launcher,目前Android平台最好的Launcher
  4. jdbc数据库配置mysql数据库_JDBC连接MySQL数据库(一)——数据库的基本连接
  5. python枚举类型_Python 的枚举类型
  6. 漫谈广告竞价模式(五)
  7. Leetcode每日一题:110.balanced-binary-tree(平衡二叉树)
  8. 集成学习—GBDT原理理解
  9. 树状数组相关应用之平面范围求和问题
  10. Redis基础(十三)——Jedis和Linux