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

用戶注冊:

用戶管理

角色管理

菜單管理

操作管理

專業(yè)管理

認證材料管理

相關(guān)網(wǎng)站

個人中心

修改密碼

四,核心代碼展示
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ù)據(jù)庫資源地址
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;
/**
* 服務(wù)器監(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";
}
}五,項目總結(jié)
本項目界面簡潔大方,功能完整,適合做課程設(shè)計和畢業(yè)設(shè)計使用,另外可以在此項目框架的基礎(chǔ)上自行添加或修改相關(guān)的功能。
到此這篇關(guān)于Springboot實例講解實現(xiàn)專業(yè)材料認證管理系統(tǒng)流程的文章就介紹到這了,更多相關(guān)Springboot材料認證管理系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 基于Springboot實現(xiàn)送水公司信息管理系統(tǒng)
- java?Springboot實現(xiàn)教務(wù)管理系統(tǒng)
- 基于Java?SpringBoot的前后端分離信息管理系統(tǒng)的設(shè)計和實現(xiàn)
- 基于java SSM springboot實現(xiàn)抗疫物質(zhì)信息管理系統(tǒng)
- 基于java SSM springboot實現(xiàn)景區(qū)行李寄存管理系統(tǒng)
- 基于java ssm springboot+mybatis酒莊內(nèi)部管理系統(tǒng)設(shè)計和實現(xiàn)
- 基于java Springboot實現(xiàn)教務(wù)管理系統(tǒng)詳解
- 使用springboot制作博客管理系統(tǒng)
- springboot+vue制作后臺管理系統(tǒng)項目
相關(guān)文章
springboot?實現(xiàn)不同context-path下的會話共享
這篇文章主要介紹了springboot?實現(xiàn)不同context-path下的會話共享,基于很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
Java實現(xiàn)網(wǎng)絡(luò)文件下載以及下載到指定目錄
在Spring框架中,StreamUtils和FileCopyUtils兩個工具類提供了方便的文件下載功能,它們都屬于org.springframework.util包,可以通過簡單的方法調(diào)用實現(xiàn)文件流的復制和下載,這些工具類支持多種參數(shù)傳遞,涵蓋了文件下載的多種場景2024-09-09
如何通過eclipse web項目導入itellij idea并啟動
這篇文章主要介紹了如何通過eclipse web項目導入itellij idea并啟動,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-12-12
Java實現(xiàn)枚舉狀態(tài)轉(zhuǎn)換的方法詳解
在軟件開發(fā)中,我們經(jīng)常需要處理不同系統(tǒng)或模塊間的狀態(tài)轉(zhuǎn)換,今天,我將通過一個電商訂單與物流狀態(tài)的轉(zhuǎn)換案例,展示如何優(yōu)雅地實現(xiàn)枚舉間的互相轉(zhuǎn)換,需要的朋友可以參考下2025-04-04
SpringBoot整合SpringSecurity和JWT的示例
這篇文章主要介紹了SpringBoot整合SpringSecurity和JWT的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-06-06
IDEA編寫SpringBoot項目時使用Lombok報錯“找不到符號”的原因和解決
本文主要介紹了IDEA編寫SpringBoot項目時使用Lombok報錯“找不到符號”,詳細介紹了幾種可能會出現(xiàn)的問題及其解決方法,具有一定的參考價值,感興趣的可以了解一下2025-03-03

