jsp+servlet+ajax+oracle数据库-实现简单的登陆、注册、找回密码功能(与Oralce数据库连接)

本文介绍了一个基于JavaEE的图书管理系统实现登录、注册及密码找回功能的方法。通过使用JSP页面配合Servlet进行前后端交互,实现了用户验证、注册信息检查及密码找回等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本博客已经转移到:www.itwps.com 此博客后续不会再更新,详情请关注一下www.itwps.com,谢谢。

首先在使用PL/sql在Oracle数据库中创建BOOK_USER表格和Sequences序列——注:如果没有用到nextval可以不用创建序列

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

JavaEE列表

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

下面是jsp页面

登陆-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">
<link rel="stylesheet" type="text/css" href="css/login/style.css" />
<link rel="stylesheet" type="text/css" href="css/login/body.css" />
<link rel="stylesheet" type="text/css" href="css/login/login.css" />
<script src="js/jquery-1.11.1.min.js"></script>
<title>图书馆</title>
</head>
<body>
	<div class="container">
		<section id="content">
		<form id="loginForm"  method="post" >
			<h1>用户登录</h1>
			<div>
				<input type="text" name="username" placeholder="用户名" required="" id="username" />
			</div>
			<div>
				<input type="password" name="password" placeholder="密码" required="" id="password" />
			</div>
			<div class="login_error_tips" >
				<span class="help-block u-errormessage" id="js-server-helpinfo"> </span>
			</div>
			<div>
				<!-- <input type="button" value="Log in" /> -->
				<input type="button" value="登录" class="btn btn-primary"
					id="js-btn-login" /> <a href="register.jsp">加入我们</a><a href="changepwd.jsp">忘记密码</a>
				<!-- <a href="#">Register</a> -->
			</div>
		</form>
		<div class="button">
			<a href="http://sykainuo.3vfree.com">版权所有 @ZTN</a>
		</div>
		 </section>
	</div>
	<script>
		$(function(){
			$("#js-btn-login").click(function(){
				//1.验证用户名密码是否合法
				var user = $("#username").val();
				var pwd  =$("#password").val();
				if (user.length==0 || pwd.length==0) {
					alert("用户名或密码不能为空!");
				}else{
				
				//2.将用户名和密码传递给后台
				
				$.ajax({
					type:"post",
					url:"LoginServlet",
					data:$("#loginForm").serialize(),
					dataType:"json",
					success:function(data){
						if(data == 0){
							//登录失败,用户名或密码不正确
							alert("用户名或密码不正确!");
						}else{
							//登录成功
							location.href="index.html"; //页面跳转
						}
					}
				});
				}
			});
		});
	</script>
</body>
</html>
注册-register.jsp 
 
<%@page import="com.book.util.DbOperation"%>
<%@ page language="java" import="java.util.*,java.sql.*" 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>
<link rel="stylesheet" type="text/css" href="css/register/register.css" />
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册页面</title>
</head>
<style>
body{background: url("images/register/book.jpg");background-size:cover}
</style>
<body>
<form method="psot" id="form1" name="regform">
   <h1>用户注册</h1>
<table align="center">
   <tr>
   	 <td>账&nbsp;&nbsp;&nbsp;&nbsp;户:</td>
   	 <td>
   	  <input type="text" name="username" placeholder="4-20位纯英文" required="" id="username"  />
   	  <span style="color:red;" id="msg_user"></span>
     </td>	
   	</tr>
   	<tr>
   	 <td>密&nbsp;&nbsp;&nbsp;&nbsp;码:</td>
   	 <td>
   		<input type="password" name="password" placeholder="8-16位" required=""  id="password" />
   		<span style="color:red;" id="msg_pwd"></span>
   	 </td>	
   	</tr>
   	<tr>
   	 <td>确认密码:</td>
   	 <td>
   	  <input type="password" name="repwd" placeholder="输入上面的密码" required="" id="repwd" onkeyup="validate()">
   	  <span style="color:red;" id="msg_repwd"></span>
   	 </td>
   	</tr>
   	<tr>
   	 <td>电子邮箱:</td>
   	 <td>
   	  <input type="text" name="email" placeholder="格式:登录名@主机名.域名" required="" id="email">
   	  <span style="color:red;" id="msg_email"></span>
   	 </td>
   	 </tr>			
   	 <tr>
   	  <td colspan="1"></td>		
   	  <td>
   		<input type="button"  id="b_register" value="注   册" >
   		<input type="reset"  value="重   置">
   		<a href="login.jsp">已有账号?点此直接登录</a>
   			</td>	
   		</tr>			
   	</table>  
 </form>
 <%--!JQuery开始 --%>
