import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/*
 * 利用Cookie实现一周内不重复登录
 */
/**
 * Servlet implementation class CookieLoginServlet
 */
@WebServlet("/CookieLoginServlet.do")
public class CookieLoginServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CookieLoginServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

/**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

/**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        
        //获取Cookie
        
        Cookie[] allCookies = request.getCookies();
        
        if (allCookies!=null) {
            String userName = null;
            String password= null;
            //获取Cookie中保存的用户名和密码
            for (int i = 0; i < allCookies.length; i++) {
                if (allCookies[i].getName().equals("userName")) {
                    userName = allCookies[i].getValue();
                }
                if (allCookies[i].getName().equals("password")) {
                    password = allCookies[i].getValue();
                }
            }
            if (userName!=null&&password!=null) {
                PrintWriter out = response.getWriter();
                
                out.println("<html>");
                out.println("<head>");
                out.println("<meta charset=\"UTF-8\">");
                out.println("<TITLE>登录成功</TITLE>");
                out.println("</head>");
                out.println("<body>");
                out.println("<H1>用户登陆成功</H1>");
                out.println("<H1>用户登录名:"+userName+"</H1>");
                out.println("</body>");
                out.println("</html>");
                out.close();
            }
            return;
        }
        
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");
        
        if (userName==null||password==null) {
            PrintWriter out = response.getWriter();
            
            out.println("<html>");
            out.println("<head>");
            out.println("<meta charset=\"UTF-8\">");
            out.println("<TITLE>登录成功</TITLE>");
            out.println("</head>");
            out.println("<body>");
            out.println("<H1>用户登陆成功</H1>");
            out.println("<form action='CookieLoginServlet.do' method='post'>");
            out.println("用户名:<input type=text name=userName><br><br>");
            out.println("密码:<input type=password name=password><br><br>");
            out.println("<input type=checkbox name=keep value = 2>保存登录信息<br><br>");
            out.println("<input type=submit value=登录><br><br>");
            out.println("</body>");
            out.println("</html>");
            out.close();
        }else {
            //判断复选框是否被选中
            
            String keep = request.getParameter("keep");
            
            if (keep!=null) {
                //实例化Cookie对象
                Cookie userNameCookie = new Cookie("userName", userName);
                Cookie passwordCookie = new Cookie("password", password);
                //设置cookie一周后失效
                userNameCookie.setMaxAge(7*24*3600);
                passwordCookie.setMaxAge(7*24*3600);
                //将cookie信息返回给客户端浏览器
                response.addCookie(userNameCookie);
                response.addCookie(passwordCookie);
            }
            response.sendRedirect("success.html");
        }
    
        
    }

}

//success.html页面信息

<html>
    <head>
    <meta charset="utf-8">    
    <TITLE>登录成功</TITLE>
    </head>
        <body>
    <H1>登录成功</H1>
        
        
        </body>

</html>

Servlet 利用Cookie实现一周内不重复登录的更多相关文章

  1. Servlet课程0426(十一)Servlet Cookie实现两周内不用重复登录

    Welcome.java //登录界面 package com.tsinghua; import javax.servlet.http.*; import java.io.*; import java ...

  2. 利用Cookie保存用户身份信息实现免登录

    <%@page import="sun.misc.BASE64Encoder"%> <%@page import="java.util.Base64.E ...

  3. JavaWeb 08_JSP+Dao+Bean+Servlet 实现登录注册(连接数据库,验证码登录,两周内免登陆等功能)

    一.数据库db_01   表usert   字段username,password 二. 目录 三. 配置信息 四. 代码 index.jsp <script type="text/j ...

  4. JavaWeb之Servlet:Cookie 和 Session

    会话 现实生活中我们会用手机跟对方对话,拿起手机,拨号,然后对面接听,跟着互相通话,最后会话结束. 这个过程也可以用我们的B/S模式来描述: 打开浏览器—>输入地址->发出请求->服 ...

  5. servlet(5) - Cookie和session - 小易Java笔记

    1.会话概述 (1)会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. (2)会话过程中的数据不宜保存在request和servle ...

  6. Java Web Application使Session永不失效(利用cookie隐藏登录)

    在做 Web Application 时,因为 Web Project 有 session 自动失效的问题,所以如何让用户登录一次系统就能长时间运行三个月,就是个问题. 后来,看到 session 失 ...

  7. 我是如何在一周内拿到4份offer的?

    前言 大概一个月没写博客了吧,这段时间事情比较多(家里有事,请了一段时间假,正好利用剩余几天时间面了几次试),也没抽出来时间写博客,还好所有的事情已经处理完了,今天闲来无事就整理一下这几次面试过程中遇 ...

  8. Java Web之Servlet及Cookie/Session

    Servlet参考文献: 1.http://www.cnblogs.com/luoxn28/p/5460073.html 2.http://www.cnblogs.com/xdp-gacl/p/376 ...

  9. Servlet/JSP-05 Cookie

    一. 问题? HTTP协议是一种无状态协议,服务器本身无法识别出哪些请求是同一个浏览器发出的,浏览器的每一次请求都是独立的.现实业务中服务器有时候需要识别来自同一个浏览器的一系列请求,例如购物车,登录 ...

随机推荐

  1. linux crontab -r 导致no crontab for root的原因及解决方案

    使用方式 : crontab file [-u user]-用指定的文件替代目前的crontab. crontab-[-u user]-用标准输入替代目前的crontab. crontab-1[use ...

  2. 【转载】MATLB绘图

    原文地址:http://www.cnblogs.com/hxsyl/archive/2012/10/10/2718380.html 作为一个功能强大的工具软件,Matlab具有很强的图形处理功能,提供 ...

  3. 理解伪元素 :before和:after

    在CSS中有一特性允许我们添加额外元素而不扰乱文档本身,就是伪元素. 下面举例说明: html: <blockquote>  blockquote只是一个块引用 </blockquo ...

  4. 关于如何获取/清除 MAXScript 侦听器内的文本

    关于如何获取/清除 MAXScript 侦听器内的文本 用来保存记录?还没想到实际用处,先记上. macroRecorder as string listener as stringclearList ...

  5. F1 分数

    F1 分数会同时考虑精确率和召回率,以便计算新的分数. 可将 F1 分数理解为精确率和召回率的加权平均值,其中 F1 分数的最佳值为 1.最差值为 0: F1 = 2 * (精确率 * 召回率) / ...

  6. 完成一段简单的Python程序,使用函数实现用来判断输入数是偶数还是奇数

    #!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,使用函数实现用来判断偶数和奇数'''def number_deal(a): if a%2==0 ...

  7. Func<T,T>应用之Elasticsearch查询语句构造器的开发

    前言 之前项目中做Elasticsearch相关开发的时候,虽然借助了第三方的组件PlainElastic.Net,但是由于当时不熟悉用法,而选择了自己拼接查询语句.例如: string queryG ...

  8. mac osx 快捷键符号以及意义 触发角:锁屏

    快捷键中常用符号⌘(command).⌥(option).⇧(shift).⇪(caps lock).⌃(control).↩(return).⌅(enter). OSX快捷键 快捷键中常用符号 ⌘( ...

  9. [solr] - 环境搭建

    这里忽略java安装和tomcat安装,这里使用的是solr-4.10.0 1.到apache下载solr,地址: http://mirrors.hust.edu.cn/apache/lucene/s ...

  10. ES6转换为ES5

    1.静态函数 1.什么是静态函数 静态函数最重要的就是不用创建一个实例变量就可以进行调用,在C++里面,无法访问this对象, 而在JS里面由于js的this对象支持,是可以访问this对象,只是th ...