Java项目:27 基于SSM+JSP实现的大学校园兼职平台

news2024/11/24 15:22:44
作者主页:源码空间codegym

简介:Java领域优质创作者、Java项目、学习资料、技术互助

文中获取源码

项目介绍

系统介绍

基于SSM+JSP实现的大学校园兼职平台分为前台与管理员两块

管理端分为8大模块,分别是用户管理、兼职管理、帖子管理、聊天管理、广告管理、信箱管理、收藏管理、系统管理等模块

前台有兼职查看、论坛交流、平台公告等主要菜单项

用户登陆后可查看兼职详情、与发布者交流、选择喜欢的兼职

点击查看演示视频

环境要求

1.运行环境:最好是java jdk1.8,我们在这个平台上运行的。其他版本理论上也可以。

2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;

3.tomcat环境:Tomcat7.x,8.X,9.x版本均可

4.硬件环境:windows7/8/10 4G内存以上;或者Mac OS;

5.是否Maven项目:是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven.项目

6.数据库:MySql5.7/8.0等版本均可;

技术栈

运行环境:jdk8 + tomcat9 + mysql5.7 + windows10

服务端技术:Spring + SpringMvc + Mybatis + jsp + Jquery + Layui

使用说明

1.使用Navicati或者其它工具,在mysql中创建对应sq文件名称的数据库,并导入项目的sql文件;

2.使用IDEA/Eclipse/MyEclipse导入项目,修改配置,运行项目;

3.将项目中config-propertiesi配置文件中的数据库配置改为自己的配置,然后运行;

运行指导

idea导入源码空间站顶目教程说明(Vindows版)-ssm篇:

http://mtw.so/5MHvZq

源码地址:http://codegym.top

运行截图

前端界面

微信截图_20240223190322

微信截图_20240223190349

微信截图_20240223190356

微信截图_20240223190403

微信截图_20240223190408

微信截图_20240223190414

微信截图_20240223190422

微信截图_20240223190438

后台界面

微信截图_20240223190524

微信截图_20240223190529

微信截图_20240223190535

微信截图_20240223190544

微信截图_20240223190557

微信截图_20240223190603

代码

PcIndexController

package com.work.controller.pc;

import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.work.common.utils.BaseUtil;
import com.work.common.utils.JsonUtil;
import com.work.common.utils.Page;
import com.work.pojo.Adver;
import com.work.pojo.Banner;
import com.work.pojo.Chat;
import com.work.pojo.Forum;
import com.work.pojo.ForumReply;
import com.work.pojo.Notice;
import com.work.pojo.QueryVo;
import com.work.pojo.SystemUpset;
import com.work.pojo.User;
import com.work.pojo.Work;
import com.work.service.AdverService;
import com.work.service.BannerService;
import com.work.service.ChatService;
import com.work.service.ForumReplyService;
import com.work.service.ForumService;
import com.work.service.NoticeService;
import com.work.service.SystemUpsetService;
import com.work.service.UserService;
import com.work.service.WorkService;

@Controller
@RequestMapping("/pc/index")
public class PcIndexController extends BaseUtil{

	@Autowired
	private AdverService adverService;
	@Autowired
	private NoticeService noticeService;
	@Autowired
	private WorkService workService;
	@Autowired
	private UserService userService;
	@Autowired
	private ForumService forumService;
	@Autowired
	private ChatService chatService;
	@Autowired
	private BannerService bannerService;
	@Autowired
	private SystemUpsetService systemUpsetService;
	@Autowired
	private ForumReplyService forumReplyService;
	
	//公共头部
	@RequestMapping(value="/goHeader.action")
	public ModelAndView goHeader(HttpServletRequest request,ModelAndView mv,SystemUpset systemUpset){
		List<SystemUpset> systemUpsets = systemUpsetService.getSystemUpsetList(systemUpset, null, null);
		if(systemUpsets.size() > 0){
			mv.addObject("systemUpset", systemUpsets.get(0));
		}
		mv.setViewName("pc/header");
		return mv;
	}
	
	//公共尾部
	@RequestMapping(value="/goFooter.action")
	public ModelAndView goFooter(ModelAndView mv,SystemUpset systemUpset){
		List<SystemUpset> systemUpsets = systemUpsetService.getSystemUpsetList(systemUpset, null, null);
		if(systemUpsets.size() > 0){
			mv.addObject("systemUpset", systemUpsets.get(0));
		}
		mv.setViewName("pc/footer");
		return mv;
	}
	
