栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

javaEeb阶段综合登录注册案例(web项目,MySQL数据库,MyBatis,MySQL驱动,xml核心配置文件,映射文件,Mapper代理接口)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

javaEeb阶段综合登录注册案例(web项目,MySQL数据库,MyBatis,MySQL驱动,xml核心配置文件,映射文件,Mapper代理接口)

1、环境准备

1、准备登录注册页面
2、创建db1数据库,创建tb_user用户表,创建User实体类

-- 创建数据库
CREATE DATAbase db1;

-- 创建用户表
CREATE TABLE tb_user(
	id int primary key auto_increment,
	username varchar(20) unique,
	password varchar(32)
);

-- 添加数据
INSERT INTO tb_user(username,password) values('zhangsan','123'),('lisi','234');

SELECt * FROM tb_user;

创建User实体类,存放在pojo包下

package com.zcl.webs.pojo;

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 + ''' +
                ", password='" + password + ''' +
                '}';
    }
}

3、导入MyBatis坐标,MySQL驱动坐标

        
            org.mybatis
            mybatis
            3.5.5
        
        
            mysql
            mysql-connector-java
            8.0.27
        

4、创建mybatis-config.xml核心配置文件,UserMapper.xml映射文件,UserMapper接口
mybatis-config.xml核心配置文件(可官网复制修改)

链接数据库的核心文件




    
    
        
    

    
        
            
            
                
                
                
                
                
            
        
    
    
        
        
    

在mapper包下创建UserMapper接口

package com.zcl.mapper;


public interface UserMapper {

}

创建UserMapper映射文件
需要在resources包下通过【com/zcl/mapper】方式创建包名,不可使用点来区分,映射文件的名称需要与UserMapper接口一致,如果有插件的就会出现小鸟的图标显示,mapper里的namespace是接口的全路径名需要写对






2、正式完成步骤

2.1、在UserMapper接口上写MyBatis查询数据库sql语句

public interface UserMapper {

    
    @Select("select * from tb_user where username = #{username}} and password = #{password})")
    User select(@Param("username") String username,@Param("password") String password);
}

2.2、修改登录页面的form表单的提交路径

LOGIN IN

Username:

Password:

2.3、在webs包下创建loginServlet服务器

package com.zcl.webs; 

import com.zcl.mapper.UserMapper;
import com.zcl.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;

@WebServlet("/loginServlet")
public class loginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1、获取用户名和密码
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        // 2、使用mybatis链接数据库完成查询
        // 2.1、获取SqlSessionFactory对象【直接官网复制修改配置文件路径即可】
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 2.2、获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 2.3、获取Mapper
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        // 2.4、调用方法传入参数查询数据库信息
        User user = mapper.select(username, password);
        // 2.5、释放资源
        sqlSession.close();

        // 设置字符输出流,并设置content-type和编码格式
        response.setContentType("text/html;charset=utf-8");
        // 获取字符输出流对象
        PrintWriter writer = response.getWriter();
        // 3、判断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);
    }
}

测试

先访问login.html页面,填写登录信息来完成测试


3、用户注册实现

3.1、完成UserMapper接口的根据用户名查询信息和注册信息方法

    @Select("select * from tb_user where username = #{username} and")
    User selectByUsername(String username);

    
    @Select("insert into tb_user values (null,#{username},#{password})")
    void add(User user);

3.2、设置表单页面的提交路径和post方式

用户名
用户名不太受欢迎
密码
密码格式有误

3.3、创建registerServlet注册服务器

@WebServlet("/registerServlet")
public class registerServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("registerServlet....");
        // 1、接收用户数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        // 2、封装用户对象
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        // 3、使用mybatis链接数据库完成查询
        // 3.1、获取SqlSessionFactory对象【直接官网复制修改配置文件路径即可】
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 3.2、获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 3.3、获取Mapper
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        // 4、调用mapper查询用户名是否存在
        User u = mapper.selectByUsername(username);

        // 5、判断是否存在来决定注册情况
        if(u==null){
            // 用户名不存在
            mapper.add(user);
            // 提交事务
            sqlSession.commit();
            // 释放资源
            sqlSession.close();
        }else {
            // 用户名已存在
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().write("用户名已存在");
        }
    }

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

注册结果

第一次注册添加了wangwu用户信息

4、代码优化

问题存在:
1、代码重复
2、SqlSessionFactory工厂对象创建了两次,浪费资源

解决方法:
1、创建工具类

public class SqlSessionFactoryUtils {
    private static SqlSessionFactory sqlSessionFactory;

    // 静态代码块【会随着类的创建加载而自动执行且只执行一次】
    static {
        // 2.1、获取SqlSessionFactory对象【直接官网复制修改配置文件路径即可】
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }
    public static SqlSessionFactory getSqlSessionFactory(){
        return sqlSessionFactory;
    }
}

2、替换原代码

注释那三条连接的数据

SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/782042.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号