技术栈:mybatis+servlet+jsp
项目结构:
介绍:MVC开发模式(模型---视图---控制层)
mapper层(dao层)+pojo层:底层数据----pojo存放实体类;mapper存放接口方法与sql注解
service层:对接口里的方法进行自由组合封装成更复杂的业务逻辑
servlet层(web层):调用service方法,与前端页面实现交互
util包:工具包,对一些固定代码进行封装
resources包:存放mapper配置文件和mybatis核心配置文件
webapp包:存放各种前端页面
一.登录功能
代码逻辑:
创建user实体类---创建usermapper接口---创建查询所有方法---注解开发---创建userservice---封装查询所有方法---创建login.jsp---提交表单至loginservlet---接收jsp数据,调用service对象方法,根据查询结果转发请求
二.注册功能
代码逻辑:
usermapper里添加新的方法(按用户名查询+添加)---service里创建两个方法的封装方法---创建register.jsp---提交表单至RegisterServlet---接收jsp数据,调用service方法,根据注册成功与否跳转至不同界面
注册登录功能代码实现:
1.UserMapper
package mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import poji.User;
import java.util.List;
public interface UserMapper {
//返回User类型结果,该类需导包
//注解开发,不需要添加;
//@Select("select * from user where username = #{username} and password = #{password}")
User select(@Param("username") String username, @Param("password") String password);
//按用户名查询方法,返回用户对象,单个参数不用添加注解
User selectByUsername(String username);
//添加方法,传参可直接传入对象
void add(User user);
}
2.userservice
package service;
import mapper.ClothesMapper;
import mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import poji.Clothes;
import poji.User;
import util.SqlSessionFactoryutils;
import java.util.List;
//有关用户数据的业务逻辑封装
public class userservice {
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryutils.getSqlSessionFactory();
public User select(String username,String password) {
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//调用方法封装
User users = mapper.select(username, password);
sqlSession.close();
return users;
}
//注册业务需要对按id查询和添加两个数据处理做业务封装
public boolean register(User user){
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//先查询用户名是否存在
//注意这里传参为对象,因此获取变量只能调用对象方法
User u = mapper.selectByUsername(user.getUsername());
if(u==null){
//用户不存在,可以注册
mapper.add(user);
sqlSession.commit();
}
//用户存在,不能注册
sqlSession.close();
return u==null;
}
}
3.login.jsp
<%@ page isELIgnored="false" contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<link href="css/login.css" rel="stylesheet">
</head>
<body>
<div id="loginDiv" style="height: 350px">
<form action="/csc/LoginServlet" id="form">
<h1 id="loginMsg">LOGIN IN</h1>
<div id="errorMsg">${loginerror} ${register_msg}</div>
<p>Username:<input id="username" name="username" type="text"></p>
<p>Password:<input id="password" name="password" type="password"></p>
<!--给remember赋值后就可以根据值的判断来进行后续数据逻辑处理-->
<p>Remember:<input id="remember" name="remember" value="1" type="checkbox"></p>
<div id="subDiv">
<input type="submit" class="button" value="login up">
<input type="reset" class="button" value="reset">
<a href="register.jsp">没有账号