jsp编程设计一个用户登录页面,用户可以输入用户名和密码,让用户选择“是否保存登录状态”,如果账号和密码相符,则登录成功,进入欢迎页面,否则不跳转并显示“登录错误”的信息。在登录时,如果保存了登录状态,下次登录时若访问登录页面则进入欢迎页面,如果用户没有经过登录就访问欢迎页面,则跳转到登录页面。要求自行设计一个数据库表保存用户的相关信息。
时间: 2023-11-24 08:07:01 浏览: 242
好的,这是一个比较完整的项目,需要编写前端页面和后端代码,以及操作数据库。以下是我提供的一种实现方案。
前端页面设计:
首先,我们需要设计一个用户登录页面。可以使用HTML和CSS编写,也可以使用前端框架来实现。这里为了简便,我们使用Bootstrap框架来实现。
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>用户登录</title>
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/4.0.0/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h1 class="text-center mt-5">用户登录</h1>
<form action="login.jsp" method="post">
<div class="form-group">
<label for="username">用户名</label>
<input type="text" class="form-control" id="username" name="username" placeholder="请输入用户名" required>
</div>
<div class="form-group">
<label for="password">密码</label>
<input type="password" class="form-control" id="password" name="password" placeholder="请输入密码" required>
</div>
<div class="form-check">
<input type="checkbox" class="form-check-input" id="remember" name="remember">
<label class="form-check-label" for="remember">记住登录状态</label>
</div>
<button type="submit" class="btn btn-primary mt-3">登录</button>
</form>
</div>
</body>
</html>
```
后端代码实现:
接下来,我们需要编写后端代码来实现用户登录功能。可以使用Java语言编写,也可以使用其他语言。这里我们使用Java语言,使用JSP和Servlet来实现。
首先,我们需要创建一个数据库表来保存用户的相关信息。可以使用MySQL等关系型数据库来实现。这里我们创建一个名为user的表,包含id、username、password和remember字段。
```sql
CREATE TABLE user (
id INT(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
remember INT(11) DEFAULT 0,
PRIMARY KEY (id)
);
```
然后,我们编写一个LoginServlet类来处理用户登录请求。首先,我们需要获取用户输入的用户名和密码,然后查询数据库验证是否正确。如果正确,我们需要判断用户是否选择了“记住登录状态”选项。如果选择了,我们需要在数据库中更新用户的remember字段为1,表示记住登录状态。如果没有选择,我们需要将用户的remember字段更新为0。
```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;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_URL = "jdbc:mysql://localhost:3306/test";
private static final String USER = "root";
private static final String PASS = "root";
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
String remember = request.getParameter("remember");
try {
// 加载驱动程序
Class.forName(JDBC_DRIVER);
// 获取数据库连接
Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
// 定义SQL语句
String sql = "SELECT * FROM user WHERE username=? AND password=?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, username);
stmt.setString(2, password);
// 执行查询操作
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
// 登录成功
request.getSession().setAttribute("username", username);
if (remember != null && remember.equals("on")) {
// 记住登录状态
sql = "UPDATE user SET remember=1 WHERE username=?";
} else {
// 不记住登录状态
sql = "UPDATE user SET remember=0 WHERE username=?";
}
stmt = conn.prepareStatement(sql);
stmt.setString(1, username);
stmt.executeUpdate();
response.sendRedirect("welcome.jsp");
} else {
// 登录失败
response.sendRedirect("login.jsp?error=1");
}
// 关闭资源
rs.close();
stmt.close();
conn.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
```
最后,我们编写一个WelcomeServlet类来处理用户访问欢迎页面的请求。首先,我们需要判断用户是否已经登录。如果已经登录,我们可以显示欢迎页面,否则需要跳转到登录页面。
```java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class WelcomeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = (String) request.getSession().getAttribute("username");
if (username != null) {
// 已经登录
response.getWriter().println("<h1>欢迎您," + username + "!</h1>");
} else {
// 没有登录
response.sendRedirect("login.jsp");
}
}
}
```
这样,我们就完成了一个用户登录系统的设计和实现。用户可以在登录页面输入用户名和密码,选择“记住登录状态”选项。如果登录成功,进入欢迎页面,否则显示“登录错误”的信息。如果用户已经登录,访问欢迎页面则显示欢迎信息,否则跳转到登录页面。
阅读全文