Diary(一)——登录功能(下)

目录

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的有效期为一周,默认是1s
		user.setMaxAge(1*60*60*24*7);
		//用response对象来操作cookie
		response.addCookie(user);
	}

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

<%
	/* 读取cookie,首先这里需要判断,
	若是用户第一次登陆,则需要记录并读取cookie,
	若用户登陆错误重新返回到登录界面,这里前台会自动显示错误信息,不需要再读取了 */
	
	//前台没有传过来user,则说明用户是第一次登陆,这就需要记录并读取cookie
	if(request.getAttribute("user")==null){  
		String userName=null;
		String passWord=null;
		//从浏览器获取所有的cookies
		Cookie[] 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的值value
				userName=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));
	}
%>

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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值