	//去首页面
	@RequestMapping(value="/goIndex.action")
	public ModelAndView goLogin(HttpServletRequest request,ModelAndView mv, Work work, QueryVo vo){
		//判断滚动条
		String isScroll = "f";
		//获取兼职
		Page<Work> page=new Page<Work>();
		if(work.getWorkCategory() != null && !work.getWorkCategory().equals("")){
			isScroll = "t";
//			try {
//				work.setWorkCategory(new String(work.getWorkCategory().getBytes("ISO8859-1"),"UTF-8"));
//			} catch (UnsupportedEncodingException e) {
//				e.printStackTrace();
//			}
		}
		System.out.println(work.getWorkCategory());
		work.setIsEffect(1);
		work.setIsAuditing(1);
		if(vo.getSize()!=8){ 
			vo.setSize(8);
		}
		if(vo.getPage()==null){
			vo.setPage(1);
		}
		//每页数
		page.setSize(vo.getSize());
		if (vo != null){
			//判断当前页
			if(vo.getPage() != null) {
				page.setPage(vo.getPage());
				vo.setStartRow((vo.getPage() -1)*vo.getSize());
			}
			page.setTotal(workService.getWorkListCount(work));
			page.setRows(workService.getWorkList(work, (vo.getPage()-1) * vo.getSize(), vo.getSize()));
		}
		mv.addObject("page", page);
		//系统配置
		SystemUpset systemUpset = new SystemUpset();
		List<SystemUpset> systemUpsets = systemUpsetService.getSystemUpsetList(systemUpset, null, null);
		if(systemUpsets.size() > 0){
			mv.addObject("systemUpset", systemUpsets.get(0));
		}
		//轮播图
		Banner banner = new Banner();
		banner.setIsEffect(1);
		List<Banner> banners = bannerService.getBannerList(banner, null, null);
		mv.addObject("banners", banners);
		User pcUser = (User) request.getSession().getAttribute("pcUser");
		mv.addObject("pcUser", pcUser);
		if(vo.getPage() != 1){
			isScroll = "t";
		}
		mv.addObject("isScroll", isScroll);
		mv.setViewName("pc/index");
		return mv;
	}
	
	//首页获取分类兼职
	@RequestMapping("/getWorkByWorkCate")
	public void getWorkByWorkCate(HttpServletResponse response,Work work){
		work.setIsEffect(1);
		work.setIsAuditing(1);
		Integer count = workService.getWorkListCount(work);
		List<Work> works = workService.getWorkList(work, 0, 8);
		SimpleDateFormat cTime = new SimpleDateFormat("yyyy-MM-dd");
		if(works.size() > 0){
			for(int i = 0; i<works.size(); i++){
				works.get(i).setCreateTimes(cTime.format(works.get(i).getCreateTime()));
			}
		}
		output(response,JsonUtil.buildJsonByTotalCount(works, count));
	}
	
	//查看兼职
	@RequestMapping(value="/goFindWork.action")
	public ModelAndView goFindWork(ModelAndView mv,Work work){
		SystemUpset systemUpset = new SystemUpset();
		List<SystemUpset> systemUpsets = systemUpsetService.getSystemUpsetList(systemUpset, null, null);
		if(systemUpsets.size() > 0){
			mv.addObject("systemUpset", systemUpsets.get(0));
		}
		work = workService.getWorkById(work.getId());
		mv.addObject("work", work);
		mv.setViewName("pc/find_work");
		return mv;
	}
	
	//查看用户资料
	@RequestMapping(value="/goFindUser.action")
	public ModelAndView goFindUser(HttpServletRequest request,ModelAndView mv,SystemUpset systemUpset,User user){
		List<SystemUpset> systemUpsets = systemUpsetService.getSystemUpsetList(systemUpset, null, null);
		if(systemUpsets.size() > 0){
			mv.addObject("systemUpset", systemUpsets.get(0));
		}
		user = userService.getUserById(user.getUserId());
		mv.addObject("user", user);
		User pcUser = (User) request.getSession().getAttribute("pcUser");
		mv.addObject("pcUser", pcUser);
		mv.setViewName("pc/user_info");
		return mv;
	}
	
