一、实验目的
通过Struts1.x架构创建登录界面,并利用JDBC连接MySQL数据库。
在Web界面输入用户名和密码时,若数据库中存有该用户名和密码,则登陆成功,否则登陆失败。
二、使用软件
MyEclipse2017、MySQL8、Navicat12
三、具体流程
1、下载JDBC驱动,并将其复制到你所建的Web Project项目的WebRoot——WEB-INF——lib文件夹下
2、创建Struts1.x项目的登录界面(详见我的另一篇博客 Struts1.x项目——简单的登录界面)
编写login.jsp,struts-config.xml,web.xml,Action和ActionForm文件
3、利用Navicat在数据库中创建表格
此处我创建了一个数据库,名为login_database,同时创建了一个名为users的表格,表中有两列数据,分别为name和pswd
注:可以自己命名或者添加参数(在java代码中修改即可)
4、编写java文件连接数据库——database.java
package mysql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class database {
//数据库的URL路径
static final String URL = "jdbc:mysql://localhost:3306/login_database?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
// 数据库的用户名与密码
static final String USER = "root";
static final String PASSWORD = "root";
//构造函数
public database() {
}
//判断函数,判断用户在网页输入的用户名和密码与在数据库中存储的是否一致
public boolean verify(String login_username, String login_password) {
try {
// 加载数据库驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");
// 获得数据库连接
Connection conn = DriverManager.getConnection(URL, USER, PASSWORD);
// 通过数据库的连接操作数据库,实现增删改查
Statement stmt = conn.createStatement();
//查找和数据库存储数据一致的用户名
String sql = "SELECT pswd FROM users WHERE name=\"" + login_username+"\"";
ResultSet rs = stmt.executeQuery(sql);
//判断输入的密码是否和数据库中存储的密码是一致的
while (rs.next()) {
if(rs.getString("pswd").equals(login_password))
return true;
}
// 完成后关闭创建的实例
rs.close();
stmt.close();
conn.close();
} catch (SQLException se) {
// 处理 JDBC 错误
se.printStackTrace();
} catch (Exception e) {
// 处理驱动程序错误
e.printStackTrace();
}
return false;
}
}
注:编写java文件时需要创建一个package,java文件存在该package中
5、在Action文件中创建数据库实例
Action文件完整代码如下:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package lh_login.struts.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import lh_login.struts.form.MyloginForm;
import mysql.database;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class MyloginAction extends Action {
/** 此操作主要是进行用户的请求处理,类似于doGet()或者是doPost()方法功能
* @param mapping 此类主要负责读取struts-config.xml文件配置
* @param form 表示要操作的ActionForm,使用它的目的是为了能够接收参数
* @param request 用户的请求
* @param response 用户回应
* @return ActionForward 表示返回的路径信息,通过配置文件取出映射的key
*/
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
//这个form就是接受到的表单信息,你可以直接进行强制转换
MyloginForm myloginForm = (MyloginForm) form;
//创建数据库实例
database db=new database();
//调用函数,参数为从网页接收到的用户名和密码
if(db.verify(myloginForm.getUsername(), myloginForm.getPassword())){
request.setAttribute("msg", "用户登录成功,欢迎!");
return mapping.findForward("success");
}
else{
request.setAttribute("msg", "用户登录失败,请重新登录!");
return mapping.findForward("failure");
}
}
}
6、启动Tomcat,运行项目
7、打开浏览器,输入相关网址
8、验证结果
未输入用户名和密码:
输入数据库中没有的用户名和密码:
输入数据库中存在的用户名和密码: