Springboot實例講解實現(xiàn)專業(yè)材料認證管理系統(tǒng)流程
一,項目簡介
這是一個基于java的畢業(yè)設計項目,畢設課題為springboot框架的知識產權服務平臺系統(tǒng), 是一個采用b/s結構的javaweb項目, 開發(fā)工具eclipsei/eclipse, 項目框架jsp+springboot+mybatis, 知識產權服務平臺系統(tǒng)采用mysql進行數(shù)據存儲, 并基于mybatis進行了orm實體關系映射, 該知識產權服務平臺系統(tǒng)系統(tǒng)通過模塊化實現(xiàn),支持多角色權限管理系統(tǒng), 提升了管理效率, 知識產權服務平臺系統(tǒng)參考文獻可見附件中的畢業(yè)論文與畢設源碼
該知識產權服務平臺系統(tǒng)項目采用mvc設計模式, 其中知識產權服務平臺系統(tǒng)的視圖與知識產權服務平臺系統(tǒng)業(yè)務邏輯進行了分層設計, 特別方便后續(xù)知識產權服務平臺系統(tǒng)系統(tǒng)的開發(fā)
設計這種mvc的架構的好處是完全的可以將業(yè)務進行分層, 進行高內聚低耦合, 分為service層, dao層, controller層, 架構清晰
本項目主要基于Springboot 和ruoyi來開發(fā)一套專業(yè)認證材料管理系統(tǒng),對各專業(yè)相關的文檔材料進行管理,主要包含的功能模塊有:
系統(tǒng)管理:用戶管理、角色管理、菜單管理、操作日志
業(yè)務模塊:專業(yè)管理、認證材料管理、相關網站管理
二,環(huán)境介紹
語言環(huán)境:Java: jdk1.8
數(shù)據庫:Mysql: mysql5.7
應用服務器:Tomcat: tomcat8.5.31
開發(fā)工具:IDEA或eclipse
開發(fā)技術:Springboot+ruoyi+bootstrap
三,系統(tǒng)展示
用戶登陸:

用戶注冊:

用戶管理

角色管理

菜單管理

操作管理

專業(yè)管理

認證材料管理

相關網站

個人中心

修改密碼

四,核心代碼展示
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();
// 數(shù)據庫資源地址
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;
/**
* 在線用戶監(jiān)控
*
* @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;
/**
* 服務器監(jiān)控
*
* @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";
}
}五,項目總結
本項目界面簡潔大方,功能完整,適合做課程設計和畢業(yè)設計使用,另外可以在此項目框架的基礎上自行添加或修改相關的功能。
到此這篇關于Springboot實例講解實現(xiàn)專業(yè)材料認證管理系統(tǒng)流程的文章就介紹到這了,更多相關Springboot材料認證管理系統(tǒng)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- 基于Springboot實現(xiàn)送水公司信息管理系統(tǒng)
- java?Springboot實現(xiàn)教務管理系統(tǒng)
- 基于Java?SpringBoot的前后端分離信息管理系統(tǒng)的設計和實現(xiàn)
- 基于java SSM springboot實現(xiàn)抗疫物質信息管理系統(tǒng)
- 基于java SSM springboot實現(xiàn)景區(qū)行李寄存管理系統(tǒng)
- 基于java ssm springboot+mybatis酒莊內部管理系統(tǒng)設計和實現(xiàn)
- 基于java Springboot實現(xiàn)教務管理系統(tǒng)詳解
- 使用springboot制作博客管理系統(tǒng)
- springboot+vue制作后臺管理系統(tǒng)項目
相關文章
MyBatis saveBatch 性能調優(yōu)的實現(xiàn)
本文主要介紹了MyBatis saveBatch 性能調優(yōu)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07
帶有@Transactional和@Async的循環(huán)依賴問題的解決
這篇文章主要介紹了帶有@Transactional和@Async的循環(huán)依賴問題的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04
Java AbstractMethodError原因案例詳解
這篇文章主要介紹了Java AbstractMethodError原因案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-08-08