<script type="text/javascript">
	 <%--!验证用户名 --%>	   	
		$("#username").blur(function(){
			var user = $("#username").val();
			var yz = /^[a-zA-Z]{4,20}$/;
			if(!yz.exec(user)){
				$("#msg_user").html("用户名格式不正确!");
			}else{
				$("#msg_user").html("");
			}
		});
	<%-- !密码验证--%>
	$("#password").blur(function(){
		var pwd = $("#password").val();
		var yz  =/^\w{8,16}$/;
		if(!yz.exec(pwd)){
			$("#msg_pwd").html("密码格式不正确!");
		}else{
			$("#msg_pwd").html("");
		}
	});
	<%-- !二次密码验证--%>
	$("#repwd").blur(function(){
		var repwd = $("#repwd").val();
		var pwd   = $("#password").val();
		if(repwd!=pwd){
		//	$("#msg_repwd").html("两次密码不一致!");
		}else{
			$("#msg_repwd").html("");
		}
	});
	<%-- !电子邮箱验证--%>
	$("#email").blur(function(){
		var email = $("#email").val();
		var  yz   =/^\w+@\w+.[a-zA-Z]{2,3}$/;
		if(!yz.exec(email)){
			$("#msg_email").html("邮箱格式不正确!");
		}else{
			$("#msg_email").html("");
		}
	});
</script>
<script type="text/javascript">
	
	$(function(){
		$("#b_register").click(function(){
	//判断用户名和密码是否为空
		var user = $("#username").val();
		var pwd  = $("#password").val();
		if(user.length==0 || pwd.length==0){
			alert("用户名或密码不能为空!");
		}else{
			//将数据传给后台数据库
			$.ajax({
				type:"post",
				url:"RegisterServlet",
				data:$("#form1").serialize(),
				dataType:"json",
				success:function(data){
					if (data == 0) {
						alert("注册失败!用户名已存在!");
					}else if(data == 1){
						//注册成功
						location.href="reg-success.jsp";  //注册成功页面跳转
					} else{
						//注册失败
						alert("注册失败!");
					}
				}
			});
		}		
		});
		
	});
	//使按钮失效
	function validate(){
		var pw1=password=document.regform.password.value;
		var pw2=password=document.regform.repwd.value;
		if(pw1==pw2){
			document.getElementById("msg_repwd").innerHTML="<font color='green'>两次密码相同</font>";
			document.getElementById("b_register").disabled=false;
		}else{
			document.getElementById("msg_repwd").innerHTML="<font color='red'>密码不一致</font>";
			document.getElementById("b_register").disabled=true;	
		}
	}
</script>
</body>
</html>
	 

修改密码-changepwd.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">
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<title>忘记密码</title>
</head>
<style>
body{background: url("images/register/changepwd.jpg");background-size: cover }
</style>
<body>
	<h1 style="color:white; font-weight: bold;" align="center" >找回密码</h1>
<form  method="post" id="form2">
	<table align="center">
	
	<tr align="center">
		<td>	
			<span style="color:white; font-weight: bold;">注册用户名:</span>
			<input type="text" id="username" name="username">
			<span style="color:white; font-weight: bold;">注册电子邮箱:</span>
			<input type="text" id="email" name="email">
			<input type="button" value="查看密码" id="change-btn">
			<a href="login.jsp" style="text-decoration: none;font-weight: bold;">返回登陆</a>
		</td>	
	</tr>
	</table>			
