1. 功能分析
1. login.html
- 提交用户输入的用户名,密码,以及验证码
2. web层
- 获取提交信息
- 判断用户是否存在
- 密码是否正确
- 验证码是否正确
- 是否激活,未激活不能登录
3. UserService.java/mapper.xml
- 根据用户名查找用户
2. 登录
2.1 login.html
//***************************** 异步提交登录表单 *****************************
$(function () {
$("#btn_submit").click(function () {
var options = {
type:"post",
url:"/ssm-travel/user/selectByUserNameLogin",
data:$("#loginForm").serialize(),
dataType:"json",
error:function (request) {
return false;
},
success:function (data) {
console.log(data)
if (data =="success"){
$("#errorMsg").html("");
location.href = "/ssm-travel/index.html"
}else {
$("#errorMsg").html(data);
}
}
}
$.ajax(options)
})
});
2.2 mapper层
- UserMapper.java
src\main\java\com\ssmtravel\mapper\UserMapper.java
// 登录 查询用户
@Select("select * from tab_user where username = #{username}")
User selectByUsername(String username);
2.3 service层
- UserService.jave 接口
// 登录 查询用户
User selectByUsername(String username);
- 实现 UserServiceImpl.java
@Override
public User selectByUsername(String username) {
User user = userMapper.selectByUsername(username);
return user;
}
2.4 web层
// 4.登录
@RequestMapping(value = "/selectByUserNameLogin",produces = {"application/json; charset=UTF-8"})
@ResponseBody
public String Login(String username,String password,String check,HttpSession session) throws IOException {
User user = userService.selectByUsername(username);
// 4.1 用户名是否存在
if (user == null){
// 用户不存在
err_msg = "用户不存在";
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(err_msg);
}
// 4.2密码是否正确
if(!password.equals(user.getPassword())){
// 密码不正确
err_msg = "密码不正确";
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(err_msg);
}
// 4.3 验证码是否正确,正确则进行下面登录
String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");
// 为了保证验证码使用一次就重新生成
session.removeAttribute("CHECKCODE_SERVER");
if(checkcode_server == null || !checkcode_server.equalsIgnoreCase(check)){
//验证码错误
err_msg = "验证码错误";
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(err_msg);
}
// 4.4是否激活,未激活则不能登录
if(user.getStatus().equals("N")){
// 未激活,登录失败
err_msg = "未激活,登录失败";
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(err_msg);
}
err_msg = "success";
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(err_msg);
}
3. index页面中用户姓名的提示信息功能
3.1 效果
3.2 header.html
<script>
$(function () {
$.get("/ssm-travel/user/findName", {}, function (data) {
data = JSON.parse(data)
console.log(data)
if (data != "error") {
var msg = "欢迎回来," + data;
$("#user_name").html(msg);
} else {
$("#user_name").html("请点击右侧登录");
}
});
})
</script>
<header id="header">
......
......
......
......
<!-- 登录状态 -->
<div class="login">
<span id="user_name"></span>
<a href="myfavorite.html" class="collection">我的收藏</a>
<a href="javascript:;">退出</a>
</div>
</div>
......
......
......
3.3 web层
- RegisterContorller.java
在登录功能,登录成功,则将用户存入session,通过查询session中是否存在user进行判断
// 5. 首页登录则显示用户名字
@RequestMapping("/findName")
@ResponseBody
public String Login(HttpSession session) throws IOException {
User user = (User) session.getAttribute("user");
if (user == null){
// 不存在
err_msg = "error";
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(err_msg);
}else {
err_msg = user.getUsername();
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(err_msg);
}
}
4. 退出
- RegisterContorller.java
将session中的user对象销毁则退出,并且跳转登录页面
// 6. 退出
@RequestMapping("/exitLogin")
public String exitLogin(HttpSession session) throws IOException {
session.invalidate();
return "redirect:/login.html";
}
- header.html
......
......
......
<!-- 登录状态 -->
<div class="login">
<span id="user_name"></span>
<a href="myfavorite.html" class="collection">我的收藏</a>
<a href="javascript:location.href='/ssm-travel/user/exitLogin';">退出</a>
</div>
......
......
......
到此,登录功能完成。。。