基于javaweb的大学生兼职论坛(java+ssm+jsp+jquery+layui+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

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

适用

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

功能说明

基于javaweb+SSM的大学生兼职论坛(java+SSM+JSP+jQuery+Layui+mysql)

项目介绍

该项目是一个大学生校园兼职讨论平台,分为前台和后台功能,主要用户有三种角色:分别是商家、学生、管理员。商家可以发布兼职信息,发布后,管理员进入后台确认信息是否有效,并且审核该兼职信息。学生登录平台后,可以查看兼职信息,并且,可以在线和商家聊天,聊天的内容持久化到mysql数据库中。 该网站还有论坛交流的功能,用户可以在论坛发表贴子,并且,可以在帖子下面回复。论坛版块设置有3块广告区,管理员可以在后台对广告进行增删改查。 整体功能包括:论坛交流,帖子发布,个人中心,用户管理,聊天管理,帖子管理。

环境需要

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.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目  6.数据库:MySql 5.7版本;

技术栈

  1. 后端:Spring SpringMVC MyBatis 2. 前端:JSP+jQuery+Layui

使用说明

  1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 将项目中yml配置文件中的数据库配置改为自己的配置 3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;

前台系统:http://localhost:8080/moonlighting/

后台系统:http://localhost:8080/moonlighting/manager/login/goServerLogin.action

管理员控制器:

/**

  • 管理员控制器

*/

@Controller

@RequestMapping(“admin”)

public class AdminController {

/**

  • Spring 容器自动注入 AdminService

*/

@Resource

private AdminService adminService;

@Resource

private EmployerService employerService;

@Resource

private EmployeeService employeeService;

@Resource

private TaskService taskService;

/**

  • 跳转到登录页面

  • @return

*/

@GetMapping(“login”)

public String login() {

return “admin/login”;

/**

  • 管理员登录

  • @param admin 管理员,在参数上使用实体类接收,可以自动接受 username,password 属性

  • @return

*/

@PostMapping(“login”)

public String login(Admin admin, RedirectAttributes redirectAttributes, HttpSession session) {

// 调用 AdminService 处理登录的业务逻辑,返回一个 Admin 对象,如果为空登录失败,如果不为空登录成功

Admin currAdmin = adminService.login(admin);

// 如果为空,登录失败,返回一个消息给登录页面提示, RedirectAttributes 是重定向用于把消息存放在域对象中,供页面获取

if (currAdmin == null) {

// 将消息放入重定向的与对象中

redirectAttributes.addFlashAttribute(“msg”, “用户名或密码错误”);

// 重定向到登录页

return “redirect:/admin/login”;

// 如果 Admin 不为空,登录成功

else {

// 把管理员信息放入 session 中,保持管理员登录状态

session.setAttribute(“admin”, admin);

// 重定向到管理员首页

return “redirect:/admin/index”;

/**

  • 跳转到管理员首页

  • @param model 用户将数据存放在域对象中的对象

  • @return

*/

@GetMapping(“index”)

public String index(Model model) {

// 总雇主数量

Integer employerCount = employerService.getAllCount();

// 总雇员数量

Integer employeeCount = employeeService.getAllCount();

// 总任务成交数量

Integer allTaskCompleteCount = taskService.getAllCompleteCount();

// 总任务成交金额

Double allTaskCompletePrice = taskService.getAllCompletePrice();

// 最近 10 个注册雇员

List employees = employeeService.getRecently();

// 获取最近成交的 10 个任务

List taskVos = taskService.getRecentlyComplete();

// 将查询出来的数据,放置域对象中,供页面展示

model.addAttribute(“employerCount”, employerCount);

model.addAttribute(“employeeCount”, employeeCount);

model.addAttribute(“allTaskCompleteCount”, allTaskCompleteCount);

model.addAttribute(“allTaskCompletePrice”, allTaskCompletePrice);

model.addAttribute(“employees”, employees);

model.addAttribute(“taskVos”, taskVos);

// 跳转到管理员首页

return “admin/index”;

/**

  • 退出登录

  • @return

*/

@GetMapping(“logout”)

public String logout(HttpSession session) {

// 退出登录,只需要删除存放在 session 中的 admin 信息即可

session.removeAttribute(“admin”);

// 重定向到登录页

return “redirect:/admin/login”;

雇主控制器:

/**

  • 雇主控制器

*/

@Controller

@RequestMapping(“employer”)

public class EmployerController {

@Resource

private TaskService taskService;

@Resource

private TaskCategoryService taskCategoryService;

@Resource

private BidService bidService;

@Resource

private EmployerService employerService;

/**

  • 雇主退出登录

  • @param session

  • @return

*/

@GetMapping(“logout”)

public String logout(HttpSession session) {

session.removeAttribute(“employer”);

return “redirect:/index”;

/**

  • 跳转到个人中心

*/

@GetMapping(“dashboard”)

public String dashboard(HttpSession session, Model model) {

// 获取雇主登录情况

Employer employer = (Employer) session.getAttribute(“employer”);

// 查询总发布任务数量

List tasks = taskService.getByEmployerId(employer.getId());

Integer taskCount = tasks != null ? tasks.size() : 0;

// 查询任务总投标人数

Integer bidCount = taskService.getBidCount(employer.getId());

// 任务提交完成

List taskVos = taskService.getRecentlySubmit(employer.getId());

// 放置域对象中

model.addAttribute(“taskCount”, taskCount);

model.addAttribute(“bidCount”, bidCount);

model.addAttribute(“tasks”, taskVos);

return “employer/dashboard”;

/**

  • 跳转到任务发布页面

  • @return

*/

@GetMapping(“task/post”)

public String postTask(Model model) {

// 查询出所有任务分类信息

List taskCategoryVos = taskCategoryService.getAll();

model.addAttribute(“taskCategories”, taskCategoryVos);

return “employer/post_task”;

/**

  • 雇主发布一个任务

  • @param session

  • @return

*/

@PostMapping(“task/post”)

public String postTask(HttpSession session, Task task, String skills, String upload, RedirectAttributes redirectAttributes) {

// 获取雇主信息

Employer employer = (Employer) session.getAttribute(“employer”);

// 添加任务

task.setEmployerId(employer.getId());

taskService.postTask(task, skills, upload);

// 提示消息

redirectAttributes.addFlashAttribute(“msg”, “发布任务成功,等待管理员审核!”);

return “redirect:/employer/task/post”;

/**

  • 跳转到我的任务页面

  • @param session

  • @return

*/

@GetMapping(“myTasks”)

public String myTask(HttpSession session, Model model) {

// 查询雇主信息

Employer employer = (Employer) session.getAttribute(“employer”);

// 查询雇主的所有任务

List taskVos = taskService.getByEmployerId(employer.getId());

model.addAttribute(“tasks”, taskVos);

return “employer/my_task”;

/**

  • 跳转到雇主修改任务页面

  • @param taskId 任务 ID

  • @return

*/

@GetMapping(“task/update”)

public String updateTask(Long taskId, Model model) {

// 查询所有任务

List categorys = taskCategoryService.getAll();

TaskVo taskVo = taskService.getById(taskId);

model.addAttribute(“task”, taskVo);

model.addAttribute(“taskCategories”, categorys);

return “employer/update_task”;

/**

  • 添加技能

  • @param skillName 技能名称

  • @return

*/

@PostMapping(“skill/add”)

@ResponseBody

public String addSkill(String skillName, Long taskId, HttpSession session) {

if (!“”.equals(skillName)) {

employerService.addSkill(taskId, skillName);

return “添加技能”;

/**

  • 删除技能

  • @param skillId

  • @return

*/

@PostMapping(“skill/delete”)

@ResponseBody

public String deleteSkill(Long skillId) {

employerService.deleteSkill(skillId);

return “删除技能”;

/**

  • 更新任务

  • @param task 任务

  • @return

*/

@PostMapping(“task/update”)

public String updateTask(Task task, String upload, RedirectAttributes redirectAttributes) {

// 修改任务

if (!“”.equals(upload)) {

task.setFilename(upload);

taskService.updateTask(task);

// 提示消息

redirectAttributes.addFlashAttribute(“msg”, “发布任务成功,等待管理员审核!”);

return “redirect:/employer/myTasks”;

/**

  • 删除任务

  • @param taskId 任务 ID

  • @return

*/

@GetMapping(“task/delete”)

public String deleteTask(Long taskId) {

taskService.deleteById(taskId);

return “redirect:/employer/myTasks”;

/**

  • 跳转到任务竞标者管理页面

  • @return

*/

@GetMapping(“taskBidders”)

public String manageBidders(Long taskId, Model model) {

// 查询任务信息

TaskVo taskVo = taskService.getById(taskId);

// 放置域对象中

model.addAttribute(“task”, taskVo);

return “employer/manage_bidders”;

/**

  • 中标:接受投标

  • @param taskId

  • @return

*/

@GetMapping(“acceptBid”)

public String acceptBid(Long taskId, Long employeeId) {

bidService.acceptBid(taskId, employeeId);

return “redirect:/employer/myTasks”;

/**

  • 确定完成任务

  • @param taskId

  • @return

*/

@GetMapping(“task/success”)

public String successTask(Long taskId) {

taskService.successTask(taskId);

return “redirect:/employer/myTasks”;

/**

  • 跳转到个人信息设置页面

  • @return

*/

@GetMapping(“settings/base”)

public String settings(HttpSession session, Model model) {

// 获取 session 中的雇员信息

Employer employer = (Employer) session.getAttribute(“employer”);

model.addAttribute(“employer”, employer);

return “employer/settings_base”;

/**

  • 保存个人基本信息

  • @param employer

  • @return

*/

@PostMapping(“settings/base/save”)

public String saveBase(Employer employer, HttpSession session) {

// 更新个人信息到数据库

Employer currEmployer = employerService.save(employer);

// 更新 session 中的个人信息

session.setAttribute(“employer”, currEmployer);

return “redirect:/employer/settings/base”;

/**

  • 跳转到修改密码页

  • @return

*/

@GetMapping(“settings/password”)

public String updatePass() {

return “employer/settings_pass”;

/**

  • 修改密码

  • @param password 原来的密码

  • @param newPassword 新密码

  • @return

*/

@PostMapping(“settings/password”)

public String updatePass(String password, String newPassword, HttpSession session, RedirectAttributes redirectAttributes) {

// 查询雇员登录信息

Employer employer = (Employer) session.getAttribute(“employer”);

String msg = employerService.updatePass(employer.getId(), password, newPassword);

redirectAttributes.addFlashAttribute(“msg”, msg);

return “redirect:/employer/settings/password”;

雇员控制器:

/**

  • 雇员控制器

*/

@Controller

@RequestMapping(“employee”)

public class EmployeeController {

@Resource

private EmployeeService employeeService;

@Resource

private TaskService taskService;

@Resource

private HomeBowerService homeBowerService;

@Resource

private EmployeeBookmarkedService employeeBookmarkedService;

@Resource

private BidService bidService;

/**

  • 雇员退出登录

  • @param session

  • @return

*/

@GetMapping(“logout”)

public String logout(HttpSession session) {

session.removeAttribute(“employee”);

return “redirect:/index”;

/**

  • 跳转到个人中心

  • @return

*/

@GetMapping(“dashboard”)

public String dashboard(HttpSession session, Model model) {

// 获取雇员登录信息

Employee employee = (Employee) session.getAttribute(“employee”);

// 查询雇员任务投标总中标数

Integer bidCount = taskService.getByBidEmployeeId(employee.getId());

// 主页总浏览次数

Integer bowerCount = employeeService.getBowerCount(employee.getId());

// 最新主页浏览情况

List homeBowerVos = homeBowerService.getByRecentlyEmployeeId(employee.getId());

// 放置域对象中,供页面展示

model.addAttribute(“bidCount”, bidCount);

model.addAttribute(“bowerCount”, bowerCount);

model.addAttribute(“homeBowers”, homeBowerVos);

return “employee/dashboard”;

/**

  • 收藏或取消收藏任务

  • @param taskId

  • @return

*/

@PostMapping(“bookmarked”)

@ResponseBody

public EmployeeBookmarked bookmarked(Long taskId, HttpSession session) {

// 获取雇员的登录信息

Employee employee = (Employee) session.getAttribute(“employee”);

// 收藏或取消收藏任务

EmployeeBookmarked employeeBookmarked = employeeBookmarkedService.bookmarked(employee.getId(), taskId);

return employeeBookmarked;

/**

  • 跳转到我的收藏页面

  • @return

*/

@GetMapping(“bookmarks”)

public String bookmarks(HttpSession session, Model model) {

// 获取雇员登录信息

Employee employee = (Employee) session.getAttribute(“employee”);

// 获取收藏的任务集合

List bookMarks = employeeBookmarkedService.getByEmployeeId(employee.getId());

// 放置到域对象中,方便页面展示

model.addAttribute(“bookMarks”, bookMarks);

return “employee/bookmarks”;

/**

  • 删除收藏任务

  • @param taskId 任务 ID

  • @return

*/

@PostMapping(“bookmarks/remove”)

@ResponseBody

public String bookmarks(Long taskId, HttpSession session) {

// 获取雇员登录信息

Employee employee = (Employee) session.getAttribute(“employee”);

// 删除收藏信息

employeeBookmarkedService.remove(employee.getId(), taskId);

return “删除收藏信息”;

/**

  • 查询已完成任务

  • @param session

  • @return

*/

@GetMapping(“/task/completed”)

public String completedTask(HttpSession session, Model model) {

// 获取雇员登录信息

Employee employee = (Employee) session.getAttribute(“employee”);

// 查询出已完成的订单

List taskVos = taskService.getCompletedByEmployeeId(employee.getId());

// 放置到域对象中

model.addAttribute(“tasks”, taskVos);

return “employee/completed_task”;

/**

  • 跳转到待完成任务

  • @param session

  • @param model

  • @return

*/

@GetMapping(“/task/uncompleted”)

public String unCompletedTask(HttpSession session, Model model) {

// 获取雇员登录信息

Employee employee = (Employee) session.getAttribute(“employee”);

// 查询出未完成的订单

List taskVos = taskService.getUnCompletedByEmployeeId(employee.getId());

// 放置到与对象中

model.addAttribute(“tasks”, taskVos);

// 跳转到待完成任务列表页

return “employee/uncompleted_task”;

/**

  • 雇员提交任务

  • @param session

  • @return

*/

@PostMapping(“/task/submit”)

@ResponseBody

public String submitTask(Long taskId, HttpSession session) {

// 获取雇员登录信息

Employee employee = (Employee) session.getAttribute(“employee”);

// 雇员提交信息

taskService.submitTask(employee.getId(), taskId);

return “任务提交成功 ,等待雇主确认!”;

/**

  • 跳转到我的竞标页面

  • @param session

  • @return

*/

@GetMapping(“mybids”)

public String myBid(HttpSession session, Model model) {

// 获取雇员登录信息

Employee employee = (Employee) session.getAttribute(“employee”);

// 查询所有未中标的信息

List bidVos = bidService.getNoBitByEmployeeId(employee.getId());

// 放置域对象中,供页面展示

model.addAttribute(“bids”, bidVos);

return “employee/my_bids”;

/**

  • 删除竞标信息

  • @param bid

  • @return

*/

@GetMapping(“bid/delete”)

public String deleteBid(Long bid) {

bidService.deleteById(bid);

return “redirect:/employee/mybids”;

/**

  • 跳转到个人信息设置页面

  • @return

*/

@GetMapping(“settings/base”)

public String settings(HttpSession session, Model model) {

// 获取 session 中的雇员信息

Employee employee = (Employee) session.getAttribute(“employee”);

// 获取视图展示对象,主要是为了展示技能信息,因为 Employee 中只有 技能 ID 没有技能名称

EmployeeVo employeeVo = employeeService.getById(employee.getId());

model.addAttribute(“employee”, employeeVo);

return “employee/settings_base”;

/**

  • 保存个人基本信息

  • @param employee

  • @return

*/

@PostMapping(“settings/base/save”)

public String saveBase(Employee employee, HttpSession session) {

// 更新个人信息到数据库

Employee currEmployee = employeeService.save(employee);

// 更新 session 中的个人信息

session.setAttribute(“employee”, currEmployee);

return “redirect:/employee/settings/base”;

/**

  • 跳转到修改密码页

  • @return

*/

@GetMapping(“settings/password”)

public String updatePass() {

return “employee/settings_pass”;

/**

  • 修改密码

  • @param password 原来的密码

  • @param newPassword 新密码

  • @return

*/

@PostMapping(“settings/password”)

public String updatePass(String password, String newPassword, HttpSession session, RedirectAttributes redirectAttributes) {

// 查询雇员登录信息

Employee employee = (Employee) session.getAttribute(“employee”);

String msg = employeeService.updatePass(employee.getId(), password, newPassword);

redirectAttributes.addFlashAttribute(“msg”, msg);

return “redirect:/employee/settings/password”;

/**

  • 跳转到雇员简介页面

  • @return

*/

@GetMapping(“profile”)

public String profile(Long employeeId, Model model, HttpSession session) {

// 查询雇员信息

EmployeeVo employee = employeeService.getById(employeeId);

// 查询历史完成任务

List taskVos = taskService.getByEmployeeId(employeeId);

// 查询雇员总完成任务数

Integer completeCount = taskService.getCompletedByEmployeeId(employeeId).size();

// 如果雇主登录了,主页访问次数加 1

Employer employer = (Employer) session.getAttribute(“employer”);

if (employer != null) {

employeeService.bower(employeeId, employer.getId());

// 主页总浏览次数

Integer bowerCount = employeeService.getBowerCount(employee.getId());

model.addAttribute(“employee”, employee);

model.addAttribute(“tasks”, taskVos);

model.addAttribute(“completeCount”, completeCount);

model.addAttribute(“bowerCount”, bowerCount);

return “employee_profile”;

/**

  • 添加技能

  • @param skillName 技能名称

  • @return

*/

@PostMapping(“skill/add”)

@ResponseBody

public String addSkill(String skillName, HttpSession session) {

Employee employee = (Employee) session.getAttribute(“employee”);

if (!“”.equals(skillName)) {

employeeService.addSkill(employee.getId(), skillName);

return “添加技能”;

/**

  • 删除技能

  • @param skillId

  • @return

*/

@PostMapping(“skill/delete”)

@ResponseBody

public String deleteSkill(Long skillId) {

employeeService.deleteSkill(skillId);

return “删除技能”;


基于javaweb的大学生兼职论坛(java+ssm+jsp+jquery+layui+mysql)相关推荐

  1. 基于javaweb+SSM的大学生兼职论坛(java+SSM+JSP+jQuery+Layui+mysql)

    项目介绍 该项目是一个大学生校园兼职讨论平台,分为前台和后台功能,主要用户有三种角色:分别是商家.学生.管理员.商家可以发布兼职信息,发布后,管理员进入后台确认信息是否有效,并且审核该兼职信息.学生登 ...

  2. 基于javaweb+mysql的大学生兼职论坛(java+SSM+JSP+jQuery+Layui+mysql)

    项目介绍 该项目是一个大学生校园兼职讨论平台,分为前台和后台功能,主要用户有三种角色:分别是商家.学生.管理员.商家可以发布兼职信息,发布后,管理员进入后台确认信息是否有效,并且审核该兼职信息.学生登 ...

  3. Java项目:大学生兼职论坛(java+SSM+JSP+jQuery+Layui+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 该项目是一个大学生校园兼职讨论平台,分为前台和后台功能,主要用户有三种角色:分别是商家.学生.管理员.商家可以发布兼职信息,发布后 ...

  4. 基于javaweb的外卖订餐管理系统(java+ssm+jsp+jquery+ajax+mysql)

    基于javaweb的外卖订餐管理系统(java+ssm+jsp+jquery+ajax+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/ ...

  5. 基于javaweb的茶叶溯源系统(java+ssm+jsp+bootstrap+layui+mysql)

    基于javaweb的茶叶溯源系统(java+ssm+jsp+bootstrap+layui+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/ide ...

  6. 基于javaweb的足球联赛管理系统(java+ssm+jsp+bootstrap+layui+mysql)

    基于javaweb的足球联赛管理系统(java+ssm+jsp+bootstrap+layui+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/i ...

  7. 基于javaweb的大学生兼职系统(java+springboot+jsp+mysql)

    基于javaweb的大学生兼职系统(java+springboot+jsp+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均 ...

  8. 基于javaweb的电影院购票系统(java+ssm+jsp+bootstrap+layui+echarts+mysql)

    基于javaweb的电影院购票系统(java+ssm+jsp+bootstrap+layui+echarts+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 ec ...

  9. 基于javaweb的房产中介管理系统(java+ssm+html+bootstrap+layui+mysql)

    基于javaweb的房产中介管理系统(java+ssm+html+bootstrap+layui+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/ ...

最新文章

  1. cookie和session 创建和验证 原始的servlet
  2. pytorch:一维线性回归(二)
  3. 【转】jmeter学习笔记——JDBC测试计划-连接Mysql
  4. 手游pubg mobile服务器正在维护,PUBG Mobile Download Failed怎么解决
  5. uboot copy_from_nand代码详解
  6. windows下使用DOS命令删除大文件
  7. Kafka Manager界面添加Partition
  8. 云熙板式家具参数化拆单软件免锁版_数控开料机拆单软件如何选择?
  9. 【LeetCode 剑指offer刷题】字符串题12:Valid Palindrome(回文词系列)
  10. linux ssh端口是否打开,如何查看linux中的ssh端口开启状态
  11. Fedora音视频解码的配置
  12. 初次体验.net Ajax无刷新技术
  13. 高等数学复习笔记(四)- 零点问题与微分不等式
  14. fix ubuntu boot(grub)
  15. UDK2017下载及编译
  16. petalinux - 修改fsbl
  17. 常用邮箱的SMTP、POP3域名及其端口号
  18. SSRF学习(5)gopher协议上传文件
  19. [附源码]PHP计算机毕业设计老薛男生服装网(程序+LW)
  20. linux7 清屏,CentOS 清屏命令clear的讲解

热门文章

  1. ChatGPT 将如何毁灭世界 ?
  2. google gflags 使用方法
  3. OO第三单元总结性博客
  4. 布兰特原油飙升至多年高位
  5. location ~ .php$,nginx location指令详解,
  6. hive的location和External
  7. display:agl-compositor
  8. (附源码)ssm高校运动会管理系统 毕业设计 020419
  9. 【Arduino学习笔记】Arduino的反正切函数atan()
  10. 计算机数值计算原理,C#数值计算算法编程