Servlet+JavaBean+JSP打造Java Web注册与登录功能

yizhihongxing

请稍等,我将为您详细讲解“Servlet+JavaBean+JSP打造Java Web注册与登录功能”的完整攻略。

1. 实现功能介绍

本次Java Web注册与登录功能实现,主要涉及三个模块:Servlet、JavaBean和JSP。其中Servlet实现用户请求的处理和响应,JavaBean实现数据的封装和处理,而JSP则是负责页面的显示。

具体实现的功能如下:

  1. 注册功能:输入用户名和密码,将其保存到数据库中,提示注册成功或失败;
  2. 登录功能:输入用户名和密码,与数据库中的信息进行比对,如果一致则进入主页面,否则提示登录失败;
  3. 注销功能:用户在主页面中可以选择退出登录,返回登录页面。

2. 实现过程

2.1 数据库准备

首先,我们需要准备一个MySQL数据库,用来存储用户信息。创建一个名为webuser的数据库,并创建一个user表,表结构如下:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

2.2 创建JavaBean

接着,我们需要创建一个JavaBean,用于封装用户信息。我们创建一个名为User的类,类中包含idusernamepassword三个属性,以及相应的getter和setter方法。代码示例如下:

public class User {
    private int id;
    private String username;
    private String password;

    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;
    }
}

2.3 创建Servlet

接下来,我们创建一个Servlet,用于处理用户请求,并将数据保存到数据库中。这里我们创建一个名为RegisterServlet的Servlet,代码示例如下:

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

    /**
     * @see HttpServlet#HttpServlet()
     */
    public RegisterServlet() {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    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");
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        UserDao userDao = new UserDaoImpl();
        boolean result = userDao.addUser(user);
        if(result) {
            response.sendRedirect("register_success.jsp");
        } else {
            response.sendRedirect("register_fail.jsp");
        }
    }
}

上述代码中,我们通过doPost()方法获取用户注册信息,并将其封装为一个User对象,然后调用UserDao接口的addUser()方法将其存入到数据库中。最后判断操作结果,保存成功则跳转到register_success.jsp,否则跳转到register_fail.jsp

UserDao接口和实现类的代码如下:

public interface UserDao {
    public boolean addUser(User user);
    public User getUser(String username);
}

public class UserDaoImpl implements UserDao {

    @Override
    public boolean addUser(User user) {
        Connection conn = null;
        PreparedStatement ps = null;
        try {
            conn = DbUtil.getConnection();
            String sql = "INSERT INTO user (username,password) VALUES (?,?)";
            ps = conn.prepareStatement(sql);
            ps.setString(1, user.getUsername());
            ps.setString(2, user.getPassword());
            int result = ps.executeUpdate();
            if(result > 0) {
                return true;
            }
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            DbUtil.release(conn, ps, null);
        }
        return false;
    }

    @Override
    public User getUser(String username) {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            conn = DbUtil.getConnection();
            String sql = "SELECT * FROM user WHERE username=?";
            ps = conn.prepareStatement(sql);
            ps.setString(1, username);
            rs = ps.executeQuery();
            if(rs.next()) {
                User user = new User();
                user.setId(rs.getInt("id"));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                return user;
            }
        } catch(Exception e) {
            e.printStackTrace();
        } finally {
            DbUtil.release(conn, ps, rs);
        }
        return null;
    }
}

2.4 创建JSP页面

最后,我们需要创建JSP页面,用于显示页面内容和接收用户输入。这里我们创建三个页面:分别为register.jspregister_success.jspregister_fail.jsp

register.jsp代码示例如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户注册</title>
</head>
<body>
    <h1>用户注册</h1>
    <form action="register" method="post">
        <table>
            <tr>
                <td>用户名:</td>
                <td><input type="text" name="username"></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" name="password"></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="注册"></td>
            </tr>
        </table>
    </form>
</body>
</html>

register_success.jspregister_fail.jsp比较简单,这里就不贴出代码了。

2.5 实现登录和注销功能

完成上述注册功能后,我们接着实现登录和注销功能。这里我们创建一个名为LoginServlet的Servlet,用于处理登录请求,代码示例如下:

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

    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginServlet() {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    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");
        UserDao userDao = new UserDaoImpl();
        User user = userDao.getUser(username);
        if(user != null && user.getPassword().equals(password)) {
            HttpSession session = request.getSession();
            session.setAttribute("user", username);
            response.sendRedirect("main.jsp");
        } else {
            response.sendRedirect("login_fail.jsp");
        }
    }
}

我们通过调用UserDao接口的getUser()方法从数据库中获取用户信息,并判断用户名和密码是否匹配。如果匹配成功,则将用户名保存到Session中,跳转到main.jsp页面。否则跳转到login_fail.jsp页面。

