web登录界面数据库验证是web开发最简单也是最基础的一个开发环节。本次开发模式为JSP(前端)+JavaBean(数据库验证)+Java(数据库连接)。代码工程目录如下:
首先,JSP设计登录界面,简单起见,只有name和password两个文本输入框和submit提交按钮。所有的元素封存在<form >标签中。代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>login</title>
</head>
<body>
<jsp:useBean id="date" class="java.util.Date"></jsp:useBean>
<p>日期为:<%= date %>
<h1>Welcome</h1>
<form action="valadite.jsp" name="login">
用户名:<label>
<input type="text" name="name" >
</label><br>
密 码:<label>
<input type="password" name="password">
</label><br>
<%--<button type="button">注册</button>--%>
<input type="submit">
</form>
</body>
</html>
其次,设计MySQL数据库表单,数据库名称为:future-login-message,表单名称为login,结构如下:
接着,用Java连接数据库。此处要注意两点:1、getCon方法的返回值类型为Connection。2、最好将连接方法getCon写成成员方法,方便后续调用。代码如下:
package connect;
import java.sql.*;
public class mysqlConnect {
public Connection getCon() { //定义类型为Connection的getCon()方法
Connection con = null;
String username = "root";
String password = "lcglcg";
String Driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/future-login-message";
try {
Class.forName(Driver);
System.out.println("驱动加载成功!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
con = DriverManager.getConnection(url, username, password);
System.out.println("连接成功!");
} catch (SQLException e) {
e.printStackTrace();
}
return con; //返回值为Connection con
}
}
定义validate.jsp页面,设定在login.jsp点击登录按钮是的页面跳转页数据库查询验证。此处用到JavaBean组件,代码如下。
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.SQLException" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
<%--申明bean对象,将JavaBean变为脚本变量,可以通过脚本元素来访问其元素,将JavaBean实例化:ID--%>
<jsp:useBean id="user" class="Bean.loginMeaasge"></jsp:useBean>
<%--设置写入属性,将JavaBean中的name和password设置为当前页面的输入值--%>
<jsp:setProperty name="user" property="*"></jsp:setProperty>
<%--申明JavaBean对象,传入name和password对象,进行数据验证--%>
<jsp:useBean id="test" class="MessageTest.Test"></jsp:useBean>
<%
if(test.valiuser(user))
out.print("successful");
else
out.print("fail");
%>
</body>
</html>
在validate.jsp中定义了数据库查询操作的JavaBean,此处需要Java代码的实现,代码如下:
package MessageTest;
import java.sql.*;
import Bean.loginMeaasge;
import connect.mysqlConnect;
public class Test {
private Connection con;
private PreparedStatement pst;
public Test() { //定义Test的构造函数,实例化getCon方法,连接到数据库(Test对象的实例化在valadite.jsp的JSP:useBean完成)
con = new mysqlConnect().getCon();//申明的connection对象con=mysqlConnect()对象的getcon方法
//new getcon()方法,将其实例化。 本段代码,一个对象等于另一个对象的成员方法?什么操作?
}
public boolean valiuser(loginMeaasge user) { //实例化一个JavaBean对象:loginMeaasge user,用来执行JavaBean操作
try {
pst = con.prepareStatement("select * from `future-login-message`.login where name=? and password=?");
pst.setString(1, user.getName()); //接收username值
pst.setString(2, user.getPassword());
ResultSet rs = pst.executeQuery();
return rs.next();
} catch (SQLException e) {
e.printStackTrace();
return false;// try 和catch两个模块都要分别定义返回值
}
}
}
本段代码需要特别注意两个点;
1、在构造方法Test()中,申明的con对象=new mysqlConnection.getcon()方法,即一个对象等于另一个对象的成员方法,此处,con的属性为Connection,而getcon()方法的类型也为Connection.
2、定义成员方法boolean valiuser(loginMeaasge user)中,参数user类型为loginMeaasge,即此处的user是一个JavaBean3、使用prepareStatement()执行查询SQL语句是,两个?最后都要赋值。
此时,全部代码构建完成,运行,得到登录信息结果。