📜  Servlet中的登录表单(1)

📅  最后修改于: 2023-12-03 15:34:57.052000             🧑  作者: Mango

Servlet中的登录表单

在Web开发中,用户登录功能是非常常见的。在Servlet中,我们可以通过使用表单和Session来实现这个功能。本文将详细介绍Servlet中的登录表单的实现。

准备工作

在开始本文的示例之前,我们需要先准备好以下环境:

  • Java语言环境:JDK 1.8或更高版本
  • Servlet容器:如Tomcat、Jetty等
  • IDE:如Eclipse、IntelliJ IDEA等
实现步骤
1.创建登录表单

在实现登录功能之前,我们需要先创建一个登录表单。在本示例中,我们将创建一个简单的登录表单,包含用户名和密码两个输入项。创建一个名为login.jsp的文件,内容如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Login Form</title>
</head>
<body>
<h1>Login Form</h1>

<form action="${pageContext.request.contextPath}/login" method="post">
    <label for="username">Username:</label>
    <input type="text" id="username" name="username" required><br/>

    <label for="password">Password:</label>
    <input type="password" id="password" name="password" required><br/>

    <input type="submit" value="Login">
</form>
</body>
</html>

在表单中,action属性指定了表单提交的地址,method属性指定了提交方式为POST。我们还可以看到,用户名和密码两个输入项都有required属性,这表示这两个项必须填写才能提交。

2.处理登录请求

创建一个名为LoginServlet的Servlet,用于处理登录请求。在该Servlet中,我们将在Session中存储登录用户名,以便在其他页面中进行验证。代码如下:

@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");

        if ("admin".equals(username) && "admin".equals(password)) {
            HttpSession session = request.getSession();
            session.setAttribute("username", username);
            response.sendRedirect(request.getContextPath() + "/welcome");
        } else {
            response.sendRedirect(request.getContextPath() + "/login.jsp");
        }
    }
}

doPost方法中,我们首先获取请求中的用户名和密码。如果用户名和密码都是“admin”,我们将在Session中存储用户名,并跳转到欢迎页面。否则,我们将重定向到登录页面,提示登录失败。

3.验证登录状态

现在,我们已经在Session中存储了登录用户名。在其他页面中,我们可以通过验证Session中是否存在用户名来判断用户是否已登录。创建一个名为WelcomeServlet的Servlet,用于验证登录状态并显示欢迎信息。代码如下:

@WebServlet("/welcome")
public class WelcomeServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        if (session.getAttribute("username") != null) {
            String username = (String) session.getAttribute("username");
            response.getWriter().append("Welcome, " + username + "!");
        } else {
            response.sendRedirect(request.getContextPath() + "/login.jsp");
        }
    }
}

doGet方法中,我们首先获取Session对象,然后判断其中是否存在用户名。如果存在,我们将获取并显示欢迎信息。否则,我们将重定向到登录页面。

运行示例

在完成上述步骤之后,我们就可以在Servlet容器中启动应用程序,并通过访问http://localhost:8080/xxx/login.jsp来进入登录页面。在登录页面中,输入正确的用户名和密码可以登录成功,跳转到欢迎页面,显示欢迎信息。在欢迎页面中,如果未登录或Session过期,则跳转到登录页面。

总结

本文介绍了如何使用Servlet实现登录表单的功能。具体实现步骤包括创建登录表单、处理登录请求和验证登录状态。通过学习本文中的示例,相信您已经掌握了Servlet中的登录表单的实现方法。