小案例 用户登录&用户注册

265 阅读2分钟

mybatis-config

<?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.itheima.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:///db1?useSSL=false&amp;characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--加载SQL的映射文件-->
       <package name="com.itheima.mapper"/>
    </mappers>
</configuration>

UserMapper

<?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">
<!--namespace:名称空间 -->
<mapper namespace="com.itheima.mapper.UserMapper">

    <resultMap id="map" type="user">
        <result column="user_name" property="userName"/>
    </resultMap>
<!--用户注册成功,将用户信息添加到数据库    -->
    <insert id="register" useGeneratedKeys="true" keyProperty="id">
        insert into tb_user VALUES (null,#{userName},#{password});
    </insert>
<!--用户登入,查询数据库是否有此用户-->
    <select id="Login" resultMap="map">
        select * from tb_user where user_name = #{userName} and password = #{password};
    </select>
<!--用户注册,查询用户名是否重复    -->
    <select id="selectByUserName" resultMap="map">
        select *
        from tb_user where user_name = #{userName};
    </select>
</mapper>

用户登入页面 (学艺不精,有点简陋)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/Login/login1" method="post">
  Username:<input name="UserName"><br>
  Password:<input type="password" name="Password"><br>
    <input type="submit" value="Login up">
</form>
</body>
</html>

SqlSessionFactory 工具类

package com.itheima.tool;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class SqlSessionFactoryUtils {
    public static SqlSessionFactory sqlSessionFactory; // 用于方法返回
    static { //静态代码块 与类一起加载且只加载一次 节约资源
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    public static SqlSessionFactory getSqlSessionFactory(){
        return sqlSessionFactory;
    }
}

用户注册

package com.itheima.web;

import com.itheima.mapper.UserMapper;
import com.itheima.pojo.User;
import com.itheima.tool.SqlSessionFactoryUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;


import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/login2")
public class register extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String userName = req.getParameter("UserName"); //获取用户提交的数据 username
        String password = req.getParameter("Password");

        User user = new User(); //将数据封装成对象
        user.setUserName(userName);
        user.setPassword(password);

        SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();//调用工具类获取sqlSessionFactory对象
        SqlSession sqlSession = sqlSessionFactory.openSession();//获取sqlSession对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);//获取mapper对象

        resp.setContentType("text/html;charset=utf-8"); //将浏览器字符集改成utf-8
        PrintWriter writer = resp.getWriter();//获取字符输出流
        User u = mapper.selectByUserName(userName);//调用接口方法 查询用户名是否重复 返回User对象
        if(u == null) {
            mapper.register(user); //如果为null 调用添加方法 将用户数据添加到数据库
            sqlSession.commit(); //提交事务 增删改都需要提交事务
            writer.print("您是第" + user.getId() + "位注册的用户,感谢信任");//因为id是自增长的所以根据id得到第几位用户
            sqlSession.close();//释放资源
        }else{
            writer.print("用户名已存在,请更换用户名后重试");//提示用户更换用户名
        }
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req,resp);//如果是post请求就直接调用get的方法
    }
}

用户登入

package com.itheima.web;

import com.itheima.mapper.UserMapper;
import com.itheima.pojo.User;
import com.itheima.tool.SqlSessionFactoryUtils;
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.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;

@WebServlet("/login1")
public class Login extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String userName = req.getParameter("UserName"); //获取用户提交的数据 username
        String password = req.getParameter("Password");
        
        SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory(); //调用工具类 获取sqlSessionFactory对象
        SqlSession sqlSession = sqlSessionFactory.openSession(); //获取 sqlSession对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 获取 mapper对象
        
        User user = mapper.Login(userName, password);//对用户提交的数据进行查询,返回User对象
        sqlSession.close();//释放资源
        resp.setContentType("text/html;charset=utf-8");//将浏览器字符集改为utf-8
        PrintWriter writer = resp.getWriter();//获取字符输出流
        if(user != null){
            writer.print("登入成功");//如果用户不为null 登入成功
        }else {
            writer.print("登入失败");
        }
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req,resp);
    }
}

UserMapper

package com.itheima.mapper;

import com.itheima.pojo.User;
import org.apache.ibatis.annotations.Param;

public interface UserMapper {

    User Login(@Param("userName") String userName,@Param("password") String password);

    User selectByUserName(String userName);
    void register(User user);
}