首页 > 其他分享 >三层架构登录注册功能

三层架构登录注册功能

时间:2023-01-10 12:24:41浏览次数:50  
标签:username 三层 架构 String 登录 request user password User

public interface UserMapper {


/**
* 根据用户名和密码查询用户对象
* @param username
* @param password
* @return
*/
@Select("select * from tb_user where username = #{username} and password = #{password}")
User select(@Param("username") String username,@Param("password") String password);

/**
* 根据用户名查询用户对象
* @param username
* @return
*/
@Select("select * from tb_user where username = #{username}")
User selectByUsername(String username);

/**
* 添加用户
* @param user
*/
@Insert("insert into tb_user values(null,#{username},#{password})")
void add(User user);
}
service层
public class UserService {
SqlSessionFactory factory = SqlSessionFactoryUtils.getSqlSessionFactory();

/**
* 登录方法
* @param username
* @param password
* @return
*/

public User login(String username,String password){
//2. 获取SqlSession
SqlSession sqlSession = factory.openSession();
//3. 获取UserMapper
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//4. 调用方法
User user = mapper.select(username, password);

//释放资源
sqlSession.close();

return user;
}



/**
* 注册方法
* @return
*/

public boolean register(User user){
//2. 获取SqlSession
SqlSession sqlSession = factory.openSession();
//3. 获取UserMapper
UserMapper mapper = sqlSession.getMapper(UserMapper.class);

//4. 判断用户名是否存在
User u = mapper.selectByUsername(user.getUsername());

if(u == null){
// 用户名不存在,注册
mapper.add(user);
sqlSession.commit();
}
sqlSession.close();

return u == null;

}
省略一个自动生成验证码的类
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
private UserService service = new UserService();

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

//获取复选框数据
String remember = request.getParameter("remember");

//2. 调用service查询
User user = service.login(username, password);

//3. 判断
if(user != null){
//登录成功,跳转到查询所有的BrandServlet

//判断用户是否勾选记住我
if("1".equals(remember)){
//勾选了,发送Cookie

//1. 创建Cookie对象
Cookie c_username = new Cookie("username",username);
Cookie c_password = new Cookie("password",password);
// 设置Cookie的存活时间
c_username.setMaxAge( 60 * 60 * 24 * 7);
c_password.setMaxAge( 60 * 60 * 24 * 7);
//2. 发送
response.addCookie(c_username);
response.addCookie(c_password);
}

//将登陆成功后的user对象,存储到session
HttpSession session = request.getSession();
session.setAttribute("user",user);

String contextPath = request.getContextPath();
response.sendRedirect(contextPath+"/selectAllServlet");
}else {
// 登录失败,

// 存储错误信息到request
request.setAttribute("login_msg","用户名或密码错误");

// 跳转到login.jsp
request.getRequestDispatcher("/login.jsp").forward(request,response);

}
}
注册:
//1. 获取用户名和密码数据
String username = request.getParameter("username");
String password = request.getParameter("password");

User user = new User();
user.setUsername(username);
user.setPassword(password);

// 获取用户输入的验证码
String checkCode = request.getParameter("checkCode");

// 程序生成的验证码,从Session获取
HttpSession session = request.getSession();
String checkCodeGen = (String) session.getAttribute("checkCodeGen");

// 比对
if(!checkCodeGen.equalsIgnoreCase(checkCode)){

request.setAttribute("register_msg","验证码错误");
request.getRequestDispatcher("/register.jsp").forward(request,response);

// 不允许注册
return;
}
//2. 调用service 注册
boolean flag = service.register(user);
//3. 判断注册成功与否
if(flag){
//注册功能,跳转登陆页面

request.setAttribute("register_msg","注册成功,请登录");
request.getRequestDispatcher("/login.jsp").forward(request,response);
}else {
//注册失败,跳转到注册页面

request.setAttribute("register_msg","用户名已存在");
request.getRequestDispatcher("/register.jsp").forward(request,response);
}



标签:username,三层,架构,String,登录,request,user,password,User
From: https://www.cnblogs.com/Wjk1/p/17039782.html

相关文章