Servlet实现简单的用户登录功能实例代码

下面我就为你介绍一下如何用Servlet实现简单的用户登录功能实例代码的攻略。

下面我就为你介绍一下如何用Servlet实现简单的用户登录功能实例代码的攻略。

一、创建JavaWeb工程

首先,我们需要创建一个JavaWeb工程。你可以选择Eclipse或者Intellij IDEA等开发工具来创建新的JavaWeb工程。并在项目中添加相关的Servlet包。

二、创建登录页面

在Web应用程序中添加一个HTML页面作为登录页面(login.html),该页面应该包含一个表单,该表单应该包含用于输入用户名和密码的文本框。

<!DOCTYPE html>
<html>
<head>
    <title>Login Page</title>
</head>
<body>
    <h3>Login Form</h3>
    <form action="login" method="post">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username"/><br>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password"/><br>
        <input type="submit" value="Login"/>
    </form>
</body>
</html>

三、编写Servlet代码

  1. 创建一个Servlet来处理登录请求。在上一步中登录表单的action属性指向了login的Servlet,因此我们需要创建一个名为Login的Servlet。
@WebServlet("/login")
public class LoginServlet extends HttpServlet {

    @Override
    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)) {
            // 验证通过,重定向到欢迎页面
            response.sendRedirect("welcome.jsp");
        } else {
            // 验证失败,转发回登录页面
            RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("login.html");
            dispatcher.forward(request, response);
        }
    }
}

该代码获取了登录表单中的用户名和密码参数,并将它们与事先固定好的用户名和密码进行比较。如果用户名和密码匹配,则重定向到“welcome.jsp”页面,否则转发回登录页面。

  1. 创建一个欢迎页面(welcome.jsp),用于验证成功后显示。
<!DOCTYPE html>
<html>
<head>
    <title>Welcome Page</title>
</head>
<body>
    <h3>Welcome!</h3>
</body>
</html>

四、部署和运行应用程序

最终,我们需要将应用程序部署到Servlet容器中,并启动容器来测试应用程序,浏览器中访问http://localhost:8080/login.html来进入登录页面,输入正确的用户名和密码,登录后进入欢迎页面。

示例说明:

假设我们需要在登录页面添加验证码,可以添加一段代码生成验证码并将其保存到会话中,进入Servlet后比较验证码,判断是否输入正确。可以参考以下代码:

// 生成验证码
String verifyCode = VerifyCodeUtil.generateVerifyCode(4);
// 设置会话属性,用于校验输入的验证码
request.getSession().setAttribute("verifyCode", verifyCode);

// 生成验证码图片
BufferedImage image = VerifyCodeUtil.getImage(verifyCode, 80, 30);
// 将图片输出给客户端
response.setContentType("image/jpeg");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", -1);
ImageIO.write(image, "jpeg", response.getOutputStream());

其中,VerifyCodeUtil是一个自定义的工具类,用于生成验证码和验证码图片。

另外,我们还可以使用Filter来控制用户访问页面的权限,例如只允许登录用户访问某个页面。可以参考以下代码:

@WebFilter(filterName = "LoginFilter", urlPatterns = { "*.jsp" })
public class LoginFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;
        HttpSession session = request.getSession(false);

        String uri = request.getRequestURI();

        // 判断是否已登录
        if (session == null || session.getAttribute("user") == null) {
            // 未登录,重定向到登录页面
            response.sendRedirect(request.getContextPath() + "/login.html");
        } else {
            // 已登录,放行请求
            chain.doFilter(request, response);
        }
    }
}

该代码在每次请求jsp页面时判断用户会话是否存在,如果不存在则重定向到登录页面,否则放行请求。需要注意的是,该代码只控制了jsp页面的访问,如果需要控制其他资源的访问,还需要在urlPatterns中添加相应的URL路径。

本文标题为:Servlet实现简单的用户登录功能实例代码

基础教程推荐