学习目标

  • (1)用户登录,退出,登录信息的显示
  • (2)动态菜单
  • (3)系统日志

用户登陆(一)登陆

  • (1)分析
    提交账号密码到后台验证
    》成功,进入主页
    》失败,提示用户- (2)实现## TestUserService

》 TestUserService
》 IUserService,UserServiceImpl
User findByEmail(String email);
》 IUserDao,IUserDao.xml
》 UserController,xxx.jsp
session.setAttribute(“loginUser”,user);

TestUserService

@Test
public void test06(){
//根据 email查询对应的用户

String email = "lw@export.com";
String password="123";
User user = iUserService.findUserByEmail(email);
l.info("test06 user "+user);
if (user != null) {
//1:找到
//比较账号密码
if(user.getPassword().equals(password)){
//正确
l.info("正确");
}else{
//密码不对
l.info("密码不对");
}
}else{
//2:没找到
//用户不存在
l.info("用户不存在");
}
}

IUserService,UserServiceImpl

findUserByEmail(String email);

@Override
public User findUserByEmail(String email) {
return iUserDao.finByEmail(email);
}
User findByEmail(String email);

IUserDao,IUserDao.xml

finByEmail(String email);
<select id="finByEmail" parameterType="string" resultMap="userMap">
select * from pe_user where email=#{email};
</select>

UserController,xxx.jsp

session.setAttribute("loginUser",user);
//${path}/system/user/login.do
//email
//password
@RequestMapping(path = "/login", method = {RequestMethod.GET, RequestMethod.POST})
public String login(String email,String password){
//根据 email查询对应的用户
l.info("login email "+email);
l.info("login password "+password);
User user = iUserService.findUserByEmail(email);
l.info("login user "+user);
if (user != null) {
//1:找到
//比较账号密码
if(user.getPassword().equals(password)){
//正确
l.info("正确");
//保存用户信息
session.setAttribute("loginUser",user);
//跳到主页
return "redirect:/home/toMain.do";
}else{
//密码不对
l.info("密码不对");
request.setAttribute("error","邮箱或者密码不对");
return "forward:/login.jsp";
}
}else{
//2:没找到
//用户不存在
l.info("用户不存在");
request.setAttribute("error","用户不存在");
return "forward:/login.jsp";
}
}
<form action="${path}/system/user/login.do" method="post">

用户登陆(二)注销

  • (1)分析
    删除 session中的用户数据
  • (2)实现
    //删除session登录数据
    ​​​session.removeAttribute("loginUser");​​​ //销毁session
    ​session.invalidate();​
  • Day38项目saas-export项目-用户登录,显示,退出_session


header.jsp

​<a href="${path}/system/user/loginOut.do" class="btn btn-default btn-flat">注销</a>​

UserController

@RequestMapping(path = "/loginOut", method = {RequestMethod.GET, RequestMethod.POST})
public String loginOut(){
//删除session中的用户信息
session.removeAttribute("loginUser");
//让session过期
session.invalidate();
return "redirect:/login.jsp";//转发不会改地址的数据,只有重定向会
}

用户登陆(三)显示登陆信息

Day38项目saas-export项目-用户登录,显示,退出_数据库_02

  • (1)分析
    将用户数据显示在​​​left_menu.jsp​
  • (2)实现
<div class="pull-left info">
<!--登录成功时将 user使用loginUser保存到sessesion中 -->
<p> ${loginUser.userName}</p>
<a href="#">${loginUser.companyName}</a>
</div>

用户登陆(四)BaseController获取企业

BaseController

//定义一个可以返回companyId
public String getLoginCompanyId(){
User user = (User) session.getAttribute("loginUser");
if (user != null) {
return user.getCompanyId();
} else {
return "1";
}
}
//定义一个可以返回companyName
public String getLoginCompanyName(){
User user = (User) session.getAttribute("loginUser");
if (user != null) {
return user.getCompanyName();
} else {
return "吉首大学";
}
}