JSP用户登录注册

本文使用的数据库为 Mysql:10.1.13-MariaDB  ,编译器为 MyEclipse:2017 CI 6

 

数据库

数据库用户名:root 密码:123 

数据库名:jsp_user 表名:users

表字段: 

name varchar not null primary key
password varchar not null  
telphone varchar(11) not null primary key

 

 

数据库连接代码 ConnDB类

package edu.mju.conn;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
 * @author wang_y_p
 *
 */
public class ConnDB {
	Connection  conn=null;//创建Connection对象,用于存储数据库连接
	int i=0;//用于返回受影响的行数 (int)
	PreparedStatement pstmt=null;//SQL语句已预编译并存储在PreparedStatement对象中。 然后可以使用该对象多次有效地执行此语句。 
	ResultSet rs=null;//用于存储ResultSet类型的结果集
	static String url="jdbc:mysql://localhost:3306/jsp_user";//连接的数据库的名字:jsp_user
	static String user="root";//连接的数据库的用户名root
	static String password="123";//连接的数据库的密码123
	
	//连接数据库的方法
	public static Connection getConnection(){
		Connection  conn=null;//创建Connection对象,用于存储数据库连接
		try {
			Class.forName("com.mysql.jdbc.Driver");//注册驱动类
		}catch(ClassNotFoundException e){//没有找到驱动类时
			System.out.print("无法找到驱动类");
		}
		try {
			//DriverManager:用于管理一组JDBC驱动程序的基本服务。getConnection:尝试建立与给定数据库URL的连接
			conn=DriverManager.getConnection(url, user, password);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		if(conn==null){
			System.out.print("数据库连接失败");
		}
		return conn;
	}
	//登陆查询
	public ResultSet doQuery(String sql,String name,String password){
		try{
			conn=ConnDB.getConnection();//调用数据库连接getConnection
			//conn.prepareStatement(sql):创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。 
			pstmt=conn.prepareStatement(sql);//将用户定义的sql发送到上面conn的prepareStatement方法,存储在一开始定义的PreparedStatement pstmt对象中
			pstmt.setString(1, name);//设置sql语句第一个 ? 的值
			pstmt.setString(2, password);//设置sql语句第二个 ? 的值
			rs=pstmt.executeQuery();//执行PreparedStatement的executeQuery()方法 ,结果是一个ResultSet结果集
		}catch (SQLException e) {
			e.printStackTrace();
		}
		return rs;//返回ResultSet类型的rs
	}
	//检测用户名
	public ResultSet doQuery(String sql,String name)
	{
		try{
			conn=ConnDB.getConnection();//调用数据库连接getConnection
			//conn.prepareStatement(sql):创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。 
			pstmt=conn.prepareStatement(sql);//将用户定义的sql发送到上面conn的prepareStatement方法,存储在一开始定义的PreparedStatement pstmt对象中
			pstmt.setString(1, name);//设置sql语句第一个 ? 的值
			rs=pstmt.executeQuery();//执行PreparedStatement的executeQuery()方法 ,结果是一个ResultSet结果集
		}catch (SQLException e) {
			e.printStackTrace();
		}
		return rs;//返回ResultSet类型的rs
	}
	//检测用户名、验证手机
	public ResultSet doVerify(String sql,String name,String telphone)
	{
		try{
			conn=ConnDB.getConnection();//调用数据库连接getConnection
			//conn.prepareStatement(sql):创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。 
			pstmt=conn.prepareStatement(sql);//将用户定义的sql发送到上面conn的prepareStatement方法,存储在一开始定义的PreparedStatement pstmt对象中
			pstmt.setString(1, name);//设置sql语句第一个 ? 的值
			pstmt.setString(2, telphone);//设置sql语句第二个 ? 的值
			rs=pstmt.executeQuery();//执行PreparedStatement的executeQuery()方法 ,结果是一个ResultSet结果集
		}catch (SQLException e) {
			e.printStackTrace();
		}
		return rs;//返回ResultSet类型的rs
	}
	//密码重置
	public int doChange(String sql,String name,String password){
		try{
			conn=ConnDB.getConnection();//调用数据库连接getConnection
			//conn.prepareStatement(sql):创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。 
			pstmt=conn.prepareStatement(sql);//将用户定义的sql发送到上面conn的prepareStatement方法,存储在一开始定义的PreparedStatement pstmt对象中
			pstmt.setString(1, password);//设置sql语句第一个 ? 的值
			pstmt.setString(2, name);//设置sql语句第二个 ? 的值
			i=pstmt.executeUpdate();//执行PreparedStatement的executeUpdate()方法,返回的是受影响的行数 (int)
		}catch (SQLException e) {
			e.printStackTrace();
		}
		return i;//返回的是受影响的行数 (int)
	}
	//注册
	public int doUpdate(String sql,String name,String password,String telphone){
		try{
			conn=ConnDB.getConnection();//调用数据库连接getConnection
			//conn.prepareStatement(sql):创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。 
			pstmt=conn.prepareStatement(sql);//将用户定义的sql发送到上面conn的prepareStatement方法,存储在一开始定义的PreparedStatement pstmt对象中
			pstmt.setString(1, name);//设置sql语句第一个 ? 的值
			pstmt.setString(2, password);//设置sql语句第二个 ? 的值
			pstmt.setString(3, telphone);//设置sql语句第三个 ? 的值
			i=pstmt.executeUpdate();//执行PreparedStatement的executeUpdate()方法,返回的是受影响的行数 (int)
		}catch (SQLException e) {
			e.printStackTrace();
		}
		return i;//返回的是受影响的行数 (int)
	}
	
	
}

这里要注意:

(1)url:jdbc:mysql://localhost:3306/xxx  xxx是你的数据库名

(2)user:root 一般mysql默认用户名root

(3)password:XXX 用户名自定义

 

用户登录界面:Login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




用户登录界面



欢迎登录



用户名
密码
 

这里要注意:

(1)

:xxx.jsp为要处理的页面

(2):xxx.jsp为要跳转的页面

登录处理页面:Login_ok.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="edu.mju.conn.ConnDB" %>
<%@page import="java.sql.*" %>




登录处理界面



<%
	request.setCharacterEncoding("UTF-8");//设置对客户端请求和数据库取值时的编码
	String name= request.getParameter("user");//获取Login页面提交的user文本框数据
	String password=request.getParameter("pwd");//获取Login页面提交的pwd文本框数据
	ConnDB c=new ConnDB();//创建ConnDB对象
	String sql="select * from users where name=? and password=?";//查询语句赋值为sql
	ResultSet rs=c.doQuery(sql, name, password);//创建结果集rs,执行ConnDB的doQuery方法,将数据库查询结果赋值给rs
	if(rs.next()){//当查询出有结果
		response.sendRedirect("index.jsp");
	}
	else{
%>
 	
<%
	response.setHeader("Refresh", "1;URL=Login.jsp");
}
%>

这里要注意:

(1)sql语句所查询的数据库表名要与数据库里面的一致

 

用户注册界面Register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




欢迎注册




欢迎注册



*用户名
*请设置密码
*请确认密码
*验证手机

 

用户注册处理界面:Register_ok.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="edu.mju.conn.ConnDB" %>
<%@page import="java.sql.*" %>




注册处理


<%
	
