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

目录

前言

一、环境的搭建

二、功能实现

1、登录功能

2、注册功能

【注意】

总结 


前言

JAVA实现网页的登录与注册

一、环境的搭建

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

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

<dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.32</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <!--tomcat 插件-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port><!--访问端口号-->
                    <!-- <path>/</path>项目访问路径-->
                </configuration>
            </plugin>
        </plugins>
    </build>

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

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

 

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

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <typeAliases>
        <package name="com.Server.pojo"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///自己数据库的表名?useSSL=false&amp;useServerPrepStmts=true"/>
                <property name="username" value="自己的MySQL用户名"/>
                <property name="password" value="自己的MySQL密码"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--扫描mapper-->
        <package name="com.Server.mapper"/>
    </mappers>
</configuration>

5、创建UserMapper接口

public interface UserMapper {
}

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

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
//命名空间:UserMapper所在位置
<mapper namespace="com.Server.mapper.UserMapper">

</mapper>

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

 

8、创建User实体类

 

public class User {

    private Integer id;
    private String username;
    private String password;

    public Integer getId() {
        return id;
    }

    public void setId(Integer 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;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", passwords='" + password + '\'' +
                '}';
    }
}

二、功能实现

1、登录功能

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

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

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

    <select id="selectByConditionSingle_Log" resultType="com.Server.pojo.User">
        select id, username, password
        from tb_user
        where username = #{username}
          and password = #{password}
    </select>

最后在LoginServlet中编写实现方法

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

@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //接收用户名和密码
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //获取SqlSessionFactory对象
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //获取UserMapper
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        //调用方法
        User user = userMapper.selectByConditionSingle_Log(username, password);
        //释放资源
        sqlSession.close();

        response.setContentType("text/html;charset=utf-8");
        PrintWriter writer = response.getWriter();
        //判断user是否为null
        if (user != null) {
            //登陆成功
            writer.write("登陆成功");
        } else {
            //登陆失败
            writer.write("登陆失败");
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

2、注册功能

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

    //判断用户名是否已经存在
    User selectByUsername(String username);

    //添加用户数据
    void add(User user);

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

    <!--注册查询-->
    <select id="selectByUsername" resultType="com.Server.pojo.User">
        select id, username, password
        from tb_user
        where username = #{username}
    </select>
    <!--注册添加-->
    <insert id="add">
        insert into tb_user
        values (null, #{username}, #{password})
    </insert>

最后在RegisterServlet中编写实现方法

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

@WebServlet("/registerServlet")
public class RegisterServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //接收用户数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //封装用户对象
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        //获取SqlSessionFactory对象
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //获取UserMapper
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        //调用方法
        User u = userMapper.selectByUsername(username);
        response.setContentType("text/html;charset=utf-8");
        //判断用户对象信息
        if (u == null) {
            //用户名不存在
            userMapper.add(user);
            sqlSession.commit();
            response.getWriter().write("注册成功");
            sqlSession.close();
        } else {
            //用户名存在给出信息
            response.getWriter().write("用户名已存在");
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

【注意】

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

【方法】

1、创建一个SqlSessionFactoryUtils

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

public class SqlSessionFactoryUtils {
    private static SqlSessionFactory sqlSessionFactory;
    //静态代码块,只执行一次
    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static SqlSessionFactory getSqlSessionFactory(){
        return sqlSessionFactory;
    }
}

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

【LoginServlet】

【RegisterServlet】

总结 

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

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

猜你喜欢

转载自blog.csdn.net/huihu__/article/details/126211921