• 【JAVA】网页版登录注册系统


    目录

    前言

    一、环境的搭建

    二、功能实现

    1、登录功能

    2、注册功能

    【注意】

    总结 


    前言

    JAVA实现网页的登录与注册

    一、环境的搭建

    1、创建Maven Web工程,参考【JAVA】Web服务器—Tomcat_Lx_Hy_的博客-CSDN博客

    2、导入所需要的坐标(servlet、IOUtils工具类、MyBatis、MySQL、tomcat插件)

    1. <dependencies>
    2. <dependency>
    3. <groupId>javax.servletgroupId>
    4. <artifactId>javax.servlet-apiartifactId>
    5. <version>3.1.0version>
    6. <scope>providedscope>
    7. dependency>
    8. <dependency>
    9. <groupId>commons-iogroupId>
    10. <artifactId>commons-ioartifactId>
    11. <version>2.6version>
    12. dependency>
    13. <dependency>
    14. <groupId>org.mybatisgroupId>
    15. <artifactId>mybatisartifactId>
    16. <version>3.5.5version>
    17. dependency>
    18. <dependency>
    19. <groupId>mysqlgroupId>
    20. <artifactId>mysql-connector-javaartifactId>
    21. <version>5.1.32version>
    22. dependency>
    23. dependencies>
    24. <build>
    25. <plugins>
    26. <plugin>
    27. <groupId>org.apache.tomcat.mavengroupId>
    28. <artifactId>tomcat7-maven-pluginartifactId>
    29. <version>2.2version>
    30. <configuration>
    31. <port>8080port>
    32. configuration>
    33. plugin>
    34. plugins>
    35. build>

    3、准备静态页面,因为此项目不侧重前端页面设计所以直接给出HTML

     4、在Navicat中创建数据库、tb_user表用于存储用户信息

     

     5、编写mybatis-config.xml核心配置文件

    1. configuration
    2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4. <configuration>
    5. <typeAliases>
    6. <package name="com.Server.pojo"/>
    7. typeAliases>
    8. <environments default="development">
    9. <environment id="development">
    10. <transactionManager type="JDBC"/>
    11. <dataSource type="POOLED">
    12. <property name="driver" value="com.mysql.jdbc.Driver"/>
    13. <property name="url" value="jdbc:mysql:///自己数据库的表名?useSSL=false&useServerPrepStmts=true"/>
    14. <property name="username" value="自己的MySQL用户名"/>
    15. <property name="password" value="自己的MySQL密码"/>
    16. dataSource>
    17. environment>
    18. environments>
    19. <mappers>
    20. <package name="com.Server.mapper"/>
    21. mappers>
    22. configuration>

    5、创建UserMapper接口

    1. public interface UserMapper {
    2. }

    6、定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下(详细可参考【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客

    1. mapper
    2. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    4. //命名空间:UserMapper所在位置
    5. <mapper namespace="com.Server.mapper.UserMapper">
    6. mapper>

    7、创建Web文件夹及两个功能的实现类

     

    8、创建User实体类

     

    1. public class User {
    2. private Integer id;
    3. private String username;
    4. private String password;
    5. public Integer getId() {
    6. return id;
    7. }
    8. public void setId(Integer id) {
    9. this.id = id;
    10. }
    11. public String getUsername() {
    12. return username;
    13. }
    14. public void setUsername(String username) {
    15. this.username = username;
    16. }
    17. public String getPassword() {
    18. return password;
    19. }
    20. public void setPassword(String password) {
    21. this.password = password;
    22. }
    23. @Override
    24. public String toString() {
    25. return "User{" +
    26. "id=" + id +
    27. ", username='" + username + '\'' +
    28. ", passwords='" + password + '\'' +
    29. '}';
    30. }
    31. }

    二、功能实现

    1、登录功能

    在UserMapper接口中编写出登录功能所需的查询接口

    1. //根据用户名和密码查询用户
    2. User selectByConditionSingle_Log(@Param("username") String username, @Param("password") String password);

    再在对应的UserMapper.xml中编写出对应的SQL语句,用于在数据库中查询信息

    1. <select id="selectByConditionSingle_Log" resultType="com.Server.pojo.User">
    2. select id, username, password
    3. from tb_user
    4. where username = #{username}
    5. and password = #{password}
    6. select>

    最后在LoginServlet中编写实现方法

    (详细可参考【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客 和【JAVA】MyBatis下篇_Lx_Hy_的博客-CSDN博客 【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客、【JAVA】Servlet_Lx_Hy_的博客-CSDN博客

    1. @WebServlet("/loginServlet")
    2. public class LoginServlet extends HttpServlet {
    3. @Override
    4. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    5. //接收用户名和密码
    6. String username = request.getParameter("username");
    7. String password = request.getParameter("password");
    8. //获取SqlSessionFactory对象
    9. String resource = "mybatis-config.xml";
    10. InputStream inputStream = Resources.getResourceAsStream(resource);
    11. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    12. //获取SqlSession对象
    13. SqlSession sqlSession = sqlSessionFactory.openSession();
    14. //获取UserMapper
    15. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    16. //调用方法
    17. User user = userMapper.selectByConditionSingle_Log(username, password);
    18. //释放资源
    19. sqlSession.close();
    20. response.setContentType("text/html;charset=utf-8");
    21. PrintWriter writer = response.getWriter();
    22. //判断user是否为null
    23. if (user != null) {
    24. //登陆成功
    25. writer.write("登陆成功");
    26. } else {
    27. //登陆失败
    28. writer.write("登陆失败");
    29. }
    30. }
    31. @Override
    32. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    33. this.doGet(request, response);
    34. }
    35. }

    2、注册功能

    在UserMapper接口中编写出注册功能所需的查询接口及添加接口

    1. //判断用户名是否已经存在
    2. User selectByUsername(String username);
    3. //添加用户数据
    4. void add(User user);

    再在对应的UserMapper.xml中编写出对应的SQL语句,用于在数据库中查询信息及添加信息

    1. <select id="selectByUsername" resultType="com.Server.pojo.User">
    2. select id, username, password
    3. from tb_user
    4. where username = #{username}
    5. select>
    6. <insert id="add">
    7. insert into tb_user
    8. values (null, #{username}, #{password})
    9. insert>

    最后在RegisterServlet中编写实现方法

    (详细可参考【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客 和【JAVA】MyBatis下篇_Lx_Hy_的博客-CSDN博客 【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客、【JAVA】Servlet_Lx_Hy_的博客-CSDN博客

    1. @WebServlet("/registerServlet")
    2. public class RegisterServlet extends HttpServlet {
    3. @Override
    4. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    5. //接收用户数据
    6. String username = request.getParameter("username");
    7. String password = request.getParameter("password");
    8. //封装用户对象
    9. User user = new User();
    10. user.setUsername(username);
    11. user.setPassword(password);
    12. //获取SqlSessionFactory对象
    13. String resource = "mybatis-config.xml";
    14. InputStream inputStream = Resources.getResourceAsStream(resource);
    15. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    16. //获取SqlSession对象
    17. SqlSession sqlSession = sqlSessionFactory.openSession();
    18. //获取UserMapper
    19. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    20. //调用方法
    21. User u = userMapper.selectByUsername(username);
    22. response.setContentType("text/html;charset=utf-8");
    23. //判断用户对象信息
    24. if (u == null) {
    25. //用户名不存在
    26. userMapper.add(user);
    27. sqlSession.commit();
    28. response.getWriter().write("注册成功");
    29. sqlSession.close();
    30. } else {
    31. //用户名存在给出信息
    32. response.getWriter().write("用户名已存在");
    33. }
    34. }
    35. @Override
    36. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    37. this.doGet(request, response);
    38. }
    39. }

    【注意】

    SqlSessionFactory只能创建一次,所以需要将LoginServlet和RegisterServlet中创建的工厂类抽取为一个工具类

    【方法】

    1、创建一个SqlSessionFactoryUtils

    2、在编写静态代码块用来存放SqlSessionFactory的创建,再创建一个public方法用于返回创建的工厂

    1. public class SqlSessionFactoryUtils {
    2. private static SqlSessionFactory sqlSessionFactory;
    3. //静态代码块,只执行一次
    4. static {
    5. try {
    6. String resource = "mybatis-config.xml";
    7. InputStream inputStream = Resources.getResourceAsStream(resource);
    8. sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    9. } catch (IOException e) {
    10. e.printStackTrace();
    11. }
    12. }
    13. public static SqlSessionFactory getSqlSessionFactory(){
    14. return sqlSessionFactory;
    15. }
    16. }

    3、在LoginServlet和RegisterServlet中调用方法来替换原代码

    【LoginServlet】

    【RegisterServlet】

    总结 

    以上便是JAVA实现网页的登录与注册的全部内容,如有问题,可以私信讨论,感谢阅读!

    全部源码放在Java实现网页版登录注册系统-Java文档类资源-CSDN文库

  • 相关阅读:
    springboot下的mybatis打印sql语句
    Mathorcup数学建模竞赛第四届-【妈妈杯】B题:书籍推荐(附解析思路)
    0基础学习VR全景平台篇 第100篇:美团酒店丨平台上传全景全流程
    mybatis-plus 分页插件配置
    基于 Kubesphere 流水线的 GitOps 最佳实践
    数据库(18)——DCL权限控制
    图像处理与计算机视觉--第五章-图像分割-Canny算子
    .trim() 方法 的含义及使用场景
    常见上下文切换场景
    [山东科技大学OJ]1214 Problem B: 编写函数:字符串的连接 之二 (Append Code)
  • 原文地址:https://blog.csdn.net/huihu__/article/details/126211921