-
项目简介
1)在MySQL数据库中创建一个member数据表,添加三个字段id,username,password,并录入几条数据
2)定义一个login.html,里面定义两个请求字段username,password,发送请求到LoginServlet,创建一个LoginServlet类并继承HttpServlet,并重写doPost方法,在其中获取请求的username,password
3)利用JDBC查询有没有页面输入的username与password的记录,若有在网页打印Hello: XXX,若没有在网页打印Sorry: XXX,其中XXX为用户输入的用户名
-
创建数据库并插入记录
#创建数据库
DROP DATABASE IF EXISTS myWebProject;
CREATE DATABASE myWebProject;
#使用数据库
USE myWebProject;
#创建会员表
CREATE TABLE member(
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL UNIQUE,
`password` VARCHAR(20) NOT NULL
);
#插入数据
INSERT INTO member(username,`password`) VALUES('jack','jack@123');
INSERT INTO member(username,`password`) VALUES('tom','rom@123');
INSERT INTO member(username,`password`) VALUES('json','json@123');
#查询
SELECT * FROM member;
-
创建JavaWeb项目并在WebContent目录下新建login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<form action="LoginServlet" method="post">
用户名:<input type="text" name="username"/>
密码:<input type="password" name="password"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
-
创建LoginServlet类并继承HttpServlet
在/src目录下新建一个包"com.njupt.javaweb",创建LoginServlet类
package com.njupt.javaweb;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("请求。。。。。");
}
}
在web.xml中进行映射
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.njupt.javaweb.LoginServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
</web-app>
此时我们开启tomcat服务器,运行我们的项目,控制台会打印 “请求。。。。。”,这表示连接建立
-
解析用户输入的用户名与密码
//解析用户输入的用户名与密码
String httpUserName = req.getParameter("username");
String httpPassWord = req.getParameter("password");
System.out.println("httpUserName=" + httpUserName + " , httpPassWord="+httpPassWord);
-
利用JDBC查询数据库
//1准备连接数据库的基本信息
String driverClass = "com.mysql.jdbc.Driver";
String jdbcUrl = "jdbc:mysql://localhost:3306/myWebProject";
String mysqlUser="root";
String mysqlPassword = "root";
//2加载数据库驱动程序
try {
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//3通过DriverManager的getConnection()方法获取数据库连接
Connection conn=null;
PreparedStatement preparedStatement = null;
ResultSet resultSet=null;
int memberCount=0;
PrintWriter out=resp.getWriter();
String sql="SELECT COUNT(id) FROM member WHERE username = ? AND password = ?";
try {
conn = DriverManager.getConnection(jdbcUrl, mysqlUser, mysqlPassword);
preparedStatement=conn.prepareStatement(sql);
preparedStatement.setString(1, httpUserName);
preparedStatement.setString(2, httpPassWord);
resultSet=preparedStatement.executeQuery();
if(resultSet.next()) {
memberCount = resultSet.getInt(1);
if( memberCount > 0) {
out.print("Hello: " + httpUserName);
}else {
out.print("sorry: " + httpUserName);
}
}
System.out.println("memberCount=" + memberCount);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(resultSet!=null) {
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(preparedStatement!=null) {
try {
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
如果顺利项目就能成功运行出结果
附上LoginServlet.java的代码
package com.njupt.javaweb;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
//super.doPost(req, resp);
//解析用户输入的用户名与密码
String httpUserName = req.getParameter("username");
String httpPassWord = req.getParameter("password");
System.out.println("httpUserName=" + httpUserName + " , httpPassWord="+httpPassWord);
//连接数据库并查询有没有该用户以及密码是否正确
//1准备连接数据库的基本信息
String driverClass = "com.mysql.jdbc.Driver";
String jdbcUrl = "jdbc:mysql://localhost:3306/myWebProject";
String mysqlUser="root";
String mysqlPassword = "root";
//2加载数据库驱动程序
try {
Class.forName(driverClass);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//3通过DriverManager的getConnection()方法获取数据库连接
Connection conn=null;
PreparedStatement preparedStatement = null;
ResultSet resultSet=null;
int memberCount=0;
PrintWriter out=resp.getWriter();
String sql="SELECT COUNT(id) FROM member WHERE username = ? AND password = ?";
try {
conn = DriverManager.getConnection(jdbcUrl, mysqlUser, mysqlPassword);
preparedStatement=conn.prepareStatement(sql);
preparedStatement.setString(1, httpUserName);
preparedStatement.setString(2, httpPassWord);
resultSet=preparedStatement.executeQuery();
if(resultSet.next()) {
memberCount = resultSet.getInt(1);
if( memberCount > 0) {
out.print("Hello: " + httpUserName);
}else {
out.print("sorry: " + httpUserName);
}
}
System.out.println("memberCount=" + memberCount);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
if(resultSet!=null) {
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(preparedStatement!=null) {
try {
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
System.out.println(conn);
}
}
上述代码有超级无敌多的不足,改进见V2.0