	//去聊天页面
	@RequestMapping(value="/goChat.action")
	public ModelAndView goChat(HttpServletRequest request,ModelAndView mv,SystemUpset systemUpset,User user){
		List<SystemUpset> systemUpsets = systemUpsetService.getSystemUpsetList(systemUpset, null, null);
		if(systemUpsets.size() > 0){
			mv.addObject("systemUpset", systemUpsets.get(0));
		}
		user = userService.getUserById(user.getUserId());
		int userId = user.getUserId();
		mv.addObject("user", user);
		//Session信息
		User pcUser = (User) request.getSession().getAttribute("pcUser");
		mv.addObject("pcUser", pcUser);
		if(pcUser == null){
			mv.setViewName("pc/login");
		}else if(pcUser.getUserId() == userId){
			mv.addObject("updatePage", "y");
			mv.setViewName("pc/index");
		}else{
			//更新isLook
			Chat chat = new Chat();
			chat.setUserIdFa(user.getUserId());
			chat.setUserIdJie(pcUser.getUserId());
			chat.setIsLook(1);
			chatService.updateChat(chat);
			mv.setViewName("pc/chat");
		}
		return mv;
	}
	
	//去论坛页面
	@RequestMapping(value="/goForum.action")
	public ModelAndView goForum(HttpServletRequest request,ModelAndView mv, QueryVo vo){
		User pcUser = (User) request.getSession().getAttribute("pcUser");
		mv.addObject("pcUser", pcUser);
		//获取广告
		Adver adver = new Adver();
		List<Adver> advers = adverService.getAdverList(adver, null, null);
		mv.addObject("advers", advers);
		//获取帖子
		Page<Forum> page=new Page<Forum>();
		Forum forum = new Forum();
		forum.setIsEffect(1);
		if(vo.getSize()!=10){ 
			vo.setSize(10);
		}
		if(vo.getPage()==null){
			vo.setPage(1);
		}
		//每页数
		page.setSize(vo.getSize());
		if (vo != null){
			//判断当前页
			if(vo.getPage() != null) {
				page.setPage(vo.getPage());
				vo.setStartRow((vo.getPage() -1)*vo.getSize());
			}
			page.setTotal(forumService.getForumListCount(forum));
			page.setRows(forumService.getForumList(forum, (vo.getPage()-1) * vo.getSize(), vo.getSize()));
		}
		//获取评论
		ForumReply forumReply = new ForumReply();
		for(int i=0; i<page.getRows().size(); i++){
			forumReply.setForumId(page.getRows().get(i).getForumId());
			page.getRows().get(i).setForumReplys(forumReplyService.getForumReplyList(forumReply, null, null));
		}
		mv.addObject("page", page);
		mv.setViewName("pc/forum");
		return mv;
	}
	
	//去信箱页面
	@RequestMapping(value="/goMailbox.action")
	public ModelAndView goMailbox(HttpServletRequest request,ModelAndView mv,SystemUpset systemUpset){
		List<SystemUpset> systemUpsets = systemUpsetService.getSystemUpsetList(systemUpset, null, null);
		if(systemUpsets.size() > 0){
			mv.addObject("systemUpset", systemUpsets.get(0));
		}
		User pcUser = (User) request.getSession().getAttribute("pcUser");
		mv.addObject("pcUser", pcUser);
		if(pcUser == null){
			mv.setViewName("pc/login");
		}else{
			mv.setViewName("pc/mailbox");
		}
		return mv;
	}
	
	//去发布兼职
	@RequestMapping(value="/goPublishWork.action")
	public ModelAndView goPublishWork(HttpServletRequest request,ModelAndView mv,SystemUpset systemUpset){
		List<SystemUpset> systemUpsets = systemUpsetService.getSystemUpsetList(systemUpset, null, null);
		if(systemUpsets.size() > 0){
			mv.addObject("systemUpset", systemUpsets.get(0));
		}
		User pcUser = (User) request.getSession().getAttribute("pcUser");
		mv.addObject("pcUser", pcUser);
		if(pcUser == null){
			mv.setViewName("pc/login");
		}else{
			mv.setViewName("pc/publish_work");
		}
		return mv;
	}
	
