java Web实现用户登录功能

打印 上一主题 下一主题

主题 887|帖子 887|积分 2661

文章目录



  • 一、纯JSP方式实现用户登录功能


    • (一)实现思路


      • 1、创建Web项目
      • 2、创建登录页面
      • 3、创建登录处理页面
      • 4、创建登录成功页面
      • 5、创建登录失败页面
      • 6、编辑项目首页

    • (三)测试结果

  • 二、JSP+Servlet方式实现用户登录功能


    • (一)实现思路
    • (二)实现步骤


      • 1、创建Web项目
      • 2、创建登录页面
      • 3、创建登录处理程序
      • 4、创建登录成功页面
      • 5、创建登录失败页面
      • 6、编辑项目首页

    • (三)测试结果

  • 三、JSP+Servlet+DB方式实现用户登录功能


    • (一)实现思路
    • (二)实现步骤


      • 1、创建数据库
      • 2、创建用户表
      • 3、创建Web项目
      • 4、创建用户实体类
      • 5、添加数据库驱动程序
      • 6、创建数据库毗连管理工具类
      • 7、创建用户数据访问类
      • 8、测试用户数据访问类


  • 四、采取MVC模式实现用户注册功能




      • 1、创建Web项目
      • 2、创建内容


一、纯JSP方式实现用户登录功能

(一)实现思路

登录页面login.jsp,输入用户名和密码后,跳转到登录处理页面doLogin.jsp进行业务逻辑处理,登录成功,跳转到登录成功页面success.jsp,否则跳转到登录失败页面failure.jsp。
(二)实现步骤
1、创建Web项目



  • 创建Java Enterprise项目,添加Web Application功能


  • 设置项目名与保存位置

  • 单击【Finish】按钮
  • 在项目布局窗口里修改Artifact名 - LoginDemo01

  • 编辑服务器设置,重新部署项目

2、创建登录页面



  • 登录页面 - login.jsp
    原代码
    <%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
    用户登录 用户登录

       
    账号
    密码

3、创建登录处理页面



  • 登录处理页面 - doLogin.jsp
    原代码
    <%
    // 获取登录表单数据
    String username = request.getParameter(“username”);
    String password = request.getParameter(“password”);
    // 判定登录是否成功
    if (username.equals(“易烊千玺”) && password.equals(“123456”)) {
    // 跳转到登录成功页面,传递用户名
    response.sendRedirect(“success.jsp?username=” + username);
    } else {
    // 跳转到登录失败页面,传递用户名
    response.sendRedirect(“failure.jsp?username=” + username);
    }
    %>
4、创建登录成功页面



  • 登录成功页面 - success.jsp
    原代码
    <%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
    登录成功 恭喜,<%=request.getParameter("username")%>,登录成功!
5、创建登录失败页面



  • 登录失败页面 - failure.jsp
    原代码
    <%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
    登录失败 遗憾,<%=request.getParameter("username")%>,登录失败!
6、编辑项目首页



  • 项目首页 - index.jsp
    原代码
    <%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
    首页 纯JSP方式实现用户登录成功能

    跳转到登录页面
(三)测试结果



  • 启动服务器,表现首页

  • 单击【跳转到登录页面】超链接

  • 输入正确的用户名和密码(易烊千玺:123456)

  • 单击【登录】按钮,跳转到登录成功页面

  • 返回登录页面,输入错误的用户名或密码

  • 单击【登录】按钮,跳转到登录失败页面

二、JSP+Servlet方式实现用户登录功能

(一)实现思路



  • 登录页面login.jsp,输入用户名和密码后,跳转到登录处理程序LoginServlet进行业务逻辑处理,登录成功,跳转到登录成功页面success.jsp,否则跳转到登录失败页面failure.jsp。
(二)实现步骤

1、创建Web项目



  • 创建Java Enterprise项目,添加Web Application功能

  • 设置项目名与保存位置

  • 单击【Finish】按钮
  • 在项目布局窗口里修改Artifact名 - LoginDemo02

  • 编辑服务器设置,重新部署项目

  • 切换到【Server】选项卡

2、创建登录页面



  • 登录页面 - login.jsp
  • 原代码
    <%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
    用户登录 用户登录

       
    账号
    密码

3、创建登录处理程序

