数据库代码
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`uid` int(0) NOT NULL,
`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`passwd` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
PRIMARY KEY (`uid`) USING BTREE,
UNIQUE INDEX `username`(`username`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;
INSERT INTO `user` VALUES (100, '张三', '888');
INSERT INTO `user` VALUES (101, '李四', '000');
SET FOREIGN_KEY_CHECKS = 1;
html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
<form action="http://localhost:8080/web01/login" method="get">
姓名:<input type="text" name="username"><br>
密码:<input type="password" name="passwd"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
Java代码
package com.gg;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
/**
* @author Charles
* @version 1.0
* @date 2022/4/1 17:10
*/
public class LoginServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.接收请求
//获取请求参数
String username= req.getParameter("username");
String passwd=req.getParameter("passwd");
//2.处理请求
//和数据库对比 使用JDBC
int i=-1;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/web01?serverTimezone=Asia/Shanghai";
String user="root";
String password="MYGAO";
Connection conn = DriverManager.getConnection(url, user, password);
String sql="select * from user where username=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,username);
ResultSet rs = ps.executeQuery();
if (rs.next()){
//用户存在
if (rs.getString("passwd").equals(passwd)){
//登陆成功
i=2;
}else{
//密码错误
i=1;
}
}else{
//用户不存在
i=0;
}
rs.close();
ps.close();
conn.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
//3.设置响应
//打印输出流
PrintWriter out = resp.getWriter();
if (i==0){
out.write("login error:username note found");
}else if(i==1){
out.write("login error:password is wrong");
}else{
out.write("login success");
}
out.close();
}
}
web配置代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- 配置LoginServlet信息-->
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.gg.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<!--http://localhost:8080/web01/login-->
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
运行结果: