请基于MVC模式使用Session等技术实现用户登录的功能,用户登录的流程,具体如图1所示。当用户访问某个网站的首界面时,首先会判断用户是否登录,如果已经登录则在首界面中显示用户登录信息,否则进入登录页面,完成用户登录功能,然后显示用户登录信息。在用户登录的情况下,如果单击用户登录界面中的“退出”时,就会注销当前用户的信息,返回首界面。
时间: 2024-03-05 10:49:11 浏览: 17
下面是一个基于MVC模式、使用Session等技术实现用户登录的简单示例。
1. 登录页面 login.jsp:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<h1>Login Form</h1>
<form action="${pageContext.request.contextPath}/login" method="post">
<label>Username:</label>
<input type="text" name="username"><br>
<label>Password:</label>
<input type="password" name="password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
```
2. 首页 index.jsp:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Home</title>
</head>
<body>
<h1>Welcome ${username}!</h1>
<a href="${pageContext.request.contextPath}/logout">Logout</a>
</body>
</html>
```
3. 登录处理 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 javax.servlet.http.HttpSession;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
// 用户名和密码
private final String USERNAME = "admin";
private final String PASSWORD = "123456";
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取用户提交的数据
String username = request.getParameter("username");
String password = request.getParameter("password");
// 验证用户
if (USERNAME.equals(username) && PASSWORD.equals(password)) {
// 登录成功,将用户信息保存在 Session 中
HttpSession session = request.getSession();
session.setAttribute("username", username);
// 跳转到首页
response.sendRedirect("index.jsp");
} else {
// 登录失败,返回错误信息
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("Invalid username or password!");
}
}
}
```
4. 注销处理 Servlet LogoutServlet.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 javax.servlet.http.HttpSession;
@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 注销当前用户的信息
HttpSession session = request.getSession();
session.removeAttribute("username");
// 跳转到首页
response.sendRedirect("index.jsp");
}
}
```
在这个例子中,我们使用了 Session 来保存用户信息,并在首页中显示用户信息。当用户登录时,我们在 Session 中保存用户名,并在首页中显示它。当用户注销时,我们从 Session 中删除用户名,并将用户重定向到首页。
需要注意的是,我们使用了 MVC 模式来组织代码。LoginServlet 和 LogoutServlet 负责处理登录和注销请求,而 login.jsp 和 index.jsp 负责渲染登录页面和首页。这样可以提高代码的可读性和可维护性。另外,我们还使用了 JSP 的 EL 表达式来简化代码。