JAVA学习笔记035——登录校验从简单到实用2(能够和数据库中的数校验)

登录校验由最简单的例子,到能够应用到实际项目,一步一步学习和实现。

总共分几个目标,这一篇实现目标2,这次要用数据库中的真数据来校验。 

目标2:输入用户名和密码,如果输入的用户名和密码在数据库内,则显示输出结果“登录成功”,如果数据表中没用该正确的用户名密码,则显示“用户名或密码有误”,其它情况提示“系统异常”。

实现(代码经过测试通过):

测试发现这次代码有个缺陷,就是不区分大小写。

一、数据表login结构:

CREATE TABLE `login` (
  `id` int(11) DEFAULT NULL,
  `uname` varchar(10) DEFAULT NULL,
  `upwd` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

二、源代码文件说明

共3个文件:

1.login2.jsp :用于输入用户名和密码

2.check2.jsp:从login2那里获取用户输入的用户名密码,调用LoginDao校验用户名和密码,并根据LoginDao的返回值输出显示对应的结果。

3.LoginDao.java:连接数据库,查询数据库中是否有输入的用户名密码记录,如果有返回1,如果没有返回0,如果中途有异常返回-1。

三、源代码

1.login2.jsp 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录界面</title>
</head>
<body>
	<form action="check2.jsp" method="post">
	 	用户名:<input type="text" name="uname" /> <br/>
	 	密码:<input type="password" name="upwd" /><br/>
	 	<input type="submit" value="登录"/><br/>
	
	</form>
</body>
</html>

2.check2.jsp

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

<%@ page import="org.login.dao.LoginDao" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>检验界面</title>
</head>
<body>
	<%
		String name=request.getParameter("uname");
			String pwd=request.getParameter("upwd");
			LoginDao dao=new LoginDao();
			int result=dao.login(name,pwd);
			
			if (result>0) {
		out.println("登录成功!");
			}
			else if (result==0){
		out.println("用户名或密码有误!");
			}else{
		out.println("系统异常!");
			}
	%>	

</body>
</html>

3.LoginDao.java

package org.login.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class LoginDao {
	public int login(String name,String pwd) //1:登录成功,0:登录失败(用户名密码错误);-1:出现异常
	{
		String URL="jdbc:mysql://localhost:3306/lds?serverTimezone=UTC";
		String USERNAME="root";
		String PWD="prolific";
		Connection connection = null;
		PreparedStatement pstmt =null;
		ResultSet rs=null;
		try {
			//  a.导入驱动,加载具体的驱动类
			Class.forName("com.mysql.cj.jdbc.Driver");//加载具体的驱动类
			//      b.与数据库建立连接
			connection = DriverManager.getConnection(URL,USERNAME,PWD);
			//c.发送sql,执行(增、删、改、查)
			String sql="select count(*)from login where uname=? and upwd=?";
			pstmt=connection.prepareStatement(sql);

			//String name=request.getParameter("uname");
			//String pwd=request.getParameter("upwd");
			
			pstmt.setString(1,name);
			pstmt.setString(2,pwd);


	        //String sql="select count(*)from login where uname='"+name+"' and upwd='"+pwd+"'";
			rs=pstmt.executeQuery();
		
			int count =-1;
			if(rs.next()) {
				count=rs.getInt(1);
			}
			return count;
			
		}  catch (ClassNotFoundException e) {
			e.printStackTrace();
			return -1;
		} catch (SQLException e) {
			e.printStackTrace();
			return -1;
		}catch(Exception e){
	  e.printStackTrace();
		}
		finally{
			try {
				if(rs!=null) rs.close();
				if (pstmt!=null) pstmt.close();   //对象.方法
				if (connection!=null) connection.close();			
			}catch(SQLException e) {
				e.printStackTrace();
				return -1;
			}
		}
		return 0;
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_42844704/article/details/108462448