JavaEE(4)——JSP访问数据库技术

版权声明:[email protected] https://blog.csdn.net/zhaoxuyang1997/article/details/82934832

1 实验目的

  • 重点掌握数据库连接过程。
  • 重点掌握具有连接数据库的JavaBean的设计。
  • 掌握登录验证过程。

2 实验原理

  1. 设计数据库连接的JavaBean,在其中设计获取连接的方法getConnection()和释放连接的方法closeConnection();
  2. 在JSP页面使用useBean标签实例化访问数据库的业务类,格式如下:
<jsp:useBean id="db" class="bean.DBConn" scope="request"/>
<!--或者-->
<jsp:useBean id="db" class=" bean.DBConn " scope="request"></jsp:useBean>
  1. 通过以下方式获取连接,进行数据库访问操作:
<%
    Connection conn=db.getConnection();
    Statement  stat = conn.createStatement();
%>

3 实验任务与步骤

任务描述:

  • 设计用户登录程序,使用业务类连接数据库,接受用户提交的登录表单,查询数据库中是否存在该用户。
  • 设计一个JavaBean类Student
  • 设计表单页面input.jsp,传递参数。
  • 设计接收参数的页面receive.jsp
  • 使用JavaBean自动获取表单传来的参数。

3.1 创建数据库db_user

  1. 在MySQL中建立数据库db_user(编码为UTF-8)
  2. 导入sql脚本(sql中含有中文,请设置存放sq脚本的文件编码为UTF-8,或者在查询中运行该脚本)

SET FOREIGN_KEY_CHECKS=0;

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `loginname` varchar(15) DEFAULT NULL,
  `password` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

INSERT INTO `user` VALUES ('1', '张转', '123');
INSERT INTO `user` VALUES ('2', '杨和', '123');
INSERT INTO `user` VALUES ('3', '李智', '123');
INSERT INTO `user` VALUES ('4', '何辉', '123');
INSERT INTO `user` VALUES ('5', 'tom', '123');

3.2 导入mysql-connector-java-5.1.18-bin.jar

向项目中导入MySQL驱动程序,如:mysql-connector-java-5.1.18-bin.jar

  1. mysql-connector-java-5.1.8-bin.jar 复制到 %PROJECTROOT%/%WEBROOT%/WEB-INF/lib 下。
  2. 右击项目下的添加JAR/文件夹...,选择jar文件,如E:\Java\Study\web\WEB-INF\lib\mysql-connector-java-5.1.8-bin.jar,选择相对路径,点击打开,则将jar包导入到项目中。

3.3 编写DBConn.java

%PROJECTROOT%/src/exp04/bean/DBConn.java 的内容如下:


package exp04.bean;

//数据库连接类,方法public static Connection getConnction()
//注意:检查数据库名、用户名、密码是否正确
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DBConn {

    private static final String DRIVER_CLASS = "com.mysql.jdbc.Driver";
    private static final String DATABASE_URL = 
    "jdbc:mysql://localhost:3306/db_user?useUnicode=true&characterEncoding=utf-8";
    private static final String DATABASE_USRE = "root";
    private static final String DATABASE_PASSWORD = "root";

    // 返回连接
    public static Connection getConnction() {
        Connection dbConnection = null;
        try {
            Class.forName(DRIVER_CLASS);
            dbConnection = DriverManager.getConnection(DATABASE_URL,
                    DATABASE_USRE, DATABASE_PASSWORD);
        } catch (ClassNotFoundException | SQLException e) {
        }

        return dbConnection;
    }

    // 关闭连接
    public static void closeConnection(Connection dbConnection) {
        try {
            if (dbConnection != null && (!dbConnection.isClosed())) {
                dbConnection.close();
            }
        } catch (SQLException sqlEx) {
        }

    }

    // 关闭结果集
    public static void closeResultSet(ResultSet res) {
        try {
            if (res != null) {
                res.close();
                res = null;
            }
        } catch (SQLException e) {
        }
    }

    public static void closeStatement(PreparedStatement pStatement) {
        try {
            if (pStatement != null) {
                pStatement.close();
                pStatement = null;
            }
        } catch (SQLException e) {
        }
    }
}

3.4 编写login.jsp

%WEBROOT%/jsp/exp04/login.jsp 的内容如下:

<%--
    Document   : login
    Created on : 2018-10-4, 17:37:10
    Author     : Administrator
--%>

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

<!DOCTYPE html>
<html>
    <head>
        <title>登录程序实验</title>
    </head>
    <body>
        <form method="post" action="checkUser.jsp" target="_blank">
            用户名:<input type="text" name="loginName"><br />
            密  码:<input type="password" name="passWord"><br />
            <input type="submit" value="提交">
            <input type="reset" value="重置"><br />
        </form>
    </body>
</html>

3.5 编写checkUser.jsp

%WEBROOT%/jsp/exp04/checkUser.jsp 的内容如下:

<%-- 
    Document   : checkUser
    Created on : 2018-10-4, 17:38:29
    Author     : Administrator
--%>

<%@ page language="java" import="java.sql.*" contentType="text/html; charset=utf-8" %>
<jsp:useBean id="db" class="exp04.bean.DBConn" scope="request"/>

<html>
<head>
	<title>登录验证页面[checkUser.jsp]</title>
</head>
<body>
<%
    request.setCharacterEncoding("utf-8");//解决post提交的中文乱码
    String name=request.getParameter("loginName");  
    String password=request.getParameter("passWord"); 
%>
    你输入的用户名是:<%=name %><br /><br />
<%
	Connection con =db.getConnction();
	Statement stmt = con.createStatement();
	String sql="select * from user";  //查询userinfo表中的用户信息
	sql+= " where loginname='"+name+"' and password='"+password+"'";
	ResultSet rs = stmt.executeQuery(sql); 	
	if (rs.next()) 	//验证通过
	  { session.setAttribute("userName",name); //将用户名保存到session中
        response.sendRedirect("success.jsp");
	  }	
   else {  //验证未通过
       out.print("无此用户或密码有误,登录失败!<br /><br />");
       out.print("<a href='login.jsp'>重新登录<//a>");
     } 
%>
</body>
</html>

3.6 编写success.jsp

%WEBROOT%/jsp/exp04/success.jsp 的内容如下:

<%--
    Document   : success
    Created on : 2018-10-4, 17:40:02
    Author     : zhaoxuyang
--%>

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
    <head>
        <title>登录成功</title>
    </head>
    <body>
        <%=session.getAttribute("userName")%> ;
        恭喜你,登录成功!<br />
        <a href=login.jsp>返回登录页面</a>
    </body>
</html>

3.7 运行测试

在浏览器地址栏输入以下URL访问之,如图1图2图3所示:
http://localhost:8081/Study/jsp/exp04/login.jsp

图1 - 登录界面
图1 - 登录界面


图2 - 登录成功
图2 - 登录成功


图3 - 登录失败
图3 - 登录失败


4 思考题

  1. 如何在JSP页面中进行数据库连接,并读取数据库中数据?
  2. 如何进行登录数据验证?

5实验总结

本实验实现了在JSP页面中进行数据库连接,并对用户登录信息进行验证。

猜你喜欢

转载自blog.csdn.net/zhaoxuyang1997/article/details/82934832