编写用户登录判断逻辑处理和自动登录业务的Servlet(LoginServlet.java)以及用户登录页面login.html(可加上登录成功后进入的页面welcome.jsp),通过Cookie技术实现用户自动登录网站功能。运行login.jsp,以用户名“张三”登录, 点击“提交”按钮后,登录成功,进入欢迎页面;点击“退出”超链接,则进入登录页面。 如果用户名输入错误,提交后则页面显示“用户名错误”,并在2秒钟后进入登录页面;如果用户名没有输入,提交后则页面显示“请输入用户名登录”,并在2秒钟后进入登录页面。
时间: 2023-06-14 20:03:12 浏览: 120
首先,我们需要编写登录页面 login.html。代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<title>用户登录</title>
</head>
<body>
<h1>用户登录</h1>
<form action="LoginServlet" method="post">
<label for="username">用户名:</label>
<input type="text" id="username" name="username"><br><br>
<label for="password">密码:</label>
<input type="password" id="password" name="password"><br><br>
<input type="checkbox" id="remember" name="remember">
<label for="remember">记住我</label><br><br>
<input type="submit" value="提交">
</form>
</body>
</html>
```
接下来,我们编写 LoginServlet.java 的逻辑处理代码。代码如下:
```java
package com.example.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
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");
if (username == null || username.equals("")) {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<script>alert('请输入用户名登录!');window.location.href='login.html'</script>");
return;
}
if (username.equals("张三") && password.equals("123456")) {
// 登录成功,创建会话
HttpSession session = request.getSession(true);
session.setAttribute("username", username);
// 判断是否需要记住密码
if (remember != null) {
// 创建 Cookie
Cookie userNameCookie = new Cookie("username", username);
Cookie passwordCookie = new Cookie("password", password);
// 设置 Cookie 的有效期为 1 天
userNameCookie.setMaxAge(60 * 60 * 24);
passwordCookie.setMaxAge(60 * 60 * 24);
// 把 Cookie 添加到响应中
response.addCookie(userNameCookie);
response.addCookie(passwordCookie);
}
// 跳转到欢迎页面
response.sendRedirect("welcome.jsp");
} else {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<script>alert('用户名错误!');window.location.href='login.html'</script>");
}
}
}
```
在 LoginServlet 中,我们首先获取用户提交的用户名、密码和是否记住密码的标记。如果用户名为空,则返回“请输入用户名登录”的提示信息,并在 2 秒钟后跳转回登录页面。如果用户名不为空,则判断用户名和密码是否正确。如果正确,则创建会话并跳转到欢迎页面。如果记住密码的标记被勾选,则创建 Cookie 并将其添加到响应中。
最后,我们来编写欢迎页面 welcome.jsp 的代码。代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<title>欢迎页面</title>
</head>
<body>
<h1>欢迎你,<%= session.getAttribute("username") %>!</h1>
<a href="logout.jsp">退出</a>
</body>
</html>
```
在欢迎页面中,我们通过会话获取到当前用户的用户名,并显示在页面上。同时,提供了一个“退出”超链接,点击后跳转到 logout.jsp 页面。
最后,我们还需要编写 logout.jsp 页面的代码。代码如下:
```html
<!DOCTYPE html>
<html>
<head>
<title>退出登录</title>
</head>
<body>
<h1>已退出登录!</h1>
<a href="login.html">重新登录</a>
</body>
</html>
```
在 logout.jsp 页面中,我们简单地显示一个“已退出登录”的提示信息,并提供一个“重新登录”的超链接,点击后跳转回登录页面。
现在,我们已经完成了用户登录判断逻辑处理和自动登录业务的 Servlet 编写,并通过 Cookie 技术实现了用户自动登录网站功能。