创建net.xyx.serlvet包,在包里创建LoginServlet类
  1. package net.xyx.servlet;
  2. import javax.servlet.ServletException;
  3. import javax.servlet.annotation.WebServlet;
  4. import javax.servlet.http.HttpServlet;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import java.io.IOException;
  8. import java.net.URLEncoder;
  9. @WebServlet(name = "LoginServlet", urlPatterns = "/login")
  10. public class LoginServlet extends HttpServlet {
  11.     protected void doPost(HttpServletRequest request, HttpServletResponse response)
  12.             throws ServletException, IOException {
  13.         // 设置请求对象字符编码格式
  14.         request.setCharacterEncoding("utf-8");
  15.         // 获取登录表单数据
  16.         String username = request.getParameter("username");
  17.         String password = request.getParameter("password");
  18.         // 判断登录是否成功
  19.         if (username.equals("无心剑") && password.equals("903213")) {
  20.             // 采用重定向,跳转到登录成功页面
  21.             response.sendRedirect("success.jsp?username=" + URLEncoder.encode(username, "utf-8"));
  22.         } else {
  23.             // 采用重定向,跳转到登录失败页面
  24.             response.sendRedirect("failure.jsp?username=" + URLEncoder.encode(username, "utf-8"));
  25.         }
  26.     }
  27.     protected void doGet(HttpServletRequest request, HttpServletResponse response)
  28.             throws ServletException, IOException {
  29.         doPost(request, response);
  30.     }
  31. }
复制代码
4、创建登录成功页面



  • 登录成功页面 - success.jsp
    <%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
    登录成功 恭喜,<%=request.getParameter("username")%>,登录成功!
5、创建登录失败页面



  • 登录失败页面 - failure.jsp
    <%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
    登录失败 遗憾,<%=request.getParameter("username")%>,登录失败!
6、编辑项目首页



  • 项目首页 - index.jsp
    <%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
    首页 JSP+Servlet方式实现用户登录功能

    跳转到登录页面
(三)测试结果



  • 启动服务器,表现首页

  • 单击【跳转到登录页面】超链接

  • 输入正确的用户名和密码(易烊千玺:001128)
  • 单击【登录】按钮,跳转到登录成功页面

  • 返回登录页面,输入错误的用户名或密码
  • 单击【登录】按钮,跳转到登录失败页面

三、JSP+Servlet+DB方式实现用户登录功能

(一)实现思路

总体上采取MVC架构。登录页面login.jsp,输入用户名和密码后,跳转到登录处理程序LoginServlet进行业务逻辑处理,调用服务层,服务层调用数据访问层(DAO),毗连数据库,查询数据库,以此判定是否登录成功。登录成功,跳转到登录成功页面success.jsp,否则跳转到登录失败页面failure.jsp。
MVC 是 Model、View 和 Controller 的缩写,分别代表 Web 应用程序中的 3 种职责。
(二)实现步骤

1、创建数据库

创建数据库 - test



  • 单击【确定】按钮
2、创建用户表

创建用户表布局 - t_user

3、创建Web项目



  • 创建Java Enterprise项目,添加Web Application功能

  • 设置项目名与保存位置

  • 单击【Finish】按钮
  • 在项目布局窗口里修改Artifact名 - LoginDemo03

  • 编辑服务器设置,重新部署项目

  • 切换到【Server】选项卡

4、创建用户实体类



  • 创建net.xyx.bean包,然后在包里创建User类,跟用户表(t_user)对应,简称ORM

    package net.xyx.bean;
    import java.util.Date;
    /**

    • 功能:用户实体类
    • 作者:xyx
    • 日期:2023年05月19日
      */
      public class User {
      private int id;
      private String username;
      private String password;
      private String telephone;
      private Date registerTime;
      public int getId() {
      return id;
      }
      public void setId(int id) {
      this.id = id;
      }
      public String getUsername() {
      return username;
      }
      public void setUsername(String username) {
      this.username = username;
      }
      public String getPassword() {
      return password;
      }
      public void setPassword(String password) {
      this.password = password;
      }
      public String getTelephone() {
      return telephone;
      }
      public void setTelephone(String telephone) {
      this.telephone = telephone;
      }
      public Date getRegisterTime() {
      return registerTime;
      }
      public void setRegisterTime(Date registerTime) {
      this.registerTime = registerTime;
      }
      @Override
      public String toString() {
      return “User{” +
      “id=” + id +
      “, username='” + username + ‘’’ +
      “, password='” + password + ‘’’ +
      “, telephone='” + telephone + ‘’’ +
      “, registerTime=” + registerTime +
      ‘}’;
      }
      }

5、添加数据库驱动程序



  • 在WEB-INF目录下创建lib目录,添加数据库驱动程序
  • 将数据库驱动程序(jar包)作为库添加到项目