	//去公告页面
	@RequestMapping(value="/goNotice.action")
	public ModelAndView goNotice(HttpServletRequest request, ModelAndView mv, QueryVo vo){
		//获取个公告
		Page<Notice> page=new Page<Notice>();
		Notice notice = new Notice();
		if(vo.getSize()!=12){ 
			vo.setSize(12);
		}
		if(vo.getPage()==null){
			vo.setPage(1);
		}
		//每页数
		page.setSize(vo.getSize());
		if (vo != null){
			//判断当前页
			if(vo.getPage() != null) {
				page.setPage(vo.getPage());
				vo.setStartRow((vo.getPage() -1)*vo.getSize());
			}
			page.setTotal(noticeService.getNoticeListCount(notice));
			page.setRows(noticeService.getNoticeList(notice, (vo.getPage()-1) * vo.getSize(), vo.getSize()));
		}
		mv.addObject("page", page);
		mv.setViewName("pc/notice");
		return mv;
	}
	
	//获取公告
	@RequestMapping(value="/getNotice.action")
	public void getNotice(Notice notice,HttpServletRequest request,HttpServletResponse response){
		notice = noticeService.getNoticeById(notice.getId());
		SimpleDateFormat cTime = new SimpleDateFormat("yyyy-MM-dd");
		notice.setCreateTimes(cTime.format(notice.getCreateTime()));
		output(response,JsonUtil.objectToJson(notice));
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1465577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python-pdfplumber读取PDF内容

文章目录 前言一、pdfplumber模块1.1 pdfplumber的特点1.2 pdfplumber.PDF类1.3pdfplumber.Page类 二 pdfplumber的使用2.1 加载PDF2.2 pdfplumber.PDF 类2.3 pdfplumber.Page 类2.4 读取PDF2.5 读取PDF文档信息2.6 查看总页数2.7 查看总页数读取第一页的宽度&#xff0c;页高等…

《论文阅读》通过识别对话中的情绪原因来提高共情回复的产生 EMNLP 2021

《论文阅读》通过识别对话中的情绪原因来提高共情回复的产生 EMNLP 2021 前言简介方法实现Emotion ReasonerResponse Generator实验结果示例总结前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《Improv…

Nginx 配置前端工程项目二级目录

前提&#xff1a; 前端工程技术框架: vue 后端工程技术工程&#xff1a;spring boot 需求&#xff1a;需要通过二级目录访问前端工程&#xff1a; 如之前&#xff1a;http://127.0.0.1:80/ 改成 http://127.0.0.1/secondDirectory:80/ 一.前端工程支持二级目录 1.编译文…

2.22 Qt day3 多界面跳转+qss登录界面优化+发布软件+对话框

思维导图&#xff1a; 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号…

Modern C++ std::variant的实现原理

1. 前言 std::variant是C17标准库引入的一种类型&#xff0c;用于安全地存储和访问多种类型中的一种。它类似于C语言中的联合体&#xff08;union&#xff09;&#xff0c;但功能更为强大。与联合体相比&#xff0c;std::variant具有类型安全性&#xff0c;可以判断当前存储的…

kali xrdp

Kali Linux 使用远程桌面连接——xrdp&xfce_kali xfce桌面-CSDN博客 Ubuntu/Debian/Kali xrdp远程桌面黑屏/空屏/无画面解决办法 - 知乎 (zhihu.com) sudo apt-get install xrdp -y sudo apt-get install xfce4 -ysudo systemctl enable xrdp --now systemctl status xrd…

PowerDesigner:pdm文件与sql文件互相转,数据库类型切换

PowerDesigner 依据sql文件生成pdm file——reverse engineer—— database 依据pdm文件导出sql 选中——database——generate database 切换库类型

利用nginx内部访问特性实现静态资源授权访问

在nginx中&#xff0c;将静态资源设为internal&#xff1b;然后将前端的静态资源地址改为指向后端&#xff0c;在后端的响应头部中写上静态资源地址。 近期客户对我们项目做安全性测评&#xff0c;暴露出一些安全性问题&#xff0c;其中一个是有些静态页面&#xff08;*.html&…

Flink中的双流Join

1. Flink中双流Join介绍 Flink版本Join支持类型Join API1.4innerTable/SQL1.5inner,left,right,fullTable/SQL1.6inner,left,right,fullTable/SQL/DataStream Join大体分为两种&#xff1a;Window Join 和 Interval Join 两种。 Window Join又可以根据Window的类型细分为3种…

nginx服务基础用法(概念、安装、热升级)

目录 一、I/O模型概述 1、I/O概念 1.1 计算机的I/O 1.2 Linux的I/O 2、零拷贝技术 3、同步/异步&#xff08;消息反馈机制&#xff09; 4、阻塞/非阻塞 5、网络I/O模型 5.1 阻塞型 I/O 模型&#xff08;blocking IO&#xff09; 5.2 非阻塞型 I/O 模型 (nonblocking …

使用代理IP技术实现爬虫同步获取和保存

概述 在网络爬虫中&#xff0c;使用代理IP技术可以有效地提高爬取数据的效率和稳定性。本文将介绍如何在爬虫中同步获取和保存数据&#xff0c;并结合代理IP技术&#xff0c;以提高爬取效率。 正文 代理IP技术是一种常用的网络爬虫技术&#xff0c;通过代理服务器转发请求&a…

Google发布开放的模型Gemma

今天&#xff0c;Google 发布了一系列最新的开放式大型语言模型 —— Gemma&#xff01;Google 正在加强其对开源人工智能的支持&#xff0c;我们也非常有幸能够帮助全力支持这次发布&#xff0c;并与 Hugging Face 生态完美集成。 Gemma 提供两种规模的模型&#xff1a; 7B …

使用向量数据库pinecone构建应用05:人脸相似度查询Facial Similarity Search

Building Applications with Vector Databases 下面是这门课的学习笔记&#xff1a;https://www.deeplearning.ai/short-courses/building-applications-vector-databases/ Learn to create six exciting applications of vector databases and implement them using Pinecon…

深入探索Linux:ACL权限、特殊位与隐藏属性的奥秘

前言&#xff1a; 在Linux系统中&#xff0c;文件和目录的权限管理是一项至关重要的任务。它决定了哪些用户或用户组可以对文件或目录执行读、写或执行等操作。传统的Linux权限模型基于用户、组和其他的概念&#xff0c;但随着时间的推移&#xff0c;这种模型在某些情况下显得…

SQL库操作

1、创建数据库 概念 创建数据库&#xff1a;根据项目需求创建一个存储数据的仓库 使用create database 数据库名字创建 数据库层面可以指定字符集:charset/character set 数据库层面可以指定校对集:collate 创建数据库会在磁盘指定存放处产生一个文件夹 创建语法 create …

springmvc+mybatis+springboot航空飞机订票售票系统_f48cp

互联网发展的越来越快了&#xff0c;在当下社会节点&#xff0c;人们也开始越来越依赖互联网。通过互联网信息和数据&#xff0c;极大地满足用户要求[5]。飞机订票系统使用了B/S模式&#xff0c;并且不需要安装第三方插件&#xff0c;他们甚至能直接在电脑上随机随地实现飞机订…

Go 中的 init 如何用?它的常见应用场景有哪些呢?

嗨&#xff0c;大家好&#xff01;我是波罗学。本文是系列文章 Go 技巧第十六篇&#xff0c;系列文章查看&#xff1a;Go 语言技巧。 Go 中有一个特别的 init() 函数&#xff0c;它主要用于包的初始化。init() 函数在包被引入后会被自动执行。如果在 main 包中&#xff0c;它也…

JavaGuide-SQL在mysql中的执行过程

SQL在mysql中的执行过程 原文连接 SQL在mysql中的执行过程 基础架构概览 我们先总结基本组件 连接器: 身份认证 权限相关的,我们连接的时候会验证查询缓存: 8.0之后移除,执行查询的时候,会先查缓存分析器: 分析你的sql语句,包括词法分析 语法分析优化器: 按照mysql认为最…

LED智能互联办公室照明恒流调光IC芯片无频闪H5114

调光高辉度65536级/高精度3% LED降压型恒流驱动器H5114 产品描述 H5114是一款外围电路简单的多功能平 均电流型LED恒流驱动器&#xff0c;适用于5-90V电压范围的非隔离式大功率恒流LED驱动领域。 芯片采用了平均电流模式控制&#xff0c;输出电流精度在3&#xff05;&#xff…