目录

1.用Properties文件连接数据库;

2.用MD5对数据库密码进行加密;

3.记录Cookie和取Cookie操作;


上一节介绍了基本的登录功能,这一节我们来完善一下登录功能的其他特性。

1.用Properties文件连接数据库;

具体参考:Properties文件连接数据库

2.用MD5对数据库密码进行加密;

具体参考:MD5加密

加密之后,我们在数据库中将密码给成加密后的形式,而且再对密码进行取值的时候,即连接数据库查询的时候要修改一下。

我们在数据访问层Dao里面,对密码的设置进行修改。

package com.java.dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;import com.java.model.User;
import com.java.util.MD5Util;public class UserDao {public User login(Connection con,User user) throws Exception{User resultUser=null;String sql="select * from t_user where userName=? and passWord=?";PreparedStatement pstmt=con.prepareStatement(sql);pstmt.setString(1, user.getUserName());pstmt.setString(2, MD5Util.EncoderPwdByMd5(user.getPassWord()));ResultSet rs=pstmt.executeQuery();if(rs.next()){resultUser=new User();resultUser.setUserId(rs.getInt("userId"));resultUser.setUserName(rs.getString("userName"));resultUser.setPassWord(rs.getString("passWord"));}return resultUser;}
}

注意这里进行数据库查询的时候是对密码进行加密了的。 

3.记录Cookie和取Cookie操作;

我们在LoginServlet里面写一个记录用户信息的方法:

