javaweb连接数据库实现用户登录
时间: 2023-09-11 08:11:37 浏览: 165
javaweb实现用户登录
下面是一个简单的 JavaWeb 用户登陆的示例代码,该示例使用 JDBC 连接 MySQL 数据库,实现用户登陆的功能。
1. 创建数据库表
首先需要创建一个名为 user 的表,该表用于存储用户的账号和密码信息。
```sql
CREATE TABLE user (
id INT(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
```
2. 创建 JavaWeb 项目
接下来创建一个 JavaWeb 项目,我们可以使用 Eclipse 或者 IDEA 等 Java IDE 工具创建一个动态 Web 项目。
3. 编写用户登陆的代码
在项目中创建一个名为 LoginServlet 的 Servlet,用于处理用户登陆的请求,代码如下:
```java
import java.io.IOException;
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.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
// 加载 MySQL JDBC 驱动
Class.forName("com.mysql.jdbc.Driver");
// 打开连接
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String passwd = "root";
conn = DriverManager.getConnection(url, user, passwd);
// 构造查询 SQL 语句
String sql = "SELECT * FROM user WHERE username = ? AND password = ?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, username);
stmt.setString(2, password);
rs = stmt.executeQuery();
// 判断查询结果是否存在
if (rs.next()) {
// 用户名和密码正确,登陆成功
response.sendRedirect("success.jsp");
} else {
// 用户名或密码错误,登陆失败
response.sendRedirect("fail.jsp");
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
// 关闭资源
try {
if (rs != null) rs.close();
if (stmt != null) stmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
在代码中,我们首先从 request 对象中获取用户输入的用户名和密码,然后使用 JDBC 连接 MySQL 数据库,查询用户信息。如果查询结果存在,则表示用户名和密码正确,登陆成功,重定向到 success.jsp 页面;否则,表示用户名或密码错误,登陆失败,重定向到 fail.jsp 页面。
4. 编写登陆页面
在 WebContent 目录下创建一个名为 login.jsp 的 JSP 页面,用于显示登陆页面和提交用户登陆的请求。代码如下:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户登陆</title>
</head>
<body>
<h2>用户登陆</h2>
<form action="login" method="post">
<p>
用户名:<input type="text" name="username" />
</p>
<p>
密码:<input type="password" name="password" />
</p>
<p>
<input type="submit" value="登陆" />
</p>
</form>
</body>
</html>
```
在代码中,我们使用了一个表单,通过 post 请求将用户输入的用户名和密码提交到 LoginServlet 进行处理。
5. 创建登陆成功和失败的页面
在 WebContent 目录下创建 success.jsp 和 fail.jsp 两个 JSP 页面,用于显示用户登陆成功和失败的页面。
success.jsp 页面代码如下:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登陆成功</title>
</head>
<body>
<h2>登陆成功</h2>
</body>
</html>
```
fail.jsp 页面代码如下:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登陆失败</title>
</head>
<body>
<h2>登陆失败</h2>
</body>
</html>
```
6. 配置 web.xml 文件
最后,在项目的 WEB-INF 目录下创建一个名为 web.xml 的部署描述符,用于配置 Servlet 的映射关系。代码如下:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>JavaWebLoginDemo</display-name>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
```
在代码中,我们将 LoginServlet 映射到了 /login 的 URL 路径,这样当用户访问 /login 路径时,就会触发 LoginServlet 中的 doPost() 方法进行处理。
至此,我们就完成了 JavaWeb 用户登陆的示例代码。
阅读全文