前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >24. Servlet入门 - 用户登录案例

24. Servlet入门 - 用户登录案例

作者头像
Devops海洋的渔夫
发布2021-11-12 09:30:34
6200
发布2021-11-12 09:30:34
举报
文章被收录于专栏:Devops专栏

24. Servlet入门 - 用户登录案例

前言

在上一篇章中,我们已经实现了用户注册的案例,那么下面我们接着用户注册的基础,继续来完成 用户登录 案例。

案例-登录

1.需求

img

  • 点击登录按钮, 进行登录.
  • 登录成功,显示login Success
  • 登录失败,显示login failed

2.思路

image-20191209160307597

3.代码实现

3,1 页面的准备 login.html

image-20210215182650717

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
    <!--  提交用户登录的表单请求  -->
    <form action="/userDemo/login" method="post">
        用户名<input type="text" name="username"><br>
        密码<input type="text" name="password"><br>
        <input type="submit" value="登录">
    </form>
</body>
</html>

启动 tomcat 测试访问 login.html 如下:

image-20210215182733967

好了,此时我们已经写好了登录页面,下面我们来处理以下登录的业务Servlet

3.2 编写 LoginServlet 处理登录业务

image-20210215184057652

代码语言:javascript
复制
package com.servlet;

import com.pojo.User;
import com.utils.DruidUtil;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;

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 java.io.IOException;
import java.sql.SQLException;

/**
 * @author Aron.li
 * @date 2021/2/15 18:29
 */
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        try {
            //1. 解决乱码
            //解决请求参数的中文乱码
            request.setCharacterEncoding("UTF-8");
            //解决响应中文乱码
            response.setContentType("text/html;charset=utf-8");

            //2. 获取请求参数username和password
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            System.out.println("登录用户名: " + username + ", 密码:" + password);

            //3. 连接数据库校验用户名和密码,也就是执行查询的SQL语句
            QueryRunner queryRunner = new QueryRunner(DruidUtil.getDataSource());
            String sql = "select * from user where username=? and password=?";
            //执行查询,查询一条数据,封装到User中
            User user = queryRunner.query(sql, new BeanHandler<>(User.class), username, password);
            System.out.println("查询到的user数据: " + user);

            //4.存在user数据,则登录成功,否之,失败
            if (user != null){
                // 登录成功,则跳转至 index.html 页面
                response.sendRedirect("/userDemo/index.html");
            }else {
                // 登录失败
                response.getWriter().write("登录失败");
            }

        } catch (Exception e) {
            // 登录失败
            response.getWriter().write("登录失败");
            // 抛出运行时异常
            throw new RuntimeException(e.getMessage());
        }

    }
}
3.3 测试执行
  • 测试登录成功

image-20210215184214574

image-20210215184226773

后台数据库查询数据如下:

image-20210215184253967

  • 测试登录失败

image-20210215184317350

image-20210215184329315

后台查询的数据如下:

image-20210215184418834

4.小结

  1. 本质: 就是根据用户名和密码查询数据库
  2. 思路(LoginServlet)
    • 获得用户输入用户名和密码
    • 使用DBUtils根据用户名和密码查询数据库 封装成User对象
    • 判断是否登录成功(判断User是否为null)
    • 响应
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海洋的渔夫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 24. Servlet入门 - 用户登录案例
    • 前言
      • 案例-登录
        • 1.需求
        • 2.思路
        • 3.代码实现
        • 4.小结
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档