/*** 记录用户信息的方法* @param userName* @param passWord* @param response*/private void rememberMe(String userName,String passWord,HttpServletResponse response){//用Cookie类,构造方法是采用键值对的形式Cookie user=new Cookie("user",userName+"-"+passWord);//设置cookie的有效期为一周,默认是1suser.setMaxAge(1*60*60*24*7);//用response对象来操作cookieresponse.addCookie(user);}

然后要读取cookies,在login.jsp页面上写读取cookie的代码:

<%/* 读取cookie,首先这里需要判断,若是用户第一次登陆,则需要记录并读取cookie,若用户登陆错误重新返回到登录界面,这里前台会自动显示错误信息,不需要再读取了 *///前台没有传过来user,则说明用户是第一次登陆,这就需要记录并读取cookieif(request.getAttribute("user")==null){  String userName=null;String passWord=null;//从浏览器获取所有的cookiesCookie[] cookies=request.getCookies();for(int i=0;cookies!=null && i<cookies.length;i++){//如果读取到了前台传来的key(用getName()方法来获取cookie的key),也就是user,那么就遍历出来if(cookies[i].getName().equals("user")){//通过cookie的键key来获取cookie的值valueuserName=cookies[i].getValue().split("-")[0];passWord=cookies[i].getValue().split("-")[1];}}if(userName==null){userName="";}if(passWord==null){passWord="";}//EL表达式中采用pageContext范围,优先级最高pageContext.setAttribute("user", new User(userName,passWord));}
%>

最后回到登录界面,会发现已经自动记住密码了!

Diary(一)——登录功能(下)相关推荐

  1. python flask框架下登录注册界面_Python的Flask框架中实现简单的登录功能的教程

    Python 的 Flask 框架中实现简单的登录功能的教程 , 登录是各个 web 框架中的基础功能 , 需要的朋友可以参考下 回顾 在前面的系列章节中, 我们创建了一个数据库并且学着用用户和邮件来 ...

  2. php mysql用户登录_php mysql实现用户登录功能的代码示例

    接着上次的php mysql添加用户的功能代码,今天来学习下php实现用户登录与注销的功能,通过跟踪session会话来保存用户的登陆状态. 1,登录页面 login.php 用户登录_www.# 用 ...

  3. Atitit.注册跟个登录功能的实现attilax总结obo

    Atitit.注册跟个登录功能的实现attilax总结obo 1. 注册模块 2 1.1. 基本注册功能(用户名方式) 2 1.2. 动态ajax监测用户名重复 2 1.3. 注册手机验证 2 1.4 ...

  4. [转载]登录功能测试总结

    转载自自动化软件测试 微信公众号. 表示看到之后就震惊了,毕竟我之前面试时都只回答:功能+性能. 基本功能测试 输入正确的用户名和密码登录成功 输入错误的用户名密码登录失败 用户名正确,密码错误,是否 ...

  5. 一步步带你做vue后台管理框架(三)——登录功能

    系列教程<一步步带你做vue后台管理框架>第三课 github地址:vue-framework-wz 线上体验地址:立即体验 <一步步带你做vue后台管理框架>第一课:介绍框架 ...

  6. python调用qq互联_Django项目中实现使用qq第三方登录功能

    使用qq登录的前提是已经在qq互联官网创建网站应用并获取到QQ互联中网站应用的APP ID和APP KEY 1,建路由 # qq登录 path('loginQq/',qq.loginQq,name=' ...

  7. 使用vue-cli+element-ui+expsess+mysql做一个简易的登录功能

    使用vue-cli+element-ui+expsess+mysql做一个简易的登录功能 1使用webpack下载vue模板 vue init webpack aaa(aaa为项目名称) cd到aaa ...

  8. 【Vue.js】vue用户登录功能

    之前用vue实现一个网站的登录功能,这里做一个记录和总结,以下是需要实现的登录业务描述: 1.输入用户名和密码,点击登录按钮,若两者匹配,即可进入首页,首页展示登录用户的信息: 2.当用户登录后,无法 ...

  9. struts实战--登录功能实现

    struts实现登录功能 一.使用struts2提供的表单标签来改造页面. WebRoot/login/login.jsp                      <form>----- ...

最新文章

  1. 在CentOS 6.9 x86_64上安装redis 4.0.6
  2. mongodb 按配置文件mongodb.conf启动
  3. java增强型for循环(三种遍历集合方式)
  4. Spring3 RESTful Web服务
  5. linux克隆后重新封装,克隆后立即在OSX上修改Linux内核源代码
  6. Flutter UiKitView 嵌入iOS原生View
  7. python把字符串3des加密_Python干货之六大密码学编程库
  8. python 线程锁_Python多线程-线程锁
  9. Cloudflare配置网站免费CDN加速使用教程
  10. 309. 最佳买卖股票时机含冷冻期
  11. Visio绘制电路图
  12. 将已经汉化了的Protel 99 SE整回英文原版
  13. 1.42 财务测量指标——静态评价法(投资回报率+投资回收期)
  14. 从空间、时间和时空动力学角度研究大脑的动态特性
  15. Crime HDU - 4623(状压DP,不同进制转换)
  16. Creo 9.0 基准特征:基准点
  17. 分享几个微信实用小技巧(二)
  18. 六脚自锁开关 引脚定义
  19. drawLine(self, Union[QPointF, QPoint], Union[QPointF, QPoint]): argument 1 has unexpected type ‘floa
  20. 漂亮的许愿墙网站源码

热门文章

  1. 读书 | 人机共生:智能时代人类胜出的5大策略
  2. 学好程序员必知必会的数据结构,这一份书单你值得拥有!
  3. steam 安装及简易设置
  4. python cx_oracle模块详解_cx_Oracle模块详解
  5. vue框架中使用iframe内嵌网页,并且双击实现网页全屏放大
  6. 【深度学习】:《PyTorch入门到项目实战》(十二)卷积神经网络:填充(padding)和步幅(stride)
  7. 迟到的2016年计划
  8. 【2021 SUSE 國壹(伍)】Review 16th National College Student intelligent car racing competition of iFLYTEK
  9. 用安卓模拟器玩了几局第五人格,原来真的可以玩虐手机玩家.....
  10. 彻底弄懂类加载和JVM的双亲委派机制