一、个人信息修改
(一)个人信息修改界面的编写
当用户点击带界面时,系统会从session(user)中获取用户名、密码以及uid,并显示在页面上,其中uid设置为只读,用户不可更改。在该界面,用户可以修改自己的用户名、密码以及更换头像。在用户成功修改信息后,会强制登出,重新获取session显示数据。
UserInformation.jsp:
<%--
Created by IntelliJ IDEA.
User: RH
Date: 2021/8/8
Time: 16:09
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<link rel="stylesheet" href="layui/css/layui.css" media="all">
<style>
*{
margin:0px;padding:0px;}
form{
width:80%;
margin:30px auto;
}
</style>
</head>
<body>
<script src="layui/layui.js" charset="utf-8"></script>
<form class="layui-form" action="updateUserPerson" method="post" enctype="multipart/form-data" >
<div class="layui-form-item">
<label class="layui-form-label">uid</label>
<div class="layui-input-block">
<input type="text" name="uid" required lay-verify="required" autocomplete="off" class="layui-input" value="${sessionScope.user.uid}" readonly="readonly">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" name="userName" required lay-verify="required" autocomplete="off" class="layui-input" value="${sessionScope.user.userName}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-block">
<input type="text" name="userPsd" required lay-verify="required" autocomplete="off" class="layui-input" value="${sessionScope.user.userPsd}">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">用户头像</label>
<div class="layui-input-block">
<input type="file" name="ImgFile"class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<input class="layui-btn" type="submit" value="确认修改" onclick="tologin()">
</div>
</div>
</form>
<script type="text/javascript">
function tologin(){
alert("修改成功,请重新登录!")
window.top.location.href="login.jsp";//它表示,从最上层的窗口的地址栏发送请求
}
layui.use(['jquery','form'], function(){
var $ = layui.jquery;
var form = layui.form;
form.render();
});
</script>
</body>
</html>
(二)个人信息修改功能的实现
当用户单击确认修改按钮时,会向后台发出updateUserPerson请求,此时在UserController中新增updateUserPerson()方法。
UserController :
@Controller
public class UserController {
@Autowired
private UserServiceI userServiceI;
@Autowired
private ResultMap resultMap;
@RequestMapping("/login")
@ResponseBody
public ResultMap login(String userName, String userPsd, String captcha , HttpSession session) {
try {
int authority=userServiceI.login(userName,userPsd,captcha,session);
resultMap.setStatus(true);
resultMap.setAuthority(authority);
} catch (Exception e) {
resultMap.setStatus(false);
resultMap.setMessage(e.getMessage());
}
return resultMap;
}
@RequestMapping("/register")
@ResponseBody
public ResultMap insertUserregister(String userName,String userPsd,String sex){
try{
userServiceI.insertUserregister(userName,userPsd,sex);
resultMap.setStatus(true);
}catch (Exception e){
resultMap.setStatus(false);
resultMap.setMessage(e.getMessage());
}
return resultMap;
}
@RequestMapping("/updateUserPerson")
public void updateUserPerson(String uid, String userName, String userPsd, MultipartFile ImgFile, HttpSession session, HttpServletRequest request){
session.invalidate();
try{
if(ImgFile.getSize()==0){
ImgFile=null;
}
userServiceI.updateUserPerson(uid,userName,userPsd,ImgFile,request);
}catch (Exception e){
resultMap.setStatus(false);
resultMap.setMessage(e.getMessage());
}
}
}
在UserController中,将会调用userServiceI,此时向UserServiceI、UserServiceImpl新增updateUserPerson()方法
UserServiceI:
public interface UserServiceI {
public int login(String userName, String userPsd, String captcha, HttpSession session);
public int insertUserregister(String userName,String userPsd,String sex);
public int updateUserPerson(String uid, String userName, String userPsd, MultipartFile ImgFile, HttpServletRequest request);
}
UserServiceImpl:
@Service
public class UserServiceImpl implements UserServiceI{
@Autowired
private UserDao userDao;
@Override
public int login(String userName, String userPsd, String captcha, HttpSession session) {
if(userName.equals("")) {
throw new RuntimeException("用户名不能为空!");
}
if(userPsd.equals("")) {
throw new RuntimeException("密码不能为空!");
}
if(captcha.equals("")) {
throw new RuntimeException("验证码不能为空!");
}
String cap= (String) session.getAttribute("captcha");
if(!captcha.equalsIgnoreCase(cap)){
throw new RuntimeException("验证码有误!");
}
User user = new User(userName,userPsd);
user = userDao.login(user);
if(user == null) {
throw new RuntimeException("用户名或密码输入有误!");
}else {
session.setAttribute("user",user);
}
return user.getAuthorityType();
}
@Override
public int insertUserregister(String userName, String userPsd, String sex) {
if(userName.equals("")) {
throw new RuntimeException("用户名不能为空!");
}
if(userPsd.equals("")) {
throw new RuntimeException("密码不能为空!");
}
User user =new User();
user.setUserName(userName);
user.setUserPsd(userPsd);
user.setSex(sex);
user.setImgPath("images/defaultHeadimg.png");
user.setHeadImg("defaultHeadimg.png");
int num=userDao.insertUser(user);
if(num==0){
throw new RuntimeException("新增失败!");