JSP + JDBC 登陆系统 登陆界面/处理界面/成功界面/失败界面/注销界面(有数据库版) 包含源文件分享

 

1、程序要求:

登陆模块案

完成用户登陆功能。

用户名及密码保存在数据库之中,可以使用数据库完成验证,数据库通过则表示用户为合法用户,跳转到登陆成功页,否则表示用户名或密码不正确,跳转到登陆失败页。

2、输出页面:

 

2.1、页面总体流程:

 

 

 

2.2、具体演示:

A、登陆首页:

 

 

B、登陆成功页:

 

 

C、登陆失败页:

 

 


3、分析

如果完成此功能,则至少需要四个页面:

1、login.jsp

用户输入信息的表单


<%@page import="java.net.ConnectException"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="com.mysql.jdbc.Driver"%>
<%@page import="java.sql.*"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>

	<%
		//获取login.jsp页面的表单输入的用户名和密码     
		String name = request.getParameter("username");
		String password = request.getParameter("password");
	%>
	<%
		String Url = "jdbc:mysql://localhost/db03";//db3是我的数据库名
		String Username = "root";
		String Password = "19981231";

		Class.forName("com.mysql.jdbc.Driver");
		Connection conn = DriverManager.getConnection(Url, Username, Password);
		Statement st = conn.createStatement();
		ResultSet rs = st.executeQuery("select name,password from user");
		boolean flag = false;
		while (rs.next()) {
			if (rs.getString("name").equals(name) && rs.getString("password").equals(password))
				flag = true;
		}
	%>
	<%
		if (flag == true) {
	%>
	<jsp:forward page="login_success.jsp" />
	<%
		} else {
	%>
	<jsp:forward page="login_failure.jsp" />
	<%
		}
	%>

</body>
</html>

 

2、login_conf.jsp

· 接收参数

· 读取据库,判断参数

· 相符则设置通行证并跳转到登录成功页面

· 不相符则跳转到登录失败页面


<%@page import="java.net.ConnectException"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="com.mysql.jdbc.Driver"%>
<%@page import="java.sql.*"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>

	<%
		//获取login.jsp页面的表单输入的用户名和密码     
		String name = request.getParameter("username");
		String password = request.getParameter("password");
	%>
	<%
		String Url = "jdbc:mysql://localhost/db03";
		String Username = "root";
		String Password = "19981231";

		Class.forName("com.mysql.jdbc.Driver");
		Connection conn = DriverManager.getConnection(Url, Username, Password);
		Statement st = conn.createStatement();
		ResultSet rs = st.executeQuery("select name,password from user");
		boolean flag = false;
		while (rs.next()) {
			if (rs.getString("name").equals(name) && rs.getString("password").equals(password))
				flag = true;
		}
	%>
	<%
		if (flag == true) {
	%>
	<jsp:forward page="login_success.jsp" />
	<%
		} else {
	%>
	<jsp:forward page="login_failure.jsp" />
	<%
		}
	%>

</body>
</html>

 

3、login_success.jsp

· 显示欢迎信息

 

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>登陆成功</title>
<style>
	body{
	text-align:center;
	}
</style>
</head>
<body>
	
    <h1>用户登陆系统</h1><br/>
	<hr>
	<h><font color="red"><b>登陆成功!</b></font></h><br/>
	<p>
		欢迎<%=request.getParameter("username") %>进入系统!<br/><br/>
		<a href="logout.jsp">注销请点击这里</a>
	</p>
</body>
</html>

 4、logout.jsp

· 注销通行证

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>注销界面</title>
<style>
	body{
	text-align:center;
	}
</style>
</head>
<body>
	   
	<%
	response.setHeader("refresh", "3;URL=login.jsp");
	session.invalidate();
	%>
	     
	<h3>你已经成功退出本系统,3秒后会跳转到首页</h3>
	     
	<h3>
		如果没有跳转请点击<a href="login.jsp">这里</a>
	</h3>
	 
</body>

</html>

 

5、login_failure.jsp

· 显示登陆失败信息

· 给出一个超级链接,可以使用户返回到登录页面

4、MySql驱动程序:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>登陆失败</title>
<style>
	body{
	text-align:center;
	}
</style>
</head>
<body>
	<h1>用户登陆系统</h1><br/>
	<hr>
	<h><font color="red"><b>登陆失败!</b></font><br/></h>
	<h><font color="red"><b>您的用户名或密码有误!<br/></b></font></h>
	<a href="login.jsp">点击重新登陆</a>
</body>
</html>



驱动程序:com.mysql.jdbc.Driver

连接地址:jdbc:mysql://localhost/mydb

数据库用户名:root

数据库密码:root

之前范例的问题:

1、用户名及密码固定,不适合于更多人使用

2、用户修改密码必须修改 JSP 页面

解决之道: 使用数据库,让所有的用户名及密码保存在数据库中。

使用MYSQL数据库

数据库:mydb

 

在数据库操作中必须使用 JDBC,回顾 JDBC 基本操作步骤:

1、加载驱动程序

Class.forName("数据库驱动程序"):

//  由各数据库厂商提供

要将 MySQL的驱动程序存放到:%TOMCAT_HOME%/common/lib 中 将驱动程序包拷贝完成之后,如果服务器已经启动,则需要重新启动。

 

2、连接数据库(Connection

Connection conn = DriverManager.getConnection("数据库连接 url","用户名","密码") ;

3、操作数据库(CRUD)使用 StatementPreparedStatement

· 更新数据库:

|- INSERT(插入)

|- UPDATE(更新)

|- DELETE(删除)

· 查询数据库:(ResultSet)

|- SELECT

4、关闭数据库连接

// 定义数据库驱动程序

        String DBDRIVER = "";

       

        // 定义数据库连接地址

        String DBURL = "";

       

        // 定义数据库用户名

        String DBUSER ="";

       

        // 定义数据库密码

        String DBPASS = "";

       

        // 定义数据库连接对象

        Connection conn = null;

       

        // 定义数据库操作对象

        Statement stmt;

       

        // 定义SQL变量

        String sql = "";

 

// 定义结果集对象

ResultSet rs = null;

       

        // 1、加载数据库驱动程序

       

        try{

          

        }catch(Exception e){

           out.println("数据库驱动程序加载失败!");

        }

       

        // 2、连接数据库

       

        try{

        }catch(Exception e){

           out.println("数据库连接失败!");

        }

        // 3、操作数据库

       

        try{

       

           // 实例化Statement对象

          

           // 赋值SQL语句

          

           // 通过Statement对象执行SQL语句

          

        }catch(Exception e){

           out.println("数据库操作失败!");

        }

       

        // 4、关闭数据库

       

        try{

          

        }catch(Exception e){

           out.println("数据库关闭失败!");

        }

forward 跳转属于服务器端的跳转:

forward 之后的代码不再被执行

此时的登陆是基于 Statement 完成,所有 SQL 语句是通过拼凑完成的。

存在安全问题:SQL 注入漏洞

SELECT name FROM person WHERE id='lxh' and password='fsadfds' or 'x'='x'

密码输入:fsadfds' or 'x'='x

 

在程序中使用 PreapredStatement 来代替 Statement 使用在开发中基本上都是使用 PreapredStatement 来操作数据库的。

源文件:https://download.csdn.net/download/qq_40763929/11151987

原文地址:https://www.cnblogs.com/Romantic-Chopin/p/12451068.html