目录
一 创建项目
1搭建项目
2搭建数据库 编辑
二 登录
1在mapper中编写查询方法
2 创建SqlSessionFactoryUtils 工具类把所需的工厂对象抽取
3在Service编写方法调用mapper中的查询方法
4Servlet 调用 Service 的 select() 方法进行业务逻辑处理,并接收返回的结果
5判断登录成功或失败响应给页面
三 注册
1在mapper中编写通过用户名查询和新增方法
2在Service编写方法调用mapper中的新增方法
3 Servlet 调用 Service 的 add() 方法进行业务逻辑处理,并接收返回的结果
4判断注册成功或失败响应给页面
四 展示
1登录页面
2登录成功
3失败跳转注册并提示
4注册成功跳转登录 失败继续跳转注册
- 点击登录按键 发送请求到后端的
servlet(表现层)
servlet(表现层)收到请求调用serivce(业务层)
serivce(业务层)收到请求调用mapper(数据访问层)的查询方法
- 把查询的结果返回给
servlet(表现层)判断后响应给页面
@Select("select * from tb_user where username = #{username} and password = #{password}")
User select(@Param("username") String username, @Param("password") String password);
SqlSessionFactoryUtils
工具类把所需的工厂对象抽取public class SqlSessionFactorytest {
private 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;
}
}
public User select(String username,String password){
//创建工厂对象
SqlSessionFactory sqlSessionFactory = SqlSessionFactorytest.getSqlSessionFactory();
//创建sqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取对应的BrandMapper
UserMapper mapper = sqlSession.getMapper(UserMapper .class);
//调用方法
User select = mapper.select(username, password);
//关闭资源
sqlSession.close();
return select;
}
Service
的 select()
方法进行业务逻辑处理,并接收返回的结果 //创建userSerivce对象
UserSerivce userSerivce=new UserSerivce();
//获取页面输入的用户名和密码
String username = request.getParameter("username");
String paw = request.getParameter("paw");
//调用方法
User select = userSerivce.select(username, paw);
if (select!=null){
//登录成功 跳转到主页面
request.setAttribute("name","你好"+username);
request.getRequestDispatcher("/zhuyemian.jsp").forward(request,response);
}else{
//登录失败 跳转到注册页面
request.setAttribute("regist_msg","用户不存在请先注册");
request.getRequestDispatcher("/zhuc.jsp").forward(request,response);
}
- 点击注册按键 发送请求到后端的
servlet(表现层)
servlet(表现层)收到请求调用serivce(业务层)
serivce(业务层)收到请求调用mapper(数据访问层)的查询方法
- 把查询的结果返回给
servlet(表现层)判断后响应给页面
在注册前我们要判断用户是否存在所有我们要先通过 用户名查询数据库 如果没有该用户在注册
@Insert("insert into tb_user values(null,#{username},#{password})")
void add(User user);
@Select("select * from tb_user where username = #{username}")
User selectByUsername(String username);
public boolean add(User user){
SqlSessionFactory sqlSessionFactory = SqlSessionFactorytest.getSqlSessionFactory();
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserMapper mapper = sqlSession.getMapper(UserMapper .class);
//调用根据用户名查询的方法
User user1 = mapper.selectByUsername(user.getUsername());
if (user1==null){
//数据库没有 注册
mapper.add(user);
}
return user1==null;
}
Service
的 add()
方法进行业务逻辑处理,并接收返回的结果 //创建userSerivce对象
UserSerivce userSerivce=new UserSerivce();
//获取页面输入的内容
String username = request.getParameter("username");
String paw = request.getParameter("paw");
//封装成User对象
User user=new User();
user.setPassword(paw);
user.setUsername(username);
//调用方法返回boolean值
boolean add = userSerivce.add(user);
//判断注册成功与否
if (add){
//注册成功 跳转到登录页面
request.setAttribute("msg","注册成功,请登录");
request.getRequestDispatcher("/login.jsp").forward(request,response);
}else{
//注册失败 继续跳转到注册页面
request.setAttribute("msg","用户名已存在");
request.getRequestDispatcher("/zhuc.jsp").forward(request,response);
}