请用servlet和jsp制作一个登陆和登出的系统
时间: 2024-03-27 16:36:36 浏览: 50
好的,下面是一个使用Servlet和JSP制作的登陆和登出系统的示例代码。
首先,我们需要创建一个名为`LoginServlet`的Servlet,用于处理用户登陆的请求。以下是该Servlet的代码:
```java
package com.example.servlet;
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;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
// 在实际应用中,这里应该是查询数据库或调用其他API验证用户名和密码是否正确
if ("admin".equals(username) && "password".equals(password)) {
HttpSession session = request.getSession();
session.setAttribute("username", username);
response.sendRedirect("index.jsp");
} else {
response.sendRedirect("login.jsp?error=1");
}
}
}
```
在上述代码中,我们首先从request对象中获取用户输入的用户名和密码,然后判断它们是否正确。在实际应用中,这里应该是查询数据库或调用其他API来进行验证。如果用户名和密码正确,就创建一个HttpSession对象,并将用户名存储在该对象中。最后,我们使用`response.sendRedirect()`方法将用户重定向到名为“index.jsp”的主页。如果用户名和密码不正确,则将用户重定向到名为“login.jsp”的登陆页面,并在URL中添加一个名为“error”的参数,表示登陆失败。
接下来,我们需要创建一个名为“LogoutServlet”的Servlet,用于处理用户登出的请求。以下是该Servlet的代码:
```java
package com.example.servlet;
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(false);
if (session != null) {
session.invalidate();
}
response.sendRedirect("login.jsp");
}
}
```
在上述代码中,我们首先从request对象中获取当前会话的HttpSession对象,然后将该对象标记为无效。最后,我们使用`response.sendRedirect()`方法将用户重定向到名为“login.jsp”的登陆页面。
最后,我们需要创建两个JSP页面,分别用于登陆和登出。以下是它们的代码:
`login.jsp`
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登陆页面</title>
</head>
<body>
<h1>登陆页面</h1>
<% if (request.getParameter("error") != null) { %>
<p style="color: red;">用户名或密码错误,请重试!</p>
<% } %>
<form method="post" action="login">
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required><br>
<label for="password">密码:</label>
<input type="password" id="password" name="password" required><br>
<button type="submit">登陆</button>
</form>
</body>
</html>
```
在上述代码中,我们首先输出了一个标题为“登陆页面”的H1标签。如果请求URL中包含名为“error”的参数,则输出一个红色字体的错误提示信息。接着,我们创建一个表单,使用POST方法将用户名和密码提交到名为“login”的Servlet中。最后,我们创建了一个提交按钮,用于提交表单。
`index.jsp`
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>主页</title>
</head>
<body>
<h1>欢迎您,<%= session.getAttribute("username") %>!</h1>
<p>您已经成功登陆,可以进行其他操作了。</p>
<form method="get" action="logout">
<button type="submit">退出登陆</button>
</form>
</body>
</html>
```
在上述代码中,我们首先输出了一个标题为“欢迎您,${session.getAttribute("username")}!”的H1标签,其中`${session.getAttribute("username")}`会被替换为当前会话中存储的用户名。接着,我们输出了一段简单的提示信息。最后,我们创建了一个表单,使用GET方法将请求提交到名为“logout”的Servlet中。该表单包含一个提交按钮,用于触发退出登陆操作。
注意:为了使上述示例代码能够正常运行,你需要将它们放置在一个名为“com.example”的Java包中,并且在Web应用的部署描述符文件(即web.xml)中配置Servlet和URL映射。你还需要将JSTL库和Servlet API库添加到项目的类路径中。
阅读全文