基于javaweb和mysql的springboot+jpa网盘系统设计和实现(java+springboot+ssm+mysql+jpa+thymeleaf+html+maven)

私信源码获取及调试交流

私信源码获取及调试交流

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb的SpringBoot+JPA网盘系统设计和实现(java+springboot+ssm+mysql+jpa+thymeleaf+html+maven)

很多同学都有自己的网盘,方便存储一些java学习教程。该毕业设计实现了一个简易的网盘,包含文件上传和文件分享等功能。 后端技术采用了spring,spring mvc,JPA,前端采用了thymeleaf模板语言。整体业务功能相对不是太复杂,亮点是文件分享功能。

     *
     * @param request
     * @param response
     * @param file
     * @param path
     */
    @RequestMapping(value = "/uploadsevlet", method = RequestMethod.POST)
    @ResponseBody
    public void uploadSevlet(HttpServletRequest request, HttpServletResponse response, MultipartFile file,
        String path) {

        //        String fileMd5 = request.getParameter("fileMd5");
        String chunk = request.getParameter("chunk");
        logger.warn("chunk:" + chunk);
        String fileName = file.getOriginalFilename();
        String userName = WebUtil.getUserNameByRequest(request);
        MultipartHttpServletRequest Murequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> files = Murequest.getFileMap();
        logger.warn("执行前---------");
        if (null != files && !files.isEmpty()) {
            for (MultipartFile item : files.values()) {
                String tempDir = FileUtil.getTempDir(tempPath, userName, fileName);
                tempDir = StringUtil.stringSlashToOne(tempDir);
                logger.warn("tempDir:" + tempDir);
                File dir = new File(tempDir);
                if (!dir.exists()) {
                    dir.mkdirs();
                }
                // 创建分片文件并保存
                File chunkFile = new File(tempDir + "/" + chunk);
                logger.warn(tempDir + "/" + chunk);
                try {
                    chunkFile.createNewFile();
                    item.transferTo(chunkFile);
                } catch (IllegalStateException e) {
                    logger.warn("保存分片文件出错:" + e.getMessage());
                    logger.error("Exception:", e);
                } catch (IOException e) {
                    logger.warn("保存分片文件出错:" + e.getMessage());
                    logger.error("Exception:", e);
                }
            }
        }
    }

    /**
     * 上传之前检查
                replaceAll("%3B", ";").
                replaceAll("%40", "@").
                replaceAll("%23", "\\#").
                replaceAll("%26", "\\&").
                replaceAll("%2C", "\\,");
        }
        response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName4 + "\"");
        // 循环取出流中的数据
        byte[] b = new byte[100];
        int len;
        try {
            while ((len = inStream.read(b)) > 0) {
                response.getOutputStream().write(b, 0, len);
            }
            inStream.close();
            responseMsg.setSuccess(true);
        } catch (IOException e) {
            logger.error("Exception:", e);
            responseMsg.setSuccess(false);
        }
        return responseMsg;
    }

}

            Date date1 = linkSecret.getExpireDate();
            //表示链接永久有效
            if (date1 == null) {
                ModelAndView modelAndView = new ModelAndView("shareSecret");
                modelAndView.addObject("link", link);
                return modelAndView;
            } else {
                //得到long类型当前时间
                long dataTemp = System.currentTimeMillis();
                Date date2 = new Date(dataTemp);
                if (date1.before(date2)) {
                    //不能下载
                    ModelAndView modelAndView = new ModelAndView("errorPage");
                    modelAndView.addObject("message", link + "链接失效");
                    //删除本地共享文件夹的内容
                    FileUtil.delete(downloadLink);
                    return modelAndView;
                } else {
                    ModelAndView modelAndView = new ModelAndView("shareSecret");
                    modelAndView.addObject("link", link);
                    return modelAndView;
                }
            }

        }
    }

    //定位到分享页面
    @RequestMapping("/share")
    public ModelAndView share(String link, HttpServletRequest request) {

        logger.warn("zzc:" + link);
        EncryptUtil des = null;
        String linkDecoder = "";
        try {
            des = new EncryptUtil(key, "utf-8");
            linkDecoder = des.decode(link);
        } catch (Exception e) {
            logger.error("Exception:", e);
        }
        ModelAndView modelAndView = new ModelAndView("share");
        modelAndView.addObject("link", link);
        modelAndView.addObject("linkDecoder", linkDecoder);
        User user = (User) request.getSession().getAttribute("user");

/**
 *
 */
