帮我写一个登录功能的jsp页面如果输入的数据与数据库表中的记录不符合则登录失败,表的字段包括id和name
时间: 2024-12-15 18:15:38 浏览: 13
为了实现一个简单的登录功能,我们需要一个JSP页面用于用户输入用户名和密码,以及一个后端逻辑来验证这些信息是否与数据库中的记录匹配。以下是一个简单的示例:
1. 创建一个JSP页面(login.jsp)用于用户输入用户名和密码:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h2>Login Form</h2>
<form action="loginServlet" method="post">
Username: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
```
2. 创建一个Servlet(LoginServlet.java)来处理登录请求并验证用户信息:
```java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/yourdatabase", "root", "password");
PreparedStatement ps = con.prepareStatement("SELECT * FROM users WHERE name=? AND id=?");
ps.setString(1, username);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
response.sendRedirect("welcome.jsp"); // 登录成功,跳转到欢迎页
} else {
response.sendRedirect("login.jsp?error=true"); // 登录失败,返回登录页,并显示错误信息
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
```
3. 在`login.jsp`页面中添加错误处理逻辑:
```html
<% if ("true".equals(request.getParameter("error"))) { %>
<p style="color:red;">Invalid username or password!</p>
<% } %>
```
这个简单的登录功能包括了一个JSP页面用于收集用户的输入和一个Servlet用于处理这些输入并与数据库进行交互。如果用户名和密码与数据库中的记录匹配,则用户被重定向到一个欢迎页面;如果不匹配,则返回登录页面并显示错误信息。
阅读全文