基于javaweb+mysql的ssm+maven大学生就业创新创业管理系统(java+ssm+html+jquery+bootstrap+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的SSM+Maven大学生就业创新创业管理系统(java+ssm+html+jquery+bootstrap+mysql)
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本; 6.是否Maven项目:是;
技术栈
- 后端:Spring+SpringMVC+Mybatis 2. 前端:JSP+CSS+JavaScript+jQuery+bootstrap
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置;
@RequestMapping("/getFileListByUserNum.do")
@ResponseBody
public ServerResponse getFileListByUserNum(@RequestParam(value = "page", defaultValue = "1") int page, FileHub fileHub,
@RequestParam(value = "limit", defaultValue = "5") int limit, HttpSession session,
@RequestParam("userNumAdmin") String userNumAdmin, @RequestParam("roleId") Integer roleId) {
User user = (User) session.getAttribute("activeUser");
// if (!user.getUserNum().equals(userNum)) {
// return ServerResponse.createByErrorMessage("安全检查不通过,用户已过时或不存在!");
// }
return fileAdminService.getFileListByUserNum(page, limit, userNumAdmin, roleId, fileHub);
}
/**
* 根据文件id删除文件
* @param userNum
* @param session
* @param request
* @param id
* @param userNumAdmin
* @param roleId
* @param fileName
* @return
*/
@RequestMapping("/removeFileById.do")
@ResponseBody
public ServerResponse removeFileById(@RequestParam("userNum") String userNum, HttpSession session, HttpServletRequest request,
@RequestParam("id") Integer id, @RequestParam("userNumAdmin") String userNumAdmin,
@RequestParam("roleId") Integer roleId, @RequestParam("fileName") String fileName) {
User user = (User) session.getAttribute("activeUser");
// if (!user.getUserNum().equals(userNum)) {
// return ServerResponse.createByErrorMessage("安全检查不通过,用户已过时或不存在!");
// }
String filePath = request.getServletContext().getRealPath("/hub/");
return fileAdminService.removeFileById(filePath, fileName, userNum, id, roleId);
}
/**
* 批量删除文件
* @param userNumAdmin
* @param session
* @param request
* @param userNums
* @param session
* @return
*/
@RequestMapping("/batchAddUser.do")
@ResponseBody
public ServerResponse batchAddUser(UserAdminDto userAdminDto, @RequestParam("roleId") Integer roleId,
@RequestParam("roleIdAdmin") int roleIdAdmin, HttpSession session) {
User user = (User) session.getAttribute("activeUser");
// if (user == null) {
// return ServerResponse.createByErrorMessage("安全检查不通过,用户已过时或不存在!");
// }
return userAdminService.batchAddUser(userAdminDto, roleId, roleIdAdmin);
}
}
/**
* Created by ljw
*/
@Controller
}
/**
* 忘记密码页面
*
* @return
*/
@RequestMapping("/goForgetPwd.do")
public String goForgotPwd() {
return "common/forgetPwd";
}
// 首页
// 重要通知详情
@RequestMapping(value = "/goShowInformDetail.do", method = RequestMethod.GET)
public String goShowInformDetail() {
return "show/showInformDetail";
}
// 重要通知详情
@RequestMapping(value = "/goShowInformMore.do", method = RequestMethod.GET)
public String goShowInformMore() {
return "show/showInformMore";
}
@RequestMapping(value = "/goShowInfoemDetail.do", method = RequestMethod.GET)
public String goShowInfoemDetail() {
return "show/showInformDetail";
}
@RequestMapping(value = "/goShowItemMore.do", method = RequestMethod.GET)
public String goShowItemMore() {
return "show/showItemMore";
}
@RequestMapping(value = "/goShowItemDetail.do", method = RequestMethod.GET)
public String goShowItemDetail() {
return "show/showItemDetail";
}
@RequestMapping(value = "/goShowDownLoadMore.do", method = RequestMethod.GET)
public String goShowDownLoadMore() {
return "show/showDownLoadMore";
}
}
return ServerResponse.createBySuccess();
}
/**
* 一键下载文件
* @param userNum
* @param roleId
* @param request
* @param fileNames
* @param response
* @return
*/
@RequestMapping(value = "/onekeyDownloadFile.do", method = RequestMethod.POST)
@ResponseBody
public ServerResponse onekeyDownloadFile(@RequestParam("userNum") String userNum, @RequestParam("roleId") int roleId,
HttpServletRequest request, String[] fileNames, HttpServletResponse response) {
try {
// String fileName = "";
//
// for (int i = 0; i < fileNames.length; i++) {
// fileName = fileNames[i];
// // request.getServletContext()得到的是ServletContext对象,
// // getRealPath(“/”) 获取实际路径,“/”指代项目根目录,所以代码返回的是项目在容器中的实际发布运行的根路径。
// String path = request.getServletContext().getRealPath("/hub/") + fileName;
// // 获取输入流
// InputStream bis = new BufferedInputStream(new FileInputStream(new File(path)));
// // 转码,免得文件名中文乱码
// fileName = URLEncoder.encode(fileName, "UTF-8");
//
// // 设置文件下载头
// response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
// //1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
// response.setContentType("multipart/form-data");
// BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
// int length = 0;
// while ((length = bis.read()) != -1) {
// out.write(length);
// out.flush();
// }
// out.close();
* Created by ljw
*/
@Controller
public class InformAdminController {
@Autowired
private InformService informService;
@Autowired
private UserInfoService userInfoService;
/**
* 根据userNum获取通知公告
* @param userNum
* @return
*/
@RequestMapping("/getInformByUserNum.do")
@ResponseBody
public ServerResponse<List<Inform>> getInformByUserNum(String userNum) {
return informService.getInformByUserNum(userNum);
}
/**
* 获取全部的通知公告列表并分页显示
* @param page
* @param limit
* @param session
* @param userNum
* @param roleId
* @return
*/
@RequestMapping("/getAllInformList.do")
@ResponseBody
public ServerResponse<List<Inform>> getAllInformList(@RequestParam(value = "page",defaultValue = "1") int page,
@RequestParam(value = "limit",defaultValue = "10") int limit, HttpSession session,
@RequestParam(value = "userNum", required = false) String userNum, @RequestParam("roleId") Integer roleId) {
User user = (User) session.getAttribute("activeUser");
// if (!user.getUserNum().equals(userNum)) {
// return ServerResponse.createByErrorMessage("安全检查不通过,用户已过时或不存在!");
// }
return informService.getAllInformList(page, limit, userNum, roleId);
List<String> filePathsTem = new ArrayList<String>();
for (File fileTem : files) {
filePathsTem.add(fileTem.toString());
}
return zipFile(zipBasePath, zipName, zipFilePath, filePathsTem, zos);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
} catch (Exception e) {
System.out.println("FileAdminException e关闭数据流失败!");
}
return null;
}
}
/**
* Created by ljw
*/
@Controller
public class ItemAdminController {
System.out.println(path);
try {
// 获取输入流
InputStream bis = new BufferedInputStream(new FileInputStream(new File(path)));
// 转码,免得文件名中文乱码
fileName = URLEncoder.encode(fileHub.getFileName(), "UTF-8");
// 设置文件下载头
response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
int length = 0;
while ((length = bis.read()) != -1) {
out.write(length);
out.flush();
}
out.close();
} catch (IOException e) {
System.out.println("你关闭了已连接的对象流!");
return null;
}
return ServerResponse.createBySuccess();
}
/**
* 一键下载文件
* @param userNum
* @param roleId
* @param request
* @param fileNames
* @param response
* @return
*/
@RequestMapping(value = "/onekeyDownloadFile.do", method = RequestMethod.POST)
@ResponseBody
public ServerResponse onekeyDownloadFile(@RequestParam("userNum") String userNum, @RequestParam("roleId") int roleId,
HttpServletRequest request, String[] fileNames, HttpServletResponse response) {
* @param userNum
* @param roleAdminId
* @return
*/
@RequestMapping(value = "/addRolePerm.do", method = RequestMethod.POST)
@ResponseBody
public ServerResponse addRolePerm(Integer[] permIds, Integer roleId, String userNum, int roleAdminId) {
// User user = (User) session.getAttribute("activeUser");
//
// if (!user.getUserNum().equals(userNum)) {
// return ServerResponse.createByErrorMessage("安全检查不通过,用户已过时或不存在!");
// }
System.out.println(permIds + "\t" + roleId);
return permAdminService.addRolePerm(permIds, roleId, roleAdminId);
}
/**
* 用户授权
* @param permIds
* @param roleId
* @param userNum
* @param userAdminNum
* @return
*/
@RequestMapping(value = "/addRolePermWithUserNum.do", method = RequestMethod.POST)
@ResponseBody
public ServerResponse addRolePermWithUserNum(Integer[] permIds, Integer roleId, String userNum, String userAdminNum) {
// User user = (User) session.getAttribute("activeUser");
//
// if (!user.getUserNum().equals(userNum)) {
// return ServerResponse.createByErrorMessage("安全检查不通过,用户已过时或不存在!");
// }
System.out.println(permIds + "\t" + roleId);
return permAdminService.addRolePermWithUserNum(permIds, roleId, userNum);
}
}
return informService.getAllInformList(page, limit, userNum, roleId);
}
/**
* 模糊搜索文件并分页显示
* @param page
* @param limit
* @param session
* @param userNum
* @param roleId
* @param inform
* @return
*/
@RequestMapping("/searchInformListWithCondition.do")
@ResponseBody
public ServerResponse<List<Inform>> searchInformListWithCondition(@RequestParam(value = "page", defaultValue = "1") int page,
@RequestParam(value = "limit", defaultValue = "5") int limit, HttpSession session,
@RequestParam("userNum") String userNum, @RequestParam("roleId") Integer roleId,
Inform inform) {
User user = (User) session.getAttribute("activeUser");
// if (!user.getUserNum().equals(userNum)) {
// return ServerResponse.createByErrorMessage("安全检查不通过,用户已过时或不存在!");
// }
return informService.searchInformListWithCondition(page, limit, userNum, roleId, inform);
}
/**
* 根据id删除通知公告
* @param userNum
* @param id
* @param roleId
* @param session
* @return
*/
@RequestMapping(value = "/removeInformById.do", method = RequestMethod.GET)
@ResponseBody
public ServerResponse removeInformById(@RequestParam("userNum") String userNum, @RequestParam("id") Integer id,
@RequestParam("roleId") Integer roleId, HttpSession session) {
User user = (User) session.getAttribute("activeUser");
// if (!user.getUserNum().equals(userNum)) {
// return ServerResponse.createByErrorMessage("安全检查不通过,用户已过时或不存在!");
// }
return informService.removeInformById(id, roleId);
}
/**
// PDF.js
}
else {// 转换失败
System.out.println("转换失败");
return ServerResponse.createByErrorMessage("文档过大,打开失败");
}
}
// // 不能以ajax下载
// @RequestMapping(value = "/downloadFile.do", method = RequestMethod.GET)
// @ResponseBody
// public ResponseEntity<byte[]> downloadFile(String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException {
// HttpHeaders headers = new HttpHeaders();
//
// // getRealPath(“/”) 获取实际路径,“/”指代项目根目录,所以代码返回的是项目在容器中的实际发布运行的根路径。
// String filePath = request.getServletContext().getRealPath("/hub/") + fileName;
// File file = new File(filePath);
//
// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
// headers.setContentDispositionFormData("attachment", fileName);
//
// return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
// headers, HttpStatus.CREATED);
// }
/**
* 根据userNum修改文件类型
* @param fileHub
* @param userNumAdmin
* @param session
* @param roleId
* @return
*/
@RequestMapping(value = "/modifyFileKindWithUserNum.do", method = RequestMethod.GET)
@ResponseBody
public ServerResponse modifyFileKindWithUserNum(FileHub fileHub, @RequestParam("userNumAdmin") String userNumAdmin,
HttpSession session, @RequestParam("roleId") int roleId) {
User user = (User) session.getAttribute("activeUser");
// if (!user.getUserNum().equals(userNumAdmin)) {
/**
* Created by ljw
*/
@Controller
public class LoginController {
@Autowired
private UserService userService;
@Autowired
private UserInfoService userInfoService;
@Autowired
private RolePermService rolePermService;
/**
* 通过userNum和userPwd登录系统
*
* @param userNum
* @param userPwd
* @param session
* @return
*/
@RequestMapping(value = "/login.do", method = RequestMethod.POST)
@ResponseBody
public ServerResponse login(String userNum, String userPwd, HttpSession session) {
ServerResponse serverResponse = userService.login(userNum, userPwd);
if (serverResponse.getStatus() == 0) {
User user = (User) serverResponse.getData();
UserInfo userInfo = userInfoService.findByUserNum(user.getUserNum()).getData();
user.setUserImg(userInfo.getUserImg());
session.setAttribute("activeUser", user);
}
return serverResponse;
}
/**
* 根据roleId获取菜单
*
* @param userNum
* @param roleId
* @param session
* @return
@RequestMapping("/getFinishedItemList.do")
@ResponseBody
public ServerResponse getFinishedItemList(@RequestParam(value = "pageNum",defaultValue = "1") int pageNum,
@RequestParam(value = "pageSize",defaultValue = "10") int pageSize,
HttpSession session, String itemName, String itemDate) {
return itemAdminService.getFinishedItem(pageNum, pageSize, itemName, itemDate);
}
/**
* 根据ItemNum和userNum检查项目是否评审
* @param itemNum
* @param userNum
* @return
*/
@RequestMapping("/checkIsReviewWithItemNumAndUserNum.do")
@ResponseBody
public ServerResponse checkIsReviewWithItemNumAndUserNum(String itemNum, String userNum, int reviewLevel) {
return itemAdminService.checkIsReviewWithItemNum(itemNum, userNum, reviewLevel);
}
/**
* 根据itemNum获取项目状态
* @param itemNum
* @return
*/
@RequestMapping("/getItemStatusWithItemNum.do")
@ResponseBody
public ServerResponse getItemStatusWithItemNum(String itemNum) {
return itemAdminService.getItemStatusWithItemNum(itemNum);
}
/**
* 获取历届项目年份
* @return
*/
@RequestMapping("/getItemDate.do")
@ResponseBody
public ServerResponse getItemDate() {
return itemAdminService.getItemDate();
}
/**
* 根据itemNum获取项目详情
* @param itemNum
* @return
*/
@RequestMapping("/getItemDetailWithItemNum.do")
@ResponseBody
public ServerResponse getItemDetailWithItemNum(String itemNum) {
return itemAdminService.getItemDetailWithItemId(itemNum);
}
@RequestMapping("/removeUserItemWithReview.do")
//1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
int length = 0;
while ((length = bis.read()) != -1) {
out.write(length);
out.flush();
}
out.close();
} catch (IOException e) {
System.out.println("你关闭了已连接的对象流!");
System.out.println("FileAdminController:" + e.getMessage());
}
}
/**
* 根据文件名预览文件
* @param fileName
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/previewFile.do", method = RequestMethod.GET)
@ResponseBody
public ServerResponse previewFile(String fileName, HttpServletRequest request, HttpServletResponse response) {
String path = request.getServletContext().getRealPath("/hub/") + fileName;
System.out.println(path);
//文件上传转换,获取返回数据
String convertByFile = SubmitPost("http://dcs.yozosoft.com:80/upload", path, "1");
// String convertByFile = SubmitPost("http://dcs.yozosoft.com:80/upload", "C:/Users/ljw/Desktop/PDF.js", "1");
JSONObject obj = JSONObject.parseObject(convertByFile);
if ("0".equals(obj.getString("result"))) {// 转换成功
String urlData = obj.getString("data");
urlData = urlData.replace("[\"", "");//去掉[
urlData = urlData.replace("\"]", "");//去掉]
//最后urlData是文件的浏览地址
System.out.println(urlData);//打印网络文件预览地址
return ServerResponse.createBySuccess("预览文件正在打开,请稍等!", urlData);
// mining of.docx
/**
* 登录页面
*
* @return
*/
@RequestMapping("/goLogin.do")
public String goLogin() {
return "common/login";
}
/**
* 注册页面
*
* @return
*/
@RequestMapping("/goRegister.do")
public String goRegister() {
return "common/register";
}
/**
* 忘记密码页面
*
* @return
*/
@RequestMapping("/goForgetPwd.do")
public String goForgotPwd() {
return "common/forgetPwd";
}
// 首页
// 重要通知详情
@RequestMapping(value = "/goShowInformDetail.do", method = RequestMethod.GET)
public String goShowInformDetail() {
return "show/showInformDetail";
}
// 重要通知详情
@RequestMapping(value = "/goShowInformMore.do", method = RequestMethod.GET)
@ResponseBody
public ServerResponse getFileListByAdminWithKind(@RequestParam(value = "pageNum",defaultValue = "1") int pageNum,
@RequestParam(value = "pageSize",defaultValue = "8") int pageSize,
HttpSession session, String fileName, String updateTime) {
return fileAdminService.getFileListByAdmin(pageNum, pageSize, fileName, updateTime);
}
/**
* 根据项目编号itemNum下载文件
* @param itemNum
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/downloadFileWithItemNum.do", method = RequestMethod.GET)
@ResponseBody
public ServerResponse downloadFileWithItemNum(@RequestParam("itemNum") String itemNum, HttpServletRequest request,
HttpServletResponse response) {
System.out.println(itemNum);
if (fileAdminService.getFileWithItemNum(itemNum).getStatus() != 0) {
return ServerResponse.createByErrorMessage("对不起,你还没有上传项目附件呢!请关闭窗口再重试!");
}
FileHub fileHub = (FileHub) fileAdminService.getFileWithItemNum(itemNum).getData();
String fileName = fileHub.getFileName();
// request.getServletContext()得到的是ServletContext对象,
// getRealPath(“/”) 获取实际路径,“/”指代项目根目录,所以代码返回的是项目在容器中的实际发布运行的根路径。
String path = request.getServletContext().getRealPath("/hub/") + fileName;
System.out.println(path);
try {
// 获取输入流
InputStream bis = new BufferedInputStream(new FileInputStream(new File(path)));
// 转码,免得文件名中文乱码
fileName = URLEncoder.encode(fileHub.getFileName(), "UTF-8");
// 设置文件下载头
// }
return permAdminService.batchRemovePerm(roleId, permIds);
}
/**
* 角色授权
* @param permIds
* @param roleId
* @param userNum
* @param roleAdminId
* @return
*/
@RequestMapping(value = "/addRolePerm.do", method = RequestMethod.POST)
@ResponseBody
public ServerResponse addRolePerm(Integer[] permIds, Integer roleId, String userNum, int roleAdminId) {
// User user = (User) session.getAttribute("activeUser");
//
// if (!user.getUserNum().equals(userNum)) {
// return ServerResponse.createByErrorMessage("安全检查不通过,用户已过时或不存在!");
// }
System.out.println(permIds + "\t" + roleId);
return permAdminService.addRolePerm(permIds, roleId, roleAdminId);
}
/**
* 用户授权
* @param permIds
* @param roleId
* @param userNum
* @param userAdminNum
* @return
*/
@RequestMapping(value = "/addRolePermWithUserNum.do", method = RequestMethod.POST)
@ResponseBody
public ServerResponse addRolePermWithUserNum(Integer[] permIds, Integer roleId, String userNum, String userAdminNum) {
// User user = (User) session.getAttribute("activeUser");
//
// if (!user.getUserNum().equals(userNum)) {
// return ServerResponse.createByErrorMessage("安全检查不通过,用户已过时或不存在!");
// }
System.out.println(permIds + "\t" + roleId);
System.out.println(urlData);//打印网络文件预览地址
return ServerResponse.createBySuccess("预览文件正在打开,请稍等!", urlData);
// mining of.docx
// PDF.js
}
else {// 转换失败
System.out.println("转换失败");
return ServerResponse.createByErrorMessage("文档过大,打开失败");
}
}
// // 不能以ajax下载
// @RequestMapping(value = "/downloadFile.do", method = RequestMethod.GET)
// @ResponseBody
// public ResponseEntity<byte[]> downloadFile(String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException {
// HttpHeaders headers = new HttpHeaders();
//
// // getRealPath(“/”) 获取实际路径,“/”指代项目根目录,所以代码返回的是项目在容器中的实际发布运行的根路径。
// String filePath = request.getServletContext().getRealPath("/hub/") + fileName;
// File file = new File(filePath);
//
// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
// headers.setContentDispositionFormData("attachment", fileName);
//
// return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
// headers, HttpStatus.CREATED);
// }
/**
* 根据userNum修改文件类型
* @param fileHub
if (adminRoleId <= roleId) {
return ServerResponse.createByErrorMessage("对不起,你没有权限创建该角色的操作!");
}
if (adminRoleId == Const.ROLEID_COLLEGE || adminRoleId == Const.ROLEID_ACADEMY) {
return userAdminService.addUserAdmin(userAdminDto, roleId);
}
return ServerResponse.createByErrorMessage("对不起,你没有权限操作该操作!");
}
/**
* 批量删除用户
* @param userNums
* @param roleId
* @param session
* @return
*/
@RequestMapping("/batchRemoveUser.do")
@ResponseBody
public ServerResponse batchRemoveUser(@RequestParam("userNums") String[] userNums, int roleId, HttpSession session) {
// User user = (User) session.getAttribute("activeUser");
// if (user == null) {
// return ServerResponse.createByErrorMessage("安全检查不通过,用户已过时或不存在!");
// }
if (roleId == Const.ROLEID_COLLEGE || roleId == Const.ROLEID_ACADEMY) {
return userAdminService.batchRemoveUser(userNums);
}
return ServerResponse.createByErrorMessage("对不起,你没有权限操作该操作!");
}
/**
* 根据姓名获取用户信息
* @param userName
* @param session
* @return
*/
@RequestMapping("/getUserInfoByUserName.do")
@ResponseBody