完善部分功能
- Session在线状态
- 添加修改密码页面
- 添加退出登录功能
第一步:修改indexpage.html
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="#" id="username" class="dropdown-toggle" data-toggle="dropdown">
<script type="text/javascript">
online();
</script>
</a>
<ul class="dropdown-menu">
<li><a href="updatePwd.html">修改密码</a></li>
<li><a href="mybook.html">借阅记录</a></li>
<li><a href="login.html" οnclick="logout()">退出登录</a></li>
</ul>
</li>
</ul>
<div class="navbar-form navbar-left">
<div class="form-group">
<input type="text" id="searchTxt" class="form-control" placeholder="Search">
</div>
<button type="submit" class="btn btn-default" id="search_bt" οnclick="search()"/>Search</div>
</div>
</div>
第二步:创建updatePwd.html
<!doctype html>
<html lang="zh">
<script src="js/userJS.js"></script>
<script src="js/searchJS.js"></script>
<script src="js/jquery-1.7.1.min.js"></script>
<link rel="stylesheet" href="css/bootstrap-3.3.7.min.css">
<script src="js/bootstrap-3.3.7.min.js"></script>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>修改密码</title>
<!--<link rel="stylesheet" type="text/css" href="css/styles.css">-->
</head>
<body>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a href="#" class="navbar-brand">图书管理系统</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a href="indexpage.html">返回首页</a></li>
<li class="dropdown">
<a href="#" id="username" class="dropdown-toggle" data-toggle="dropdown">
<script type="text/javascript">
online();
</script>
</a>
<ul class="dropdown-menu">
<li><a href="updatePwd.html">修改密码</a></li>
<li><a href="mybook.html">借阅记录</a></li>
<li><a href="login.html" οnclick="logout()">退出登录</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="row">
<div class="col-md-offset-3 col-md-6">
<div class="form-group">
<h2>修改密码</h2>
</div>
</div>
<div class="form-group">
<input class="form-control" type="password" id="password1" placeholder="请输入新密码"/>
</div>
<div class="form-group">
<input class="form-control" type="password" id="password2" placeholder="请再次输入新密码"/>
</div>
<div class="form-group">
<button class="btn btn-primary btn-default" type="submit" οnclick="updatePwd()">提交</button>
</div>
</div>
</div>
</body>
第三步:修改UserMapper.xml 和 UserMapper.java
<!-- UserMapper.xml -->
<update id="updatePwd" parameterType="com.ray.entity.User">
update user
set user_pwd = #{userPwd}
where user_name = #{userName}
</update>
UserMapper.java
void updatePwd(@Param("userPwd") String newPwd,
@Param("userName") String userName);
第四步:修改UserService 和 UserServiceImpl
public interface UserService {
void save(User user);
User checkLogin(String userName, String userPwd);
boolean checkRegister(String userName, String userPwd, String email);
boolean updatePwd(String newPwd, String username);
}
UserServiceImple.java
package com.ray.service.impl;
import com.ray.dao.UserMapper;
import com.ray.entity.User;
import com.ray.service.UserService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* @author Ray
* @date 2018/5/23 0023
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class UserServiceImpl implements UserService {
@Resource
private UserMapper userMapper;
/**
* 新增用户
* @param user
*/
@Override
public void save(User user) {
userMapper.insert(user);
}
/**
* 登录检查
* @param userName
* @param userPwd
* @return
*/
@Override
public User checkLogin(String userName, String userPwd) {
User user = userMapper.selectUser(userName);
if(user != null && user.getUserPwd().equals(userPwd)){
return user;
}
return null;
}
/**
* 注册检查
* @param userName
* @param userPwd
* @param email
* @return
*/
@Override
public boolean checkRegister(String userName, String userPwd, String email) {
User user = userMapper.selectUser(userName);
if(user != null){
return false;
}else{
User insertUser = new User();
insertUser.setUserName(userName);
insertUser.setUserPwd(userPwd);
insertUser.setUserEmail(email);
save(insertUser);
return true;
}
}
/**
* 更改密码
* @param newPwd
* @param username
* @return
*/
@Override
public boolean updatePwd(String newPwd, String username) {
userMapper.updatePwd(newPwd, username);
return true;
}
}
第五步:创建userJS.js
function online() {
$.ajax({
url: "online",
type: "GET",
success: function (result) {
if (result != null) {
$("#username").append(
result.toString() + '<b class="caret"></b>'
);
}
},
error: function () {
alert("请求失败!");
}
});
}
function updatePwd() {
var password1 = document.getElementById("password1");
var password2 = document.getElementById("password2");
if(password1.value != password2.value){
alert("两次密码不一致,请重新输入!");
password1.text="";
password2.text="";
}else{
var data = {};
data["password"] = password2.value;
$.ajax({
url:"updateUserPwd",
type:"POST",
data:data,
dataType:"JSON",
success:function (result) {
if(result == true){
alert("修改密码成功,请重新登录!");
setTimeout('window.location.href="login.html"');
}
}
});
}
}
function logout() {
$.ajax({
url:"logout",
type:"GET",
dataType:"JSON",
success:function (result) {
if(result == true){
alert("退出成功!");
setTimeout('window.location.href="login.html"');
}else{
alert("退出失败!");
}
},
error:function () {
alert("请求失败!");
}
});
}
第六步:修改UserController
package com.ray.controller;
import com.ray.entity.User;
import com.ray.service.UserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* @author Ray
* @date 2018/5/23 0023
*/
@Controller
public class UserController {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Resource
private UserService userService;
/**
* 用户注册
* @RequestMapping 请求路径
* @ResponseBody 返回JSON数据
*/
@RequestMapping("insertUser")
@ResponseBody
public boolean insertUser(HttpServletRequest request, HttpServletResponse response){
String username = request.getParameter("username");
String password = request.getParameter("password");
String email = request.getParameter("email");
boolean result = userService.checkRegister(username,password,email);
if(result){
return true;
}
return false;
}
/**
* 用户登录
* @RequestMapping 请求路径
* @ResponseBody 返回JSON数据
*/
@RequestMapping("loginUser")
@ResponseBody
public boolean loginUser(HttpServletRequest request, HttpServletResponse response){
String username = request.getParameter("username");
String password = request.getParameter("password");
//控制台输出 -> 测试
System.out.println("login_username: " + username);
System.out.println("login_password: " + password);
HttpSession session = request.getSession();
User user = userService.checkLogin(username, password);
if(user != null){
session.setAttribute("username", user.getUserName());
return true;
}
return false;
}
/**
* Session在线状态
*/
@RequestMapping("online")
@ResponseBody
public String online(HttpServletRequest request, HttpServletResponse response){
Object user = request.getSession().getAttribute("username");
if(user != null){
System.out.println("Session_user: " + user.toString());
return user.toString();
}else{
return null;
}
}
/**
* 修改密码
*/
@RequestMapping("updateUserPwd")
@ResponseBody
public boolean updateUserPwd(HttpServletRequest request, HttpServletResponse response){
Object user = request.getSession().getAttribute("username");
String password = request.getParameter("password");
System.out.println("当前用户: " + user.toString() + " 的新密码为: " + password);
userService.updatePwd(password, user.toString());
request.getSession().removeAttribute("username");
return true;
}
/**
* 退出登录
*/
@RequestMapping("logout")
@ResponseBody
public boolean logout(HttpServletRequest request, HttpServletResponse response){
Object user = request.getSession().getAttribute("username");
if(user != null){
request.getSession().removeAttribute("username");
return true;
}
return false;
}
}