</form>
	<script type="text/javascript">
		$(function(){
			$("#change-btn").click(function(){
					$.ajax({
						type:"post",
						url:"BackpwdServlet",
						data:$("#form2").serialize(),
						dataType:"json",
						success:function(data){
							if (data.rs == 0) {
								alert("用户名或电子邮箱不匹配!");
							}else if(data.rs == 1){
								alert("用户名:"+data.uname + "你的密码是:"+data.upwd);
							}
						},
						error:function(){
							alert("数据错误");
						}
					});	
			});
			
		});
	
	</script>
</body>
</html>

注:jsp界面里的css样式就不放了,主要是实现功能

 

下面是Servlet等代码

 

首先创建User.java
package com.book.vo;

public class User {
	private int	 id;
	private String name;
	private String pwd;
	private String email;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPwd() {
		return pwd;
	}
	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	
	
	
}
创建DbOperation.java公共类
package com.book.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.book.vo.User;

public class DbOperation {
	private final static String URL="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
	private final static String UNAME="ztn";
	private final static String PWD  ="ztn";
	protected static Connection conn = null;
	protected static PreparedStatement ps =null;
	protected static ResultSet rs =null;
	//获取链接
		public static Connection getConn(){
			
			try {
				Class.forName("oracle.jdbc.driver.OracleDriver");
				conn = DriverManager.getConnection(URL,UNAME,PWD);
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return conn;
		}
		
		//关闭资源
		public static void closeAll(){
			
			if (conn!=null) {
				try {
					conn.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if (ps!=null) {
				try {
					ps.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		//查询
		public static void extQuery(String sql,Object...obj){
			try {
				getConn();
				ps=conn.prepareStatement(sql);
				for (int i = 0; i < obj.length; i++) {
					ps.setObject(i+1, obj[i]);
				}
				rs=ps.executeQuery();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
		
		//更新操作
		public static boolean extUpdate(String sql,Object[] arr){
			Connection conn=null;
			PreparedStatement ps = null;
			try {
				conn=DbOperation.getConn();//连接数据库
				ps=conn.prepareStatement(sql); //  编译
				//设置
				if (arr!=null && arr.length!=0) {
					for (int i = 0; i < arr.length; i++) {
						ps.setObject(i+1, arr[i]);
					}
				}
			int count=ps.executeUpdate();//执行sql语句
			
			if (count>0) {
				return true;
			}else{
				return false;
			}
			
		} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return false;
			
		}
		
}
创建UserDao.java接口类
package com.book.dao;

import java.util.List;

import com.book.vo.User;


public interface UserDao {
	//用户登录方法声明
	public User login(User user);
	//用户注册方法声明
	public boolean register(User user);
	//忘记密码
	public User changepwd(String name, String email);
	//查看用户名是否在数据库中已存在
	public boolean backpwd(String name);
}
创建UserDaoImpl.java实现UserDao.java
package com.book.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.book.util.DbOperation;
import com.book.vo.User;

public class UserDaoImpl extends DbOperation implements UserDao {

	@Override
	public User login(User user) {
		// TODO Auto-generated method stub
		Connection conn=null;
		PreparedStatement ps = null;
		ResultSet rs = null;

		try {
			
			conn=DbOperation.getConn();  //获取数据库连接
			//sql语句
			String sql="select * from book_user where name=? and pwd=?";
			
			ps=conn.prepareStatement(sql);
			//设置
			ps.setString(1, user.getName());
			ps.setString(2, user.getPwd());
			//执行sql
			rs=ps.executeQuery();
			User users=null;
			if (rs.next()) {
				users = new User();
				//从数据库获取
				users.setName(rs.getString("name"));
				users.setPwd(rs.getString("pwd"));
				return user;
			}else{
				return null;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			//关闭所有资源
			DbOperation.closeAll();
		}
		return null;
	}

	@Override  //注册
	public boolean register(User user) {
		// TODO Auto-generated method stub	
		String sql="insert into book_user values(SEQ_USER.nextval,?,?,?)";
		
		List<Object> list = new ArrayList<Object>();
		list.add(user.getName());
		list.add(user.getPwd());
		list.add(user.getEmail());
		
		boolean flag = DbOperation.extUpdate(sql, list.toArray());
		if (flag) {
			return true;
		}else{
			return false;
		}
		
	}

	@Override
	//忘记密码
	public User changepwd(String name,String email) {
			// TODO Auto-generated method stub
		User users=null;
			try {
				//sql语句
				String sql="select * from book_user where name=? and email=?";
				extQuery(sql, name,email);
				//执行sql
				
				if (rs.next()) {
					users = new User();
					//从数据库获取
					users.setName(rs.getString("name"));
					users.setEmail(rs.getString("email"));
					users.setPwd(rs.getString("pwd"));
				}
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally{
				//关闭所有资源
				DbOperation.closeAll();
			}
			return users;
		}

	//查询用户名是否存在
	@Override
	public boolean backpwd(String name) {
		// TODO Auto-generated method stub
		String sql = "select * from book_user where name=?";
		extQuery(sql, name);
		boolean flag = true;
		try {
			if(rs.next()){
				flag = true;
			} else{
				flag = false;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return flag;
	}
	
}
创建LoginServlet.java-登陆
package com.book.servlet;

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

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.book.dao.UserDao;
import com.book.dao.UserDaoImpl;
import com.book.vo.User;

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//doGet(request, response);
		PrintWriter out = response.getWriter();
		User user = new User();
		//获取login.jsp提交的账号和密码
		String name = request.getParameter("username");
		String pwd =request.getParameter("password");
		//测试数据
		System.out.println(name+" "+pwd);
		//获取login.jsp提交的账号和密码设置到实体类User中
		user.setName(name);
		user.setPwd(pwd);
		//引入数据交互层
		UserDao dao = new UserDaoImpl();
		User us = dao.login(user);
		//测试返回值
		System.out.println(us);
		if (us!=null) {
			out.println(1);
			//登陆成功!
		}else{
			out.println(0);
			//登陆失败!
		}
		
	}

}
创建RegisterServlet.java-注册
 
package com.book.servlet;

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

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;

import com.book.dao.UserDao;
import com.book.dao.UserDaoImpl;
import com.book.vo.User;

@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	//	doGet(request, response);
		PrintWriter out = response.getWriter();
		User user = new User();
		//获取注册的信息
		String name = request.getParameter("username");
		String pwd  =request.getParameter("password");
		String email= request.getParameter("email");
		
		//将注册的信息设置到实体类User中
		user.setName(name);
		user.setPwd(pwd);
		user.setEmail(email);
		
		//引入数据交互层
		UserDao ud = new UserDaoImpl();
		boolean flag = ud.backpwd(name);
		if(flag){
			//用户名已存在
			out.println(0);
		}else{
			//用户名不存在,创建用户
		boolean falg=ud.register(user);
			if (falg) {
				//注册成功
				out.println(1);
			}else{
				//注册失败
				out.println(-1);
			}
		}
	}
}
创建BackpwdServlet.java-找回密码
 
package com.book.servlet;

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

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.simple.JSONObject;

import com.book.dao.UserDao;
import com.book.dao.UserDaoImpl;
import com.book.vo.User;

@WebServlet("/BackpwdServlet")
public class BackpwdServlet extends HttpServlet {
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.doPost(request, response);
		
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//doGet(request, response);
		PrintWriter out =response.getWriter();
		//获取找回页面输入的信息
		String name = request.getParameter("username");
		String email= request.getParameter("email");
		//引入交互
		UserDao dao = new UserDaoImpl();
		User us =dao.changepwd(name,email);
		JSONObject msg = new JSONObject();
		msg.put("uname", name);
		msg.put("upwd",us.getPwd());
		
		if (us!=null) {
			msg.put("rs", 1);
			out.println(msg);
			//相匹配
		}else{
			msg.put("rs",0);
			out.println(msg);
		}
	}

}
注:lib文件夹里别忘了架包
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值