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

请稍等,我将为您详细讲解“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日

相关文章

  • Java代码优化的作用是什么?

    Java代码优化指的是对Java程序进行分析和调整,以减少资源消耗、提高程序性能和扩展性。代码优化的目的是让程序更快、更节省资源、更易于维护和扩展。下面是Java代码优化的应用攻略: 第一步:性能分析 Java代码的性能才是我们关注的重点,因此我们需要分析程序,找到程序的瓶颈。可以使用一些工具来分析程序的性能,如JProfiler和Java Mission …

    Java 2023年5月11日
    00
  • java异步调用的4种实现方法

    Java异步调用的4种实现方法 1. 回调函数 回调函数是一种异步调用的解决方案之一,在Java中可以通过接口来实现回调函数。 具体实现方式是定义一个接口,在异步任务完成后调用接口的方法,将需要传递的数据传递给回调函数,执行回调函数完成后续逻辑处理。 如下是一个简单的示例: public interface Callback{ void onComplete…

    Java 2023年5月18日
    00
  • 数据库基本操作语法归纳总结

    下面是关于“数据库基本操作语法归纳总结”的完整攻略。 什么是数据库基本操作语法 数据库基本操作语法是指在对数据库进行增删改查操作时所使用的语法,包括了常用的SQL语句,比如:SELECT、INSERT、UPDATE、DELETE等。 基本操作语法归纳总结 下面是针对数据库基本操作语法的归纳总结: SELECT语句 SELECT语句用于查询数据,可以从一个或多…

    Java 2023年5月19日
    00
  • 学习Java的Date、Calendar日期操作

    针对学习Java的Date、Calendar日期操作的完整攻略,可以从以下几个方面展开讲解: 1. Date类介绍 java.util.Date类是Java中处理日期和时间的一个类,它提供了一些方法可以帮助你操作日期和时间。它包含从1970年1月1日开始的毫秒数,并可以将这个毫秒数转换为日期和时间。 // 获取当前时间 Date date = new Dat…

    Java 2023年6月1日
    00
  • JAVA创建和销毁对象的方法

    下面是关于JAVA创建和销毁对象的方法的详细攻略: 一、对象创建方法 对象的创建可以使用“new”关键字来实现。具体方法如下: 1.1 声明对象 首先需要声明一个类,并指定该类的数据类型。例如: public class Person { private String name; private int age; public Person(String n…

    Java 2023年5月26日
    00
  • Java中获取时间戳的三种方式对比实现

    Java中获取时间戳的三种方式对比实现 时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数,它在计算机领域中有着广泛的应用场景,比如记录用户的登录时间、订单生成时间等等。在Java中,获取时间戳有三种方式,包括: 1.使用System类的currentTimeMillis()方法2.使用Date类的getTime()方法3.使用I…

    Java 2023年5月20日
    00
  • Lombok在idea中的使用教程

    这里我将详细讲解 Lombok 在idea中的使用教程。 Lombok是什么 Lombok 是一个简化 Java 代码的工具,通过使用注解来消除一些必须有但显得很臃肿的 Java 代码。 安装Lombok 首先,我们需要在项目的 maven 配置文件中,添加如下依赖: <dependency> <groupId>org.project…

    Java 2023年5月26日
    00
  • spring boot 使用Mybatis-plus查询方法解析

    Spring Boot使用Mybatis-Plus查询方法解析 Mybatis-Plus简介 Mybatis-Plus是一个Mybatis的增强工具,在Mybatis的基础上扩展了一些实用的功能,例如分页、逻辑删除、自动填充等。 配置Mybatis-Plus 在Spring Boot项目中使用Mybatis-Plus需要先配置相关依赖,可以在pom.xml文…

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