	request.setCharacterEncoding("UTF-8");//设置对客户端请求和数据库取值时的编码
	String name= request.getParameter("user");//获取Register页面提交的user文本框数据
	String password=request.getParameter("pwd1");//获取Register页面提交的pwd1文本框数据
	String telphone=request.getParameter("telphone");//获取Register页面提交的telphone文本框数据
	ConnDB c=new ConnDB();//创建ConnDB对象
	String sql="insert into users values(?,?,?)";
	int i=c.doUpdate(sql, name, password, telphone);//执行ConnDB.doUpdate()方法,返回Int类型
	if(i!=0){//判断i是否为0;不为0时有更新
	%>
				
	<%
			response.setHeader("Refresh","1;URL=Login.jsp");
	}else{
	%>
			
	<% 
		response.setHeader("Refresh", "1;URL=Register.jsp");
	}
%>

 

 

找回密码界面Find.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




忘记密码




找回密码



*用户名
*验证手机
*请设置密码
*请确认密码
 

 

 

找回密码处理页面Find_ok.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="edu.mju.conn.ConnDB" %>
<%@page import="java.sql.*" %>




执行更改


<%
	request.setCharacterEncoding("UTF-8");//设置对客户端请求和数据库取值时的编码
	boolean g=false;
	String name= request.getParameter("user");//获取Find页面提交的user文本框数据
	String password=request.getParameter("pwd1");//获取Find页面提交的pwd1文本框数据
	String telphone=request.getParameter("telphone");//获取Find页面提交的telphone文本框数据
	ConnDB c=new ConnDB();//创建ConnDB对象
	String sql="select * from users where name=? and telphone=?";
	ResultSet rs=c.doVerify(sql, name, telphone);//执行ConnDB.doVerify()方法,返回结果集rs
	if(rs.next()){//当用户名和密码正确时
		String sql2="update users set password=? where name=?";
		int i=c.doChange(sql2, name, password);//执行ConnDB.doChange()方法,返回int类型
		if(i!=0){
	%>
				
	<%
			response.setHeader("Refresh", "1;URL=Login.jsp");
		}
	}else{
		%>
			
		<%
		response.setHeader("Refresh", "1;URL=Find.jsp");
	}
	
%>

 

登录首页 index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>



  
    
    欢迎您

  
  
  
欢迎登陆!

 

源码://download.csdn.net/download/qq_36986510/12035693

你可能感兴趣的:(JAVA代码,JSP,MySQL,用户登录注册,简易)