Jdbc+Servlet+Jsp+MySQL 增删改查实现登陆功能
时间: 2023-07-30 16:08:37 浏览: 123
好的,下面是一个简单的 Jdbc+Servlet+Jsp+MySQL 实现登陆功能的示例:
首先,创建一个名为 `users` 的 MySQL 数据库表,包含 `id`、`username` 和 `password` 三个字段,用于存储用户信息。
```mysql
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
然后,创建一个名为 `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.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
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 ps = null;
ResultSet rs = null;
try {
// 连接数据库
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mydb";
String user = "root";
String password_db = "password";
conn = DriverManager.getConnection(url, user, password_db);
// 查询用户信息
String sql = "SELECT * FROM users WHERE username=? AND password=?";
ps = conn.prepareStatement(sql);
ps.setString(1, username);
ps.setString(2, password);
rs = ps.executeQuery();
if (rs.next()) {
// 登陆成功,保存用户信息到 session 中
HttpSession session = request.getSession();
session.setAttribute("username", username);
response.sendRedirect("welcome.jsp");
} else {
// 登陆失败,返回错误信息
request.setAttribute("error", "用户名或密码错误");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
最后,创建一个名为 `login.jsp` 的 JSP 页面,用于显示登陆表单。
```html
<%@page contentType="text/html;charset=UTF-8" language="java"%>
<html>
<head>
<title>登陆页面</title>
</head>
<body>
<% String error = (String)request.getAttribute("error"); %>
<% if (error != null) { %>
<p style="color: red;"><%= error %></p>
<% } %>
<form method="post" action="login">
<label>用户名:</label>
<input type="text" name="username" /><br />
<label>密码:</label>
<input type="password" name="password" /><br />
<input type="submit" value="登陆" />
</form>
</body>
</html>
```
这样,当用户访问登陆页面时,会显示一个表单,用户输入用户名和密码后提交表单,Servlet 会接收表单数据并与数据库中的用户信息进行比对,如果用户名和密码正确,则保存用户信息到 session 中,并跳转到欢迎页面;否则返回错误信息并重新显示登陆表单。
这只是一个简单的示例,实际的登陆功能可能涉及到更多的安全性和效率方面的考虑,需要根据具体的需求进行优化。
阅读全文