登陆服务模块
基本思路,登陆→登陆数据→登陆数据查询→TRUE/FALSE(去注册)。
JSP中对于对象的设置:
<p>Username:<input id="username" name="username" value="${cookie.username.value}" type="text"></p>
<p>Password:<input id="password" name="password" value="${cookie.password.value}" type="password"></p>
<p>Remember:<input id="remember" name="remember" value="1" type="checkbox"></p>
在对应的servlet中接受数据:
//1. 获取用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
//获取复选框数据 是否记住密码
String remember = request.getParameter("remember");
//2. 调用service查询
User user = service.login(username, password);
查询语句放在对应的Mapper中:
@Select("select * from tb_user where username = #{username} and password = #{password}")
User select(@Param("username") String username,@Param("password") String password);
@Select("select * from tb_user where username = #{username}")
User selectByUsername(String username);
@Insert("insert into tb_user values(null,#{username},#{password})")
void add(User user);
数据库操作放在对应的servlet类中:
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;
}
//User为已经封装的User类,为用户注册使用
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;
}
记住用户名、密码操作通过按钮判断,如果点击将数据存放在cookie中,下次登陆时从cookie中使用:
//判断用户是否勾选记住我
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);
登陆失败,停留在登陆界面:
// 存储错误信息到request
request.setAttribute("login_msg","用户名或密码错误");
// 跳转到login.jsp
request.getRequestDispatcher("/login.jsp").forward(request,response);
前往注册在JSP中设置,设置连接跳转设置:
<a href="register.jsp">没有账号?</a>
注册服务模块
有了登陆模块的分析,注册就相对十分清晰了,注册→ture(去登陆)/false(继续注册)。
同样注册界面获取User数据:
//1. 获取用户名和密码数据
String username = request.getParameter("username");
String password = request.getParameter("password");
// 获取用户输入的验证码
String checkCode = request.getParameter("checkCode");
//对象封装
User user = new User();
user.setUsername(username);
user.setPassword(password);
与数据库信息对比,看信息是否已经存在:
//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);
}