• 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

  • 相关阅读:
    神鬼传奇客户端解包图片(ui\common)
    电子书下载:Pro ASP.NET MVC 3 Framework 3rd Edition
    DDS工具
    Delphi2010中TResourceStream流使用
    电子书下载:Professional C# 4 and .NET 4
    电子书下载:Professional NoSQL
    电子书下载:C# Database Basics
    FancyCache要怎样设置才最大发挥硬盘的性能?
    完美时空Cube Engine 3D引擎
    DELPHI获取CPU信息
  • 原文地址:https://www.cnblogs.com/Romantic-Chopin/p/12451068.html
Copyright © 2020-2023  润新知