zoukankan      html  css  js  c++  java
  • 验证用户名密码:Servlet+Maven+Mysql+jdbc+Jsp

    前言:

    模拟我们日常使用网页使用账号密码进行登录网页,验证用户名和密码

    用户数据表:

    drop table if exists t_user;
    
    create table t_user(
        id int(10) primary key auto_increment,
        username varchar(32) not null unique,
        password varchar(32) not null,
        realname varchar(128)
    );
    insert into t_user(username,password,realname) values('zhangzhixi','zhixi158','root');
    insert into t_user(username,password,realname) values('zhangsan','123','普通用户');
    
    select * from t_user;

    Maven的依赖:

    <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        <!--servlet依赖-->
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>4.0.1</version>
        </dependency>
        <!--jsp依赖-->
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.0</version>
        </dependency>
        <!--mysql-jdbc依赖-->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.48</version>
        </dependency>
      </dependencies>

    JSP页面:登录页面-成功页面-失败页面:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <form action="${pageContext.request.contextPath}/login" method="post">
        账号
        <input type="text" name="username"><br>
        密码
        <input type="password" name="password"><br>
        <input type="submit" value="登录">
    </form>
    </body>
    </html>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    欢迎您:
    欢迎您:${pageContext.request.getAttribute("user")}用户
    用户 </body> </html>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    登录失败,请检查用户名密码是否正确
    </body>
    </html>

    Servlet验证:

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.*;
    /**
     * @author zhangzhixi
     */
    public class LoginServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //解决乱码问题
            request.setCharacterEncoding("UTF-8");
            response.setContentType("text/html;charset=UTF-8");
            //获取用户在登录页面输入的值
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            PrintWriter out = response.getWriter();
    
            Connection conn = null;
            PreparedStatement ps = null;
            ResultSet rs = null;
            try {
                //1、注册驱动
                Class.forName("com.mysql.jdbc.Driver");
                //2、获取连接
                conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/donglijiedian", "root", "zhixi158");
                //3、获取预编译的数据库操作对象
                String sql = "select * from t_user where username=? and password=?";
                ps = conn.prepareStatement(sql);
                ps.setString(1, username);
                ps.setString(2, password);
                //4、执行sql
                rs = ps.executeQuery();
                //5、处理查询结果
                if (rs.next()) {
                    //有数据代表有这个用户
                    String realname = rs.getString("realname");
                    request.setAttribute("user", realname);
                    request.getRequestDispatcher("welcome.jsp").forward(request, response);
                } else {
                    //没有这个用户
                    System.out.println("没有这个用户");
                    request.getRequestDispatcher("error.jsp").forward(request, response);
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                //6、释放资源
                if (rs != null) {
                    try {
                        rs.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if (ps != null) {
                    try {
                        ps.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if (conn != null) {
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
        }
    }

    测试:

  • 相关阅读:
    HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported
    【MySQL用法】Mysql数据库连接池 [ druid ] 的所有配置介绍
    冒泡排序
    com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 20, maxActive 20
    判断两个线段是否相交02
    判断两个线段是否相交
    unity小地图制作___按比例尺图标布局
    Unity---Inspector面板自定义
    unity物理检测的几种方式
    unity音量设置(同时设置到多个物体上)——引伸语言设置
  • 原文地址:https://www.cnblogs.com/zhangzhixi/p/14135486.html
Copyright © 2011-2022 走看看