为了实现注销功能,我们还需要创建一个名为LogoutServlet的Servlet,代码示例如下:

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

    /**
     * @see HttpServlet#HttpServlet()
     */
    public LogoutServlet() {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        session.removeAttribute("user");
        response.sendRedirect("login.jsp");
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

上述代码我们通过调用HttpSessionremoveAttribute()方法删除Session中的用户信息,然后将页面重定向到login.jsp

注:main.jsplogin.jsp这两个页面也需要我们自己编写。

2.6 示例

这里提供两个小例子,一个演示了如何注册用户,一个演示了如何登录,详见下方。

示例1:注册用户

  1. 访问http://localhost:8080/WebRegister/register.jsp,进入注册页面;
  2. 在注册页面输入用户名和密码,并点击“注册”按钮;
  3. 注册成功则跳转到register_success.jsp页面,否则跳转到register_fail.jsp页面。

示例2:用户登录

  1. 访问http://localhost:8080/WebRegister/login.jsp,进入登录页面;
  2. 在登录页面输入用户名和密码,并点击“登录”按钮;
  3. 如果用户名和密码匹配,则进入main.jsp页面,否则跳转到login_fail.jsp页面;
  4. main.jsp页面中,用户可以选择退出登录,返回login.jsp页面。

3. 总结

通过以上步骤实现了Java Web注册与登录功能,我们使用了Servlet、JavaBean和JSP三个模块来完成这个功能,分别负责请求处理、数据封装和页面显示。同时,我们还使用了MySQL作为数据存储方式,并通过JDBC连接数据库。最后,提供了两个小例子来演示这个功能的使用,供读者参考。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Servlet+JavaBean+JSP打造Java Web注册与登录功能 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 利用Spring Data MongoDB持久化文档数据的方法教程

    当使用Spring Data MongoDB进行文档数据持久化时,首先需要创建一个实体类,该实体类中需要包含一些注释以告知Spring Data MongoDB如何将该实体类映射到MongoDB集合。 例如,考虑以下实体类: @Document(collection = "myCollection") public class MyEnt…

    Java 2023年5月20日
    00
  • Kafka使用Java客户端进行访问的示例代码

    下面是Kafka使用Java客户端进行访问的示例代码的完整攻略。 环境搭建 首先要确保本地环境已经安装了以下软件: JDK 1.8+ Apache Kafka 2.7.0+ Maven 3.0+ 在确保以上软件环境配置完成后,开始进行Kafka使用Java客户端进行访问的示例代码的操作。 示例一:发送消息到Kafka 创建maven项目 首先,在本地创建一个…

    Java 2023年5月20日
    00
  • java多线程批量拆分List导入数据库的实现过程

    下面我就详细讲解一下“Java多线程批量拆分List导入数据库的实现过程”。 1. 提供批量导入数据的方法 为了实现多线程批量拆分List导入数据库,我们需要先提供一个批量导入数据的方法。这个方法的实现要求使用JDBC批量操作API,能够一次性插入多条数据到数据库中。下面是一个示例: public class MyDao { public void batc…

    Java 2023年5月19日
    00
  • SpringBoot应用的打包和发布实现

    打包和发布Spring Boot应用可以使用多种方法,下面是一些常见的方法: 方法一:使用Maven插件打包并上传到服务器 步骤一:使用Maven构建Spring Boot应用 在pom.xml文件中添加以下依赖: <!– 引入Spring Boot的pom依赖 –> <parent> <groupId>org.spr…

    Java 2023年5月19日
    00
  • Java根据控制台实现定位异常

    下面是关于“Java根据控制台实现定位异常”的完整攻略: 1. 什么是控制台? 控制台指的是操作系统提供的一种命令行界面,用户可以在其中通过命令执行一些操作或查看一些信息。在Java中,System.out和System.err就是控制台输出的方式。 2. 为什么要根据控制台来定位异常? 在Java程序运行时,如果发生异常,通常会在控制台输出相关的错误信息。…

    Java 2023年5月27日
    00
  • InputStreamReader和BufferedReader用法及实例讲解

    InputStreamReader和BufferedReader用法及实例讲解 在Java中,读取文件或者网络数据时,我们通常会用到InputStreamReader和BufferedReader这两个类。InputStreamReader是将字节流转换成字符流,而BufferedReader则是为了加速读取字符流而存在的。下面我们将逐步讲解这两个类的用法及…

    Java 2023年5月20日
    00
  • Java中Date类和Calendar类的常用实例小结

    我来为你详细讲解 Java 中 Date 类和 Calendar 类的常用实例小结。 一、Date类的常用实例 1. 获取当前的日期和时间 使用 java.util.Date 类提供的无参构造方法可以获取当前的日期和时间。例如: Date date = new Date(); // 获取当前的日期和时间 2. 格式化日期 使用 SimpleDateForma…

    Java 2023年5月20日
    00
  • Java反转字符串的10种方法

    Java反转字符串的10种方法 在Java中,反转字符串是非常常见的操作。在本篇攻略中,我们将会讲解10种Java反转字符串的方法,并详细说明它们的使用场景。以下是我们将要讲解的10种方法: StringBuilder反转法 StringBuffer反转法 toCharArray()反转法 递归反转法 charAt()反转法 CharArray反转法 Str…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部