6、创建数据库毗连管理工具类



  • 创建net.xyx.dbutils包,在包里创建ConnectionManager类

    package net.xyx.dbutils;
    import javax.swing.*;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    /**

    • 功能:数据库毗连管理类
    • 作者:xyx
    • 日期:2020年06月05日
      */
      public class ConnectionManager {
      private static final String DRIVER = “com.mysql.jdbc.Driver”; // 数据库驱动程序
      private static final String URL = “jdbc:mysql://localhost:3306/student/test?useSSL=false”; // 数据库同一资源标识符
      private static final String USER = “root”; // 数据库用户
      private static final String PASSWORD = “1”; // 数据库密码
      //私有化构造方法,拒绝实例化
      private ConnectionManager() {
      }
      /**

      • 获取数据库毗连静态方法

      • @return 数据库毗连对象
        */
        public static Connection getConnection() {
        // 界说数据库毗连
        Connection conn = null;
        try {
        // 安装数据库驱动程序
        Class.forName(DRIVER);
        // 获取数据库毗连
        conn = DriverManager.getConnection(URL, USER, PASSWORD);
        } catch (ClassNotFoundException e) {
        e.printStackTrace();
        } catch (SQLException e) {
        e.printStackTrace();
        }
        // 返回数据库毗连
        return conn;
        }
      /**
           

      • 关闭数据毗连静态方法

      • @param conn
        */
        public static void closeConnection(Connection conn) {
        // 判定数据库毗连是否非空
        if (conn != null) {
        try {
        // 判定毗连是否未关闭
        if (!conn.isClosed()) {
        // 关闭数据库毗连
        conn.close();
        }
        } catch (SQLException e) {
        e.printStackTrace();
        }
        }
        }
      /**
           

      • 主方法:测试两个静态方法

      • @param args
        */
        public static void main(String[] args) {
        // 获取数据库毗连
        Connection conn = getConnection();
        // 判定数据库毗连是否成功
        if (conn != null) {
        JOptionPane.showMessageDialog(null, “恭喜,数据库毗连成功!”);
        } else {
        JOptionPane.showMessageDialog(null, “遗憾,数据库毗连失败!”);
        }
        // 关闭数据库毗连
        closeConnection(conn);
        }
        }


7、创建用户数据访问类



  • 在net.xyx根包里创建dao子包,然后在子包里创建UserDao类
    package net.xyx.dao;
    import net.huawei.bean.User;
    import net.huawei.dbutils.ConnectionManager;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    /**

    • 功能:用户数据访问类
    • 作者:xyx
    • 日期:2023年05月19日
      /
      public class UserDao {
      /
      *

      • 用户登录方法
      • @param username
      • @param password
      • @return 用户对象(非空:登录成功,否则登录失败)
        */
        public User login(String username, String password) {
        // 声明用户对象
        User user = null;
        // 获取数据库毗连
        Connection conn = ConnectionManager.getConnection();
        try {
        // 界说SQL字符串
        String strSQL = “SELECT * FROM t_user WHERE username = ? AND password = ?”;
        // 创建准备语句对象
        PreparedStatement pstmt = conn.prepareStatement(strSQL);
        // 设置占位符
        pstmt.setString(1, username);
        pstmt.setString(2, password);
        // 实行查询,返回结果集
        ResultSet rs = pstmt.executeQuery();
        // 判定结果集是否为空
        if (rs.next()) {
        // 创建用户对象
        user = new User();
        // 利用当前记载字段值来设置用户对象属性
        user.setId(rs.getInt(“id”));
        user.setUsername(rs.getString(“username”));
        user.setPassword(rs.getString(“password”));
        user.setTelephone(rs.getString(“telephone”));
        user.setRegisterTime(rs.getTimestamp(“register_time”));
        }
        } catch (SQLException e) {
        System.err.println(e.getMessage());
        } finally {
        // 关闭数据库毗连
        ConnectionManager.closeConnection(conn);
        }
        // 返回用户对象
        return user;
        }
        }


8、测试用户数据访问类



  • 在net.xyx根包里创建test子类,在子包里创建TestUser
    package net.xyx.test;
    import net.xyx.bean.User;
    import net.xyx.dao.UserDao;
    import org.junit.Test;
    /**

    • 功能:测试用户数据访问类
    • 作者:xyx
    • 日期:2023年05月19日
      */
      public class TestUserDao {
      @Test
      public void testLogin() {
      String username = “无心剑”;
      String password = “12345”;
      1. // 创建用户数据访问对象
      2. UserDao userDao = new UserDao();
      3. // 调用登录方法,返回用户对象
      4. User user = userDao.login(username, password);
      5. // 判断用户登录是否成功
      6. if (user != null) { // 成功
      7.      System.out.println("恭喜,用户[" + username + "]登录成功~");
      8. } else { // 失败
      9.      System.out.println("遗憾,用户[" + username + "]登录失败~");
      10. }
      复制代码
      }
      }

  • 修改用户名和密码,再次运行程序,提示登录失败
四、采取MVC模式实现用户注册功能

1、创建Web项目



  • 创建Java Enterprise项目,添加Web Application功能



  • 设置项目名与保存位置

  • 在项目布局窗口里修改Artifact名 - register

  • 编辑服务器设置,重新部署项目

2、创建内容




  • 首页

  • 注册界面

  • 随后注册成功和失败都会弹出相应的界面

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

滴水恩情

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表