首先要创建一个数据库的表,表内含有用户名和密码,其代码如下:

drop table if exists t_user;
create table t_user(id int(10) primary key auto_increment,username varchar(32) not null unique,password varchar(32) not null unique,realname varchar(18)
);
insert into t_user(username,password,realname) values('admin','123','管理员');
insert into t_user(username,password,realname) values('xiaoming','123','小明');
commit;
select * from t_user;

然后新建一个Web project,先进行web.xml的设置,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><welcome-file-list><welcome-file>isLogin</welcome-file></welcome-file-list><servlet><servlet-name>login</servlet-name><servlet-class>com.bjpowernode.javaweb.servlet.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>login</servlet-name><url-pattern>/login</url-pattern></servlet-mapping><servlet><servlet-name>isLogin</servlet-name><servlet-class>com.bjpowernode.javaweb.servlet.CheckLoginStatusServlet</servlet-class></servlet><servlet-mapping><servlet-name>isLogin</servlet-name><url-pattern>/isLogin</url-pattern></servlet-mapping>
</web-app>

下一步在Web-Root文件新建两个html页面文件,其中一个名为login.html,用于登陆的界面。其代码如下:

<!DOCTYPE html>
<html><head><title>login.html</title><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="this is my page"><meta http-equiv="content-type" content="text/html; charset=UTF-8"><!--<link rel="stylesheet" type="text/css" href="./styles.css">--></head><body><form action="/prj.servlet-19/login" method="post">用户名 <input type="text" name="username"><br>密码   <input type="password" name="password"><br><input type="checkbox" name="tenDayAutoLoginFlag" value="ok">十天内免登陆<br><input type="submit" value="登陆"></form></body>
</html>

另外一个html文件用于用户登陆错误的界面。名为login_error.html,其代码如下所示:

<!DOCTYPE html>
<html><head><title>登陆失败</title><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="this is my page"><meta http-equiv="content-type" content="text/html; charset=UTF-8"><!--<link rel="stylesheet" type="text/css" href="./styles.css">--></head><body>登录失败,用户名不存在或者密码错误。请<a href="/prj.servlet-19/login.html">重新登陆</a></body>
</html>

在src下新建一个名为:com.bjpowernode.javaweb.servlet的包,包内新建一个名为:LoginServlet.java的类来继承HttpServlet接口。这个类用来处理用户登陆,其代码如下:

package com.bjpowernode.javaweb.servlet;import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.sun.corba.se.spi.ior.ObjectKey;
import com.sun.jndi.url.corbaname.corbanameURLContextFactory;public class LoginServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//获取用户名和密码request.setCharacterEncoding("UTF-8");String username=request.getParameter("username");String password=request.getParameter("password");//JDBC连接数据库验证用户名和密码Connection conn=null;PreparedStatement ps=null;ResultSet rs=null;boolean flag=false;String realname=null;try {Class.forName("com.mysql.jdbc.Driver");conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","123");String sql="select id,username,password,realname from t_user where username=? and password=?";ps=conn.prepareStatement(sql);ps.setString(1,username);ps.setString(2,password);rs=ps.executeQuery();if(rs.next()){flag=true;realname=rs.getString("realname");}} catch (Exception e) {e.printStackTrace();}finally{if(rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(ps!=null){try {ps.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(conn!=null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}if(flag==true){//登陆成功之后,获取用户是否选择了十天内免登陆String tenDayAutoLoginFlag=request.getParameter("tenDayAutoLoginFlag");if("ok".equals(tenDayAutoLoginFlag)){//创建Cookie对象Cookie cookie1=new Cookie("username",username);Cookie cookie2=new Cookie("password",password);//设置有效时间cookie1.setMaxAge(60*60*24*10);cookie2.setMaxAge(60*60*24*10);//设置关联路径cookie1.setPath(request.getContextPath());cookie2.setPath(request.getContextPath());//发送Cookie给浏览器response.addCookie(cookie1);response.addCookie(cookie2);}//登陆成功,跳转到成功界面response.setContentType("text/html;charset=UTF-8");PrintWriter out=response.getWriter();out.print("<html>                    ");out.print("<head>                    ");out.print(" <title>欢迎界面</title>      ");out.print("</head>                   ");out.print("<body>                    ");out.print("  欢迎访问                    ");out.print(realname);out.print("</body>                   ");out.print("</html>                   ");}else{//登陆失败,跳转到失败界面}}}
再在这个包中建立一个类,用来处理用户的免登陆信息。该类名为:CheckLoginStatusServlet.java。代码如下所示:
package com.bjpowernode.javaweb.servlet;import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;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 CheckLoginStatusServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//从request中获取所有CookieCookie []cookies =request.getCookies();String username=null;String password=null;if(cookies!=null){//遍历Cookiefor(Cookie cookie:cookies){String cookieName=cookie.getName();String cookieValue=cookie.getValue();if("username".equals(cookieName)){username=cookieValue;}else if("password".equals(cookieName)){password=cookieValue;}}}if(username!=null&&password!=null){//连接数据库JDBC验证用户名和密码Connection conn=null;PreparedStatement ps=null;ResultSet rs=null;boolean flag=false;String realname=null;try {Class.forName("com.mysql.jdbc.Driver");conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","123");String sql="select id,username,password,realname from t_user where username=? and password=?";ps=conn.prepareStatement(sql);ps.setString(1,username);ps.setString(2,password);rs=ps.executeQuery();if(rs.next()){flag=true;realname=rs.getString("realname");}} catch (Exception e) {e.printStackTrace();}finally{if(rs!=null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if(ps!=null){try {ps.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(conn!=null){try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}//登录成功跳转到成功界面if(flag==true){//登陆成功之后,获取用户是否选择了十天内免登陆//登陆成功,跳转到成功界面response.setContentType("text/html;charset=UTF-8");PrintWriter out=response.getWriter();out.print("<html>                    ");out.print("<head>                    ");out.print(" <title>欢迎界面</title>      ");out.print("</head>                   ");out.print("<body>                    ");out.print("  欢迎访问                    ");out.print(realname);out.print("</body>                   ");out.print("</html>                   ");}else{//登陆失败,跳转到失败界面response.sendRedirect(request.getContextPath()+"/login_error.html");}}else {//跳转到登陆界面response.sendRedirect(request.getContextPath()+"/login.html");}}}

