用户免登录功能

思路:用户免登陆的是指用户登录时,输入用户名、密码等等,再勾"记住密码"选项,’成功登录过一次系统,而用户的用户名以及密码等等都保存在cookie中,当用户再次登录时,系统会自动调用Cookie中的数据,自动给用户赋值,从而实现免登陆。下面是实现本次功能的代码:

login.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String uname="";
  String psw="";
if(request.getCookies()!=null){
//得到cookie数据
Cookie[] cs=request.getCookies();
for(Cookie c:cs){
//从cookie中获取用户名
if(c.getName().equals("uname")){
uname=c.getValue();
}
//从cookie中获取密码
if(c.getName().equals("psw")){
psw=c.getValue();
}
}
}
  %>
<form action="loginCheck.jsp" method="get">
  用户名:<input type="text" name="name" value="<%=uname %>"/><br/>
  密    码:<input type="password" name="psw" value="<%=psw %>"/><br/>
  <input type="checkbox" name="auto" value="is">是否记住密码<br/>
  <input type="submit" value="登录"/>
  </form>

</body>
</html>


loginCheck.jsp:

<%@page import="com.dao.UserDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"; pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String uname=request.getParameter("name");
String psw=request.getParameter("psw");
UserDao ud = new UserDao();
boolean a = ud.LoginCheck(uname, psw);
if(a){
out.print("登陆成功");
if(request.getParameter("auto")!=null&&request.getParameter("auto").equals("is")){
//在客户端保存用户名和密码
Cookie c =new Cookie("uname",uname);
c.setMaxAge(60*60*24);//设置cookie数据有效时长
response.addCookie(c);//向客户端写数据
out.print(c.getValue());
Cookie c1 =new Cookie("psw",psw);
c1.setMaxAge(60*60*24);//设置cookie数据有效时长
response.addCookie(c1);//向客户端写数据
}
}else{
out.print("登陆失败");
}
%>

</body>
</html>


写个DbOperation工具包:

package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DbOperation {
protected Connection conn;//连接
protected PreparedStatement psmt;//预编译
protected ResultSet rs;//结果集
private final String URL="jdbc:mysql://127.0.0.1:3306/ff";
private final String UNAME="root";
private final String PSW="root";

//连接数据库
public void getConn(){
//加载驱动
try {
Class.forName("com.mysql.jdbc.Driver");
//获得链接
conn=DriverManager.getConnection(URL,UNAME, PSW);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

//关闭连接
public void closeAll(){
try {
if(conn!=null){
conn.close();
}
if(psmt!=null){
psmt.close();
}
if(rs!=null){
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

//查询操作
public void extQuery(String sql,Object...obj){
try {
psmt =conn.prepareStatement(sql);//查询sql语句
for(int i=0;i<obj.length;i++){
psmt.setObject((i+1), obj[i]);
}
rs=psmt.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

//更新操作
public void extUpdate(String sql, Object...obj){
try {
psmt = conn.prepareStatement(sql);
for(int i=0; i<obj.length;i++){
psmt.setObject((i+1), obj[i]);
}
psmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}



UserDao:

package com.dao;


import java.sql.SQLException;


import com.bean.Auser;
import com.util.DbOperation;


public class UserDao extends DbOperation{
public boolean LoginCheck(String uname,String psw){
Auser a = new Auser();
boolean flag = true;

//获取链接
getConn();

//执行sql语句
String sql = "select * from auser where name = ? and psw = ?";

extQuery(sql, uname,psw);
try {
if (rs.next()) {
a.setName(uname);
a.setPsw(psw);
flag = true;
}else{
flag = false;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值