利用servlet 编写登录页面,页面中有userID和password,前端校验是userID不能出现字母,密码必须6位;校验通过 # 跟数据库数据比较,如果存在该人将所有user数据展示到表格回到浏览器;否则弹框登录失败跳转回原来的登录
时间: 2024-02-28 15:56:24 浏览: 139
servlet页面验证用户名密码
好的,我可以为您解答这个问题。
首先,您需要编写一个 HTML 页面,其中包含一个表单,该表单包含一个 userID 字段和一个 password 字段以及一个提交按钮。表单需要进行前端校验,以确保 userID 不包含字母,密码必须为 6 位数。以下是一个简单的示例:
```html
<!DOCTYPE html>
<html>
<head>
<title>Login Page</title>
<script>
function validate() {
var userID = document.getElementById("userID").value;
var password = document.getElementById("password").value;
// Check if userID contains letters
if (/^[a-zA-Z]+$/.test(userID)) {
alert("UserID cannot contain letters!");
return false;
}
// Check if password is 6 characters long
if (password.length != 6) {
alert("Password must be 6 characters long!");
return false;
}
return true;
}
</script>
</head>
<body>
<form action="LoginServlet" method="post" onsubmit="return validate()">
<label for="userID">UserID:</label>
<input type="text" id="userID" name="userID"><br><br>
<label for="password">Password:</label>
<input type="password" id="password" name="password"><br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>
```
接下来,您需要编写一个 servlet,该 servlet 处理表单提交并执行以下操作:
1. 检查 userID 和 password 是否符合格式要求。
2. 如果符合要求,则连接到数据库,并将 userID 和 password 与数据库中的数据进行比较。
3. 如果存在该用户,则将用户数据检索出来并传递给 JSP 页面进行展示。
4. 如果不存在该用户,则弹出登录失败的消息框并重定向回登录页面。
以下是一个简单的示例 servlet 代码:
```java
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 javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Get userID and password from request
String userID = request.getParameter("userID");
String password = request.getParameter("password");
// Check if userID contains letters
if (userID.matches(".*[a-zA-Z]+.*")) {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<script type=\"text/javascript\">");
out.println("alert('UserID cannot contain letters!');");
out.println("location='login.html';");
out.println("</script>");
return;
}
// Check if password is 6 characters long
if (password.length() != 6) {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<script type=\"text/javascript\">");
out.println("alert('Password must be 6 characters long!');");
out.println("location='login.html';");
out.println("</script>");
return;
}
// Connect to database and check if user exists
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password");
PreparedStatement ps = con.prepareStatement("SELECT * FROM users WHERE userID=? AND password=?");
ps.setString(1, userID);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
// User exists, retrieve all user data and forward to JSP page for display
request.setAttribute("userData", rs);
request.getRequestDispatcher("display.jsp").forward(request, response);
} else {
// User does not exist, display login failed message and redirect back to login page
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<script type=\"text/javascript\">");
out.println("alert('Login failed!');");
out.println("location='login.html';");
out.println("</script>");
}
rs.close();
ps.close();
con.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
```
最后,您需要编写一个 JSP 页面,该页面接收 servlet 传递的用户数据并将其显示在表格中。以下是一个简单的示例:
```html
<!DOCTYPE html>
<html>
<head>
<title>User Data</title>
</head>
<body>
<table>
<tr>
<th>UserID</th>
<th>Name</th>
<th>Email</th>
<th>Phone</th>
</tr>
<c:forEach var="row" items="${userData}">
<tr>
<td>${row.userID}</td>
<td>${row.name}</td>
<td>${row.email}</td>
<td>${row.phone}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
```
其中,`${userData}` 是从 servlet 传递过来的用户数据。注意,您需要在 JSP 页面的头部包含以下语句以启用 JSTL 标签库:
```html
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
```
希望这可以帮助您完成您的任务。如果您还有其他问题,请随时问我!
阅读全文