最后将MySQL的驱动导入到该项目中,进行测试,运行效果图如下所示:

Cookie的应用---十天免登陆设计相关推荐

  1. 用cookie设置7天免登陆

    今天做项目碰到了这个问题,所以将其书写下来. 首先,要实现免登陆需要将用户名与密码保存在cookie中,然后将其保存在httpservletresponse中. 所以具体的代码如下: Cookie u ...

  2. JavaWeb _ 07 session、Cookie和七天免登陆

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.会话管理 二.cookie 三.session 四.cookie与session的区别 五.七天免登陆 一.会话管理 概 ...

  3. iOS程序员眼中的客户端免登陆(数据迁移已更新)

    2017.01.15 一.前言,为什么要做免登陆 2017年1月9日,蓄势已久的小程序正式上线,着实,张小龙 用完即走 的理念发挥的淋漓尽致,无需下载,扫码可用,用完即走 2017年互联网人口红利结束 ...

  4. security 底层原理_spring security 实现remeber me(免登陆功能)的原理

    spring security 实现免登陆功能大体也是基于COOKIE来实现的. 主要配置信息: authentication-success-handler-ref="authentica ...

  5. php采集喜马拉雅,喜马拉雅数据 JSSDK API 接入 demo WEB版 标准登录 、免登陆

    1.引入jssdk config, XMLY, XMplayer  喜马拉雅sdk封装好的 2.初始化(授权登录.免登陆) config({ app_key: '2e*****1', // 必传,官方 ...

  6. 评论回复功能 asp.net_升级了!最新手机版本 PS 7.2 免登陆 解锁全部高级功能

    手机 PS 升级了!免登陆 解锁全部高级功能 最新安卓手机版 Photoshop Express 7.2 ADOBE公司为了方便手机摄影后期照片处理,特意开发了手机版本的PS,就是 Photoshop ...

  7. Javaweb | cookie实现两周内免登录

    目录 1. 问题 2.解决思路 3. 解决步骤 3.1 编写登录页面(lg.jsp) 3.2 编写一个登录成功页面(success.jsp) 3.3 编写登录失败页面(fail.html) 3.4 写 ...

  8. FiddlerScript 注入cooke实现自动登录,Fiddler实现免登陆,浏览器通代理实现自动登录

    一,问题描述 最近看到一个用易语言写的软件,点击运行,会自动将电脑的代理修改为:http=127.0.0.1:xxx;https=127.0.0.1:xxx ,使用chrome浏览器或火狐浏览器配置这 ...

  9. php采集喜马拉雅,接入喜马拉雅数据 JSSDK API demo WEB版 标准登录 、免登陆

    1.引入jssdk config, XMLY, XMplayer 喜马拉雅sdk封装好的 2.初始化(授权登录.免登陆) config({ app_key: '2e*****1', // 必传,官方提 ...

最新文章

  1. python 将数组中部分转入新数组_python – 如何将掩码从一个数组应用到另一个数组?...
  2. 数学--数论--HDU1825(积性函数性质+和函数公式+快速模幂+非互质求逆元)
  3. 矩阵计算的理论与方法_基于微带线的相位补偿方法分析
  4. Windows Embedded Webcast 2008年1月预告
  5. MySQL数据库搜题_智慧树知到_MySQL数据库设计与应用_搜题公众号
  6. AI如何变革家居软装?拍图就能搜商品,深度学习平台飞桨新玩法
  7. error RC2104: undefined keyword or key name问题
  8. 12.1 LNMP架构介绍 12.2 MySQL安装 12.3/12.4 PHP安装 12.5 Ng
  9. 计算机桌面上的照片转pdf免费,有没有免费将图片转PDF的工具?
  10. STM8S103F3P6锁死问题及解锁
  11. Exchange 日常管理六之:创建邮箱数据库
  12. 借一本可以编辑HTML,科学网—编辑不是你想做就能做:不适合做编辑的十种人 - 范运年的博文...
  13. CSS3的2D转换和3D转换,你了解了嘛?
  14. linux脚本第一行是什么,完全搞懂shell脚本第一行:#!/bin/bash的含义
  15. 史上最全“高频交易”揭秘
  16. Aop切面编程原理和Spring实现
  17. python的wxpyton库开发的聊天程序
  18. SqlServer-STUFF理解基础知识
  19. splite()方法的使用
  20. 项目管理树状组织结构思维导图怎样绘制

热门文章

  1. SHINE OPENCART 自适应 多用途主题模板 ABC-0021
  2. F# 图形数学基础。
  3. 易代账好会计zip导入提示不平衡
  4. signature=e7b038f264f5a1cf5b8e81732b377b41,不同养生功法对2型糖尿病伴失眠患者抑郁,焦虑和睡眠质量的影响...
  5. 推荐21款最佳 HTML5 网页游戏
  6. linux文件损坏怎么修复工具,在Ubuntu操作系统下修复损坏程序包的三种办法
  7. Android 快速修复功能,安卓系统修复工具(ReiBoot for Android)v2.1.0免费版
  8. PX90---Lags Backs
  9. 国科大本科生9个月设计出处理器芯片 可运行Linux系统
  10. matlab计算翼型升力系数,naca0012翼型升力系数