@RestController
@RequestMapping(value = "/rest/pan")
public class PanRestV1Controller {
    private Logger logger = LoggerFactory.getLogger(this.getClass());

    /**
     * 文件根目录
     */
    @Value("${fileRootPath}")
    private String root;

    /**
     * file业务处理bean
     */
    @Autowired
    private IFileService fileService;

    /**
     * 文件上传
     *
     * @param path    上传路径
     * @param request Servlet3.0方式上传文件,获取parts
     * @return result
     */
    @RequestMapping("upload")
    public ResponseMsg upload(@RequestParam String path, HttpServletRequest request) {
        try {
            // Servlet3.0方式上传文件
            Collection<Part> parts = request.getParts();
            for (Part part : parts) {
                // 忽略路径字段,只处理文件类型
                if (part.getContentType() != null) {
                    String fullPath = root + "sandeepin/" + path;
                    System.out.println("fullPath:" + fullPath);
                    File f = new File(fullPath, FileUtil.getFileNameByContentDisposition(part.getHeader("content-disposition")));
                    if (!FileUtil.writeInputStreamToFile(part.getInputStream(), f)) {
                        throw new Exception("文件上传失败");
                    }
                }
            }
            return new ResponseMsg("upload successful!");
        } catch (Exception e) {

/**
 */
@ControllerAdvice
public class ExceptionHandler {

    private static final String ERROR_VIEW = "errorPage";

    /**
     * 判断是否是Ajax请求
     *
     * @param httpRequest
     * @return
     */
    private static boolean isAjax(HttpServletRequest httpRequest) {
        return httpRequest.getHeader("X-Requested-With") != null && "XMLHttpRequest".equals(
            httpRequest.getHeader("X-Requested-With"));
    }

    @org.springframework.web.bind.annotation.ExceptionHandler(value = Exception.class)
    public Object errorHandler(HttpServletRequest reqest, HttpServletResponse response, Exception e) {
        if (isAjax(reqest)) {
            return e.getMessage();
        } else {
            ModelAndView mav = new ModelAndView();
            mav.addObject("exception", e);
            mav.addObject("url", reqest.getRequestURL());
            mav.setViewName(ERROR_VIEW);
            return mav;
        }
    }
}

/**
 *
 */
public class WebUtil {

    public static String getUserNameByRequest(HttpServletRequest request) {
 * 登录
 * 管理员admin 密码123 权限0(最高)
 *
 */
@Controller
public class LoginController {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private IUserService userService;

    @Autowired
    private IVerifyCodeService iVerifyCodeService;

    // 登录
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    @ResponseBody
    public Map<String, Object> login(HttpServletRequest request, HttpServletResponse response) {
        Map<String, Object> map = new HashMap<>();
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");
        String encryptedPwd = "";
        try {
            //加密的用户密码
            encryptedPwd = Md5SaltTool.getEncryptedPwd(password);
            logger.warn("encryptedPwd:" + encryptedPwd);
        } catch (NoSuchAlgorithmException e) {
            logger.error("Exception:", e);
        } catch (UnsupportedEncodingException e) {
            logger.error("Exception:", e);
        }
        User dataBaseUser = userService.queryUserByUsername(userName);
        if (dataBaseUser != null && encryptedPwd.equals(dataBaseUser.getPassWord())) {
            User user = new User(userName, encryptedPwd, dataBaseUser.getLevelType(), dataBaseUser.getEmail(),
                dataBaseUser.getPhone(), dataBaseUser.getAlias());
            request.getSession().setAttribute("user", user);
            logger.info("用户登录成功!");
            map.put("result", "1");
            map.put("userName", userName);
        } else if (dataBaseUser != null && !encryptedPwd.equals(dataBaseUser.getPassWord())) {

/**
 * 登录
 * 管理员admin 密码123 权限0(最高)
 *
 */
@Controller
public class LoginController {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private IUserService userService;

    @Autowired
    private IVerifyCodeService iVerifyCodeService;

    // 登录
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    @ResponseBody
    public Map<String, Object> login(HttpServletRequest request, HttpServletResponse response) {
        Map<String, Object> map = new HashMap<>();
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");
        String encryptedPwd = "";
        try {
            //加密的用户密码
            encryptedPwd = Md5SaltTool.getEncryptedPwd(password);
            logger.warn("encryptedPwd:" + encryptedPwd);
        } catch (NoSuchAlgorithmException e) {
            logger.error("Exception:", e);
        } catch (UnsupportedEncodingException e) {
            logger.error("Exception:", e);
        }
        User dataBaseUser = userService.queryUserByUsername(userName);
        if (dataBaseUser != null && encryptedPwd.equals(dataBaseUser.getPassWord())) {
            User user = new User(userName, encryptedPwd, dataBaseUser.getLevelType(), dataBaseUser.getEmail(),
                dataBaseUser.getPhone(), dataBaseUser.getAlias());
            request.getSession().setAttribute("user", user);
            logger.info("用户登录成功!");
            map.put("result", "1");
            map.put("userName", userName);
            path = "/";
        }
        ResponseMsg j = new ResponseMsg();
        if (fileName.isEmpty() || path.isEmpty()) {
            j.setMsg("文件夹名字为空!");
            return j;
        }
        // 获取用户名
        String userName = WebUtil.getUserNameByRequest(request);
        String filePathAndName = userName + "/" + path + "/" + fileName;
        filePathAndName = StringUtil.stringSlashToOne(filePathAndName);
        logger.warn("filePathAndName:" + filePathAndName);
        String b = fileService.fileShareCodeEncode(filePathAndName);
        String secret = "";
        File file = new File(fileRootPath + "/" + filePathAndName);
        String localLink = "/data/share/" + filePathAndName;
        //存入数据库
        LinkSecret linkSecret = linkSecretService.findLinkSecretByLocalLinkAndUserName(localLink, userName);
        if (linkSecret == null) {
            //设置提取密码
            secret = PassWordCreate.createPassWord(secretLen);
            linkSecret = new LinkSecret();
            linkSecret.setLocalLink(localLink);
            linkSecret.setSecret(secret);
            linkSecret.setUserName(userName);
            linkSecret.setDownloadNum(0);
            linkSecret.setFileName(fileName);

            if (expireDays != -1) {
                Calendar cal = Calendar.getInstance();
                cal.add(Calendar.DATE, expireDays);
                Date date = cal.getTime();
                linkSecret.setExpireDate(date);
            }

            logger.warn("b:" + b);
            linkSecret.setSecretLink(b);
            linkSecretService.save(linkSecret);
            //test
            LinkSecret linkSecretTemp = linkSecretService.findLinkSecretByLocalLinkAndUserName(localLink, userName);
            logger.warn(linkSecretTemp.getSecretLink());
            //test

        } else {
            if (expireDays != -1) {
                Calendar cal = Calendar.getInstance();
                cal.add(Calendar.DATE, expireDays);
                Date date = cal.getTime();
                linkSecretService.updateExpireDay(linkSecret, date);
                linkSecretService.updateShareDate(linkSecret, new Date());
                secret = linkSecret.getSecret();
            } else {
                linkSecretService.updateExpireDay(linkSecret, null);
                secret = linkSecret.getSecret();
                        String transcode = (String) map.get("flag");
                        fileMsg.setTranscode(transcode);
                    }
                    // 含有转码文件但没有转码记录,说明之前已完成转码
                    else {
                        fileMsg.setTranscode("complete");
                    }
                }
                // 没有转码文件说明可转码
                else {
                    fileMsg.setTranscode("transcodable");
                }
            }
        }
        return fileMsgList;
    }

    // 用户根目录文件列出
    @RequestMapping(value = "/userfilelist", produces = "application/json; charset=utf-8")
    @ResponseBody
    public List<FileMsg> userFileList(@RequestParam(required = false) String key, String path,
        HttpServletRequest request) {
        if (path == null) {
            path = "/";
        }
        // 获取用户名
        String userName = WebUtil.getUserNameByRequest(request);
        // 列出用户文件
        List<FileMsg> fileMsgList = fileService.userFileList(userName, path);

        // 判断文件转码情况
        for (FileMsg fileMsg : fileMsgList) {
            // 跳过文件夹
            if (fileMsg.getSize().equals("Directory")) {
                continue;
            }
            // 正常文件
            int suffixidx = (int) StringUtil.getfilesuffix(fileMsg.getName(), true);
            String suffix = fileMsg.getName().substring(suffixidx);
            if (suffix.equals("mkv") || suffix.equals("rmvb") || suffix.equals("avi") || suffix.equals("wmv")
                || suffix.equals("3gp") || suffix.equals("rm")) {
                // 取非文件夹的所有文件名
                List<String> namelist = fileMsgList.stream()
                    .filter(f -> !f.getSize().equals("Directory"))
                    .map(FileMsg::getName)
                    .collect(Collectors.toList());
                // 含有转码文件的情况下
    @RequestMapping(value = "/updateUserByUserName")
    @ResponseBody
    public ResponseMsg updateUserByUserName(@RequestParam(required = false) String username,
        @RequestParam(required = false) String alias, @RequestParam(required = false) String password,
        @RequestParam(required = false) String email, @RequestParam(required = false) String phone,
        HttpServletRequest request) {
        ResponseMsg j = new ResponseMsg();
        User user = (User) request.getSession().getAttribute("user");
        if (username != null) {
            user.setUserName(username);
        }
        if (alias != null) {
            user.setAlias(alias);
        }
        if (password != null) {
            try {
                String encryptedPwd = Md5SaltTool.getEncryptedPwd(password);
                user.setPassWord(encryptedPwd);
            } catch (NoSuchAlgorithmException e) {
                logger.error("NoSuchAlgorithmException:", e);
            } catch (UnsupportedEncodingException e) {
                logger.error("UnsupportedEncodingException:", e);
            }

        }
        if (email != null) {
            user.setEmail(email);
        }
        if (phone != null) {
            user.setPhone(phone);
        }
        userService.update(user);
        j.setMsg("更新用户信息成功!");
        j.setSuccess(true);
        return j;
    }

    //检查是否是登录状态
    @RequestMapping(value = "/islogin")
    @ResponseBody
    public ResponseMsg isLogin(@RequestParam(required = false) String savePath, HttpServletRequest request) {
        if (savePath == null) {
        } else {
            j.setMsg("移动失败!");
        }
        return j;
    }

    /**
     * 分块上传 有断点续传的功能
     *
     * @param request
     * @param response
     * @param file
     * @param path
     */
    @RequestMapping(value = "/uploadsevlet", method = RequestMethod.POST)
    @ResponseBody
    public void uploadSevlet(HttpServletRequest request, HttpServletResponse response, MultipartFile file,
        String path) {

        //        String fileMd5 = request.getParameter("fileMd5");
        String chunk = request.getParameter("chunk");
        logger.warn("chunk:" + chunk);
        String fileName = file.getOriginalFilename();
        String userName = WebUtil.getUserNameByRequest(request);
        MultipartHttpServletRequest Murequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> files = Murequest.getFileMap();
        logger.warn("执行前---------");
        if (null != files && !files.isEmpty()) {
            for (MultipartFile item : files.values()) {
                String tempDir = FileUtil.getTempDir(tempPath, userName, fileName);
                tempDir = StringUtil.stringSlashToOne(tempDir);
                logger.warn("tempDir:" + tempDir);
                File dir = new File(tempDir);
                if (!dir.exists()) {
                    dir.mkdirs();
                }
                // 创建分片文件并保存
                File chunkFile = new File(tempDir + "/" + chunk);
                logger.warn(tempDir + "/" + chunk);
                try {
                    chunkFile.createNewFile();
                    item.transferTo(chunkFile);
                } catch (IllegalStateException e) {
        response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName4 + "\"");
        // 循环取出流中的数据
        byte[] b = new byte[100];
        int len;
        try {
            while ((len = inStream.read(b)) > 0) {
                response.getOutputStream().write(b, 0, len);
            }
            inStream.close();
            responseMsg.setSuccess(true);
        } catch (IOException e) {
            logger.error("Exception:", e);
            responseMsg.setSuccess(false);
        }
        return responseMsg;
    }

}

/**
 * 管理员维护的接口
 */
@Controller
public class AdminController {

            modelAndView.setViewName("errorPage");
            modelAndView.addObject("message", "没有权限生成验证码!");
            return modelAndView;
        }
    }

    /**
     * 根据操作人的名字和要验证码人的名字来生成注册码
     *
     * @param customName
     * @param request
     * @return
     */
    @RequestMapping(value = "proRegisterCode", produces = "application/json; charset=utf-8")
    @ResponseBody
    public ResponseMsg proRegisterCode(@RequestParam String customName, HttpServletRequest request) {
        String registerCode = PassWordCreate.createPassWord(6);
        VerifyCode verifyCode = new VerifyCode();
        verifyCode.setState(false);
        verifyCode.setRegisterCode(registerCode);
        verifyCode.setOperatePerson(WebUtil.getUserNameByRequest(request));
        verifyCode.setDate(new Date());
        verifyCode.setCustomName(customName);
        boolean result = iVerifyCodeService.save(verifyCode);
        ResponseMsg responseMsg = new ResponseMsg();
        responseMsg.setSuccess(result);
        if (result) {
            responseMsg.setMsg(registerCode);
        } else {
            responseMsg.setMsg("生成注册码失败,请重新操作!");
        }
        return responseMsg;
    }
}

     * @param path    上传路径
     * @param request Servlet3.0方式上传文件,获取parts
     * @return result
     */
    @RequestMapping("upload")
    public ResponseMsg upload(@RequestParam String path, HttpServletRequest request) {
        try {
            // Servlet3.0方式上传文件
            Collection<Part> parts = request.getParts();
            for (Part part : parts) {
                // 忽略路径字段,只处理文件类型
                if (part.getContentType() != null) {
                    String fullPath = root + "sandeepin/" + path;
                    System.out.println("fullPath:" + fullPath);
                    File f = new File(fullPath, FileUtil.getFileNameByContentDisposition(part.getHeader("content-disposition")));
                    if (!FileUtil.writeInputStreamToFile(part.getInputStream(), f)) {
                        throw new Exception("文件上传失败");
                    }
                }
            }
            return new ResponseMsg("upload successful!");
        } catch (Exception e) {
            return new ResponseMsg();
        }
    }

    /**
     * 空间占用展示
     *
     * @param request HttpServletRequest
     */
    @GetMapping(value = "/space")
    public ResponseMsg getSpaceSize(HttpServletRequest request) {
        // 普通用户限制80G,guest用户限制40G,
        String userName = WebUtil.getUserNameByRequest(request);
        Map<String, String> spaceMap = new HashMap<>(2);
        spaceMap.put("totalSpace", "80");
        double totalSpace = 80;
        if ("guest".equals(userName)) {
            spaceMap.put("totalSpace", "40");
            totalSpace = 40;
        }
        long dirlength = SystemUtil.getDirSpaceSize(root + userName);
        double dirlengthDouble = dirlength / 1024.0 / 1024 / 1024;
        String usedeSpace = String.format("%.2f", dirlengthDouble);
        String freeSpace = String.format("%.2f", totalSpace - Double.parseDouble(usedeSpace));
        spaceMap.put("freeSpace", freeSpace);
        return new ResponseMsg(JSONObject.toJSONString(spaceMap));
    }

    /**
     * 用户文件列表展示

/**
 * 登录
 * 管理员admin 密码123 权限0(最高)
 *
 */
@Controller
public class LoginController {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private IUserService userService;

    @Autowired
    private IVerifyCodeService iVerifyCodeService;

    // 登录
    @RequestMapping(value = "/search", produces = "application/json; charset=utf-8")
    @ResponseBody
    public List<FileMsg> search(@RequestParam String key, String path, HttpServletRequest request) {
        if (path == null) {
            path = "/";
        }
        // 获取用户名
        String userName = WebUtil.getUserNameByRequest(request);
        List<FileMsg> fileMsgList = fileService.search(key, userName, path);

        // 判断文件转码情况
        for (FileMsg fileMsg : fileMsgList) {
            // 跳过文件夹
            if (fileMsg.getSize().equals("Directory")) {
                continue;
            }
            // 正常文件
            int suffixidx = (int) StringUtil.getfilesuffix(fileMsg.getName(), true);
            String suffix = fileMsg.getName().substring(suffixidx);
            if (suffix.equals("mkv") || suffix.equals("rmvb") || suffix.equals("avi") || suffix.equals("wmv")
                || suffix.equals("3gp") || suffix.equals("rm")) {
                // 取非文件夹的所有文件名
                List<String> namelist = fileMsgList.stream()
                    .filter(f -> !f.getSize().equals("Directory"))
                    .map(FileMsg::getName)
                    .collect(Collectors.toList());
                // 含有转码文件的情况下
                if (namelist.contains(fileMsg.getName().substring(0, suffixidx) + "mp4")) {
                    Map<String, Object> map = FfmpegUtil.ffmpegTaskMap.get(fileMsg.getLink());
                    // 含有转码文件且有转码记录
                    if (null != map) {
                        String transcode = (String) map.get("flag");
                        fileMsg.setTranscode(transcode);
                    }
                    // 含有转码文件但没有转码记录,说明之前已完成转码
                    else {
                        fileMsg.setTranscode("complete");
                    }
                }
                // 没有转码文件说明可转码
                else {
                    fileMsg.setTranscode("transcodable");
                }
            }
        }
        return fileMsgList;
    }

    // 用户根目录文件列出
    @RequestMapping(value = "/userfilelist", produces = "application/json; charset=utf-8")
    @ResponseBody
    public List<FileMsg> userFileList(@RequestParam(required = false) String key, String path,
        HttpServletRequest request) {
        if (path == null) {
            return responseMsg;
        }
    }

    // 文件提取码生成,当再次分享同一个文件,只更新过期时间
    @RequestMapping(value = "/generateShareLink", produces = "application/json; charset=utf-8")
    @ResponseBody
    public ResponseMsg generateShareLink(@RequestParam String expireDay, String fileName, String path,
        HttpServletRequest request) {
        String expireDayString = expireDay;
        int expireDays = 3;
        if (expireDayString != null) {
            if (expireDayString.equals("永久有效")) {
                expireDays = -1;
            } else {
                expireDays = Integer.parseInt(expireDayString);
            }
        }
        if (path == null) {
            path = "/";
        }
        ResponseMsg j = new ResponseMsg();
        if (fileName.isEmpty() || path.isEmpty()) {
            j.setMsg("文件夹名字为空!");
            return j;
        }
        // 获取用户名
        String userName = WebUtil.getUserNameByRequest(request);
        String filePathAndName = userName + "/" + path + "/" + fileName;
        filePathAndName = StringUtil.stringSlashToOne(filePathAndName);
        logger.warn("filePathAndName:" + filePathAndName);
        String b = fileService.fileShareCodeEncode(filePathAndName);
        String secret = "";
        File file = new File(fileRootPath + "/" + filePathAndName);
        String localLink = "/data/share/" + filePathAndName;
        //存入数据库
        LinkSecret linkSecret = linkSecretService.findLinkSecretByLocalLinkAndUserName(localLink, userName);
        if (linkSecret == null) {
            //设置提取密码
            secret = PassWordCreate.createPassWord(secretLen);
            linkSecret = new LinkSecret();
            linkSecret.setLocalLink(localLink);
            linkSecret.setSecret(secret);
            linkSecret.setUserName(userName);
            linkSecret.setDownloadNum(0);
            linkSecret.setFileName(fileName);

            if (expireDays != -1) {
                Calendar cal = Calendar.getInstance();
                cal.add(Calendar.DATE, expireDays);
    // 登录
    @RequestMapping(value = "/login", method = RequestMethod.POST)
    @ResponseBody
    public Map<String, Object> login(HttpServletRequest request, HttpServletResponse response) {
        Map<String, Object> map = new HashMap<>();
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");
        String encryptedPwd = "";
        try {
            //加密的用户密码
            encryptedPwd = Md5SaltTool.getEncryptedPwd(password);
            logger.warn("encryptedPwd:" + encryptedPwd);
        } catch (NoSuchAlgorithmException e) {
            logger.error("Exception:", e);
        } catch (UnsupportedEncodingException e) {
            logger.error("Exception:", e);
        }
        User dataBaseUser = userService.queryUserByUsername(userName);
        if (dataBaseUser != null && encryptedPwd.equals(dataBaseUser.getPassWord())) {
            User user = new User(userName, encryptedPwd, dataBaseUser.getLevelType(), dataBaseUser.getEmail(),
                dataBaseUser.getPhone(), dataBaseUser.getAlias());
            request.getSession().setAttribute("user", user);
            logger.info("用户登录成功!");
            map.put("result", "1");
            map.put("userName", userName);
        } else if (dataBaseUser != null && !encryptedPwd.equals(dataBaseUser.getPassWord())) {
            logger.info("密码错误!");
            map.put("result", "2");
        } else {
            logger.info("用户不存在!");
            map.put("result", "0");
        }
        return map;
    }

    // 退出登录
    @RequestMapping(value = "/quit", method = RequestMethod.GET)
    public String loginOut(HttpServletRequest request) {
        if (!SystemUtil.isWindows()) {
            // 非windows环境下要删除用户文件
            FileUtil.deleteDir(fileRootPath + WebUtil.getUserNameByRequest(request));
        }

        // 清除session
        request.getSession().invalidate();

请添加图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