服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Springboot实例讲解实现专业材料认证管理系统流程

Springboot实例讲解实现专业材料认证管理系统流程

2023-02-15 14:58编程指南针 Java教程

这是一个基于java的毕业设计项目,毕设课题为springboot框架的知识产权服务平台系统,是一个采用b/s结构的javaweb项目,需要的朋友可以参考下

一,项目简介

这是一个基于java的毕业设计项目,毕设课题为springboot框架的知识产权服务平台系统, 是一个采用b/s结构的javaweb项目, 开发工具eclipsei/eclipse, 项目框架jsp+springboot+mybatis, 知识产权服务平台系统采用mysql进行数据存储, 并基于mybatis进行了orm实体关系映射, 该知识产权服务平台系统系统通过模块化实现,支持多角色权限管理系统, 提升了管理效率, 知识产权服务平台系统参考文献可见附件中的毕业论文与毕设源码

该知识产权服务平台系统项目采用mvc设计模式, 其中知识产权服务平台系统的视图与知识产权服务平台系统业务逻辑进行了分层设计, 特别方便后续知识产权服务平台系统系统的开发

设计这种mvc的架构的好处是完全的可以将业务进行分层, 进行高内聚低耦合, 分为service层, dao层, controller层, 架构清晰

本项目主要基于Springboot 和ruoyi来开发一套专业认证材料管理系统,对各专业相关的文档材料进行管理,主要包含的功能模块有:

系统管理:用户管理、角色管理、菜单管理、操作日志

业务模块:专业管理、认证材料管理、相关网站管理

 

二,环境介绍

语言环境:Java: jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat: tomcat8.5.31

开发工具:IDEA或eclipse

开发技术:Springboot+ruoyi+bootstrap

 

三,系统展示

用户登陆:

Springboot实例讲解实现专业材料认证管理系统流程

用户注册:

Springboot实例讲解实现专业材料认证管理系统流程

用户管理

Springboot实例讲解实现专业材料认证管理系统流程

角色管理

Springboot实例讲解实现专业材料认证管理系统流程

菜单管理

Springboot实例讲解实现专业材料认证管理系统流程

操作管理

Springboot实例讲解实现专业材料认证管理系统流程

专业管理

Springboot实例讲解实现专业材料认证管理系统流程

认证材料管理

Springboot实例讲解实现专业材料认证管理系统流程

相关网站

Springboot实例讲解实现专业材料认证管理系统流程

个人中心

Springboot实例讲解实现专业材料认证管理系统流程

修改密码

Springboot实例讲解实现专业材料认证管理系统流程

 

四,核心代码展示

