版权声明:[email protected] https://blog.csdn.net/zhaoxuyang1997/article/details/82934832
文章目录
1 实验目的
- 重点掌握数据库连接过程。
- 重点掌握具有连接数据库的JavaBean的设计。
- 掌握登录验证过程。
2 实验原理
- 设计数据库连接的JavaBean,在其中设计获取连接的方法getConnection()和释放连接的方法closeConnection();
- 在JSP页面使用useBean标签实例化访问数据库的业务类,格式如下:
<jsp:useBean id="db" class="bean.DBConn" scope="request"/>
<!--或者-->
<jsp:useBean id="db" class=" bean.DBConn " scope="request"></jsp:useBean>
- 通过以下方式获取连接,进行数据库访问操作:
<%
Connection conn=db.getConnection();
Statement stat = conn.createStatement();
%>
3 实验任务与步骤
任务描述:
- 设计用户登录程序,使用业务类连接数据库,接受用户提交的登录表单,查询数据库中是否存在该用户。
- 设计一个JavaBean类
Student
。- 设计表单页面
input.jsp
,传递参数。- 设计接收参数的页面
receive.jsp
。- 使用
JavaBean
自动获取表单传来的参数。
3.1 创建数据库db_user
- 在MySQL中建立数据库db_user(编码为UTF-8)
- 导入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
- 将
mysql-connector-java-5.1.8-bin.jar
复制到%PROJECTROOT%/%WEBROOT%/WEB-INF/lib
下。 - 右击
项目
下的库
,添加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 - 登录界面
图2 - 登录成功
图3 - 登录失败
4 思考题
- 如何在JSP页面中进行数据库连接,并读取数据库中数据?
- 如何进行登录数据验证?
5实验总结
本实验实现了在JSP页面中进行数据库连接,并对用户登录信息进行验证。