package com.code.project.common;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.code.common.constant.Constants;
import com.code.common.utils.StringUtils;
import com.code.common.utils.file.FileUploadUtils;
import com.code.common.utils.file.FileUtils;
import com.code.common.utils.security.ShiroUtils;
import com.code.framework.config.RuoYiConfig;
import com.code.framework.config.ServerConfig;
import com.code.framework.web.domain.AjaxResult;
/**
* 通用请求处理
*
* @author ruoyi
*/
@Controller
public class CommonController
{
  private static final Logger log = LoggerFactory.getLogger(CommonController.class);
  @Autowired
  private ServerConfig serverConfig;
  /**
   * 通用下载请求
   *
   * @param fileName 文件名称
   * @param delete 是否删除
   */
  @GetMapping("common/download")
  public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
  {
      try
      {
          if (!FileUtils.isValidFilename(fileName))
          {
              throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
          }
          String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
          String filePath = System.getProperty("user.dir").replace('\\','/')+RuoYiConfig.getDownloadPath() + fileName;
          System.out.println(filePath);
          response.setCharacterEncoding("utf-8");
          response.setContentType("multipart/form-data");
          response.setHeader("Content-Disposition",
                  "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, realFileName));
          FileUtils.writeBytes(filePath, response.getOutputStream());
          if (delete)
          {
              FileUtils.deleteFile(filePath);
          }
      }
      catch (Exception e)
      {
          log.error("下载文件失败", e);
      }
  }
  /**
   * 通用上传请求
   */
  @PostMapping("/common/upload")
  @ResponseBody
  public AjaxResult uploadFile(MultipartFile file) throws Exception
  {
      try
      {
          // 上传文件路径
          String filePath = System.getProperty("user.dir").replace('\\','/')+RuoYiConfig.getUploadPath();
          System.out.println(filePath);
          // 上传并返回新文件名称
          String fileName = FileUploadUtils.upload(filePath, file);
          String url = serverConfig.getUrl() + fileName;
          AjaxResult ajax = AjaxResult.success();
          ajax.put("fileName", fileName);
          ajax.put("url", url);
          return ajax;
      }
      catch (Exception e)
      {
          return AjaxResult.error(e.getMessage());
      }
  }
  /**
   * 本地资源通用下载
   */
  @GetMapping("/common/download/resource")
  public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
          throws Exception
  {
      // 本地资源路径
      String localPath = System.getProperty("user.dir").replace('\\','/')+RuoYiConfig.getProfile();
      // 数据库资源地址
      String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
      // 下载名称
      String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
      response.setCharacterEncoding("utf-8");
      response.setContentType("multipart/form-data");
      response.setHeader("Content-Disposition",
              "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, downloadName));
      FileUtils.writeBytes(downloadPath, response.getOutputStream());
  }
}
package com.code.project.monitor.online.controller;
import java.util.List;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.code.common.utils.security.ShiroUtils;
import com.code.framework.aspectj.lang.annotation.Log;
import com.code.framework.aspectj.lang.enums.BusinessType;
import com.code.framework.shiro.session.OnlineSessionDAO;
import com.code.framework.web.controller.BaseController;
import com.code.framework.web.domain.AjaxResult;
import com.code.framework.web.page.TableDataInfo;
import com.code.project.monitor.online.domain.OnlineSession;
import com.code.project.monitor.online.domain.UserOnline;
import com.code.project.monitor.online.domain.OnlineSession.OnlineStatus;
import com.code.project.monitor.online.service.IUserOnlineService;
/**
* 在线用户监控
* 
* @author ruoyi
*/
@Controller
@RequestMapping("/monitor/online")
public class UserOnlineController extends BaseController
{
  private String prefix = "monitor/online";
  @Autowired
  private IUserOnlineService userOnlineService;
  @Autowired
  private OnlineSessionDAO onlineSessionDAO;
  @RequiresPermissions("monitor:online:view")
  @GetMapping()
  public String online()
  {
      return prefix + "/online";
  }
  @RequiresPermissions("monitor:online:list")
  @PostMapping("/list")
  @ResponseBody
  public TableDataInfo list(UserOnline userOnline)
  {
      startPage();
      List<UserOnline> list = userOnlineService.selectUserOnlineList(userOnline);
      return getDataTable(list);
  }
  @RequiresPermissions("monitor:online:batchForceLogout")
  @Log(title = "在线用户", businessType = BusinessType.FORCE)
  @PostMapping("/batchForceLogout")
  @ResponseBody
  public AjaxResult batchForceLogout(@RequestParam("ids[]") String[] ids)
  {
      for (String sessionId : ids)
      {
          UserOnline online = userOnlineService.selectOnlineById(sessionId);
          if (online == null)
          {
              return error("用户已下线");
          }
          OnlineSession onlineSession = (OnlineSession) onlineSessionDAO.readSession(online.getSessionId());
          if (onlineSession == null)
          {
              return error("用户已下线");
          }
          if (sessionId.equals(ShiroUtils.getSessionId()))
          {
              return error("当前登陆用户无法强退");
          }
          onlineSession.setStatus(OnlineStatus.off_line);
          onlineSessionDAO.update(onlineSession);
          online.setStatus(OnlineStatus.off_line);
          userOnlineService.saveOnline(online);
      }
      return success();
  }
  @RequiresPermissions("monitor:online:forceLogout")
  @Log(title = "在线用户", businessType = BusinessType.FORCE)
  @PostMapping("/forceLogout")
  @ResponseBody
  public AjaxResult forceLogout(String sessionId)
  {
      UserOnline online = userOnlineService.selectOnlineById(sessionId);
      if (sessionId.equals(ShiroUtils.getSessionId()))
      {
          return error("当前登陆用户无法强退");
      }
      if (online == null)
      {
          return error("用户已下线");
      }
      OnlineSession onlineSession = (OnlineSession) onlineSessionDAO.readSession(online.getSessionId());
      if (onlineSession == null)
      {
          return error("用户已下线");
      }
      onlineSession.setStatus(OnlineStatus.off_line);
      onlineSessionDAO.update(onlineSession);
      online.setStatus(OnlineStatus.off_line);
      userOnlineService.saveOnline(online);
      return success();
  }
}
package com.code.project.monitor.server.controller;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import com.code.framework.web.controller.BaseController;
import com.code.project.monitor.server.domain.Server;
/**
* 服务器监控
* 
* @author ruoyi
*/
@Controller
@RequestMapping("/monitor/server")
public class ServerController extends BaseController
{
  private String prefix = "monitor/server";
  @RequiresPermissions("monitor:server:view")
  @GetMapping()
  public String server(ModelMap mmap) throws Exception
  {
      Server server = new Server();
      server.copyTo();
      mmap.put("server", server);
      return prefix + "/server";
  }
}

 

五,项目总结

本项目界面简洁大方,功能完整,适合做课程设计和毕业设计使用,另外可以在此项目框架的基础上自行添加或修改相关的功能。

到此这篇关于Springboot实例讲解实现专业材料认证管理系统流程的文章就介绍到这了,更多相关Springboot材料认证管理系统内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/whirlwind526/article/details/125109973

延伸 · 阅读

精彩推荐