Java项目:SSM实现的校园门户平台网站系统含开题报告与需求分析

news2024/11/15 21:44:01

作者主页:源码空间站2022

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

文末获取源码

项目介绍

本系统为前后台项目,后台为管理员登录,前台为社团、学生、教师角色登录;

管理员角色包含以下功能:

管理员登录,角色管理,权限管理,社团管理,教师管理,学生管理,公告管理,新闻管理,校园风采管理,求职招聘管理,校历管理,学科资源管理等功能。

社团角色包含以下功能:
社团登录,新闻管理,求职招聘管理,公告管理,校园风采管理等功能。

用户角色包含以下功能:
用户首页,学生登录,新闻快讯,通知公告,查看校历,查看求职招聘信息,查看学科资源等功能。

教师角色包含以下功能:

教师角色登录,公告管理等功能。

环境需要

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项目:否;

技术栈

1. 后端:Spring+SpringMVC+Mybatis

2. 前端:JSP+CSS+JavaScript+jQuery+bootstrap

使用说明

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

2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;

若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;

3. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:8080/ssm_xymh_sys/ 登录 
注:Tomcat中配置项目路径必须为ssm_xymh_sys,否则会有异常

运行截图

前台用户角色

 后台管理员角色

相关代码

登录控制器

package com.my.xymh.controller;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.my.xymh.base.BaseController;
import com.my.xymh.entity.Action;
import com.my.xymh.entity.Manage;
import com.my.xymh.entity.News;
import com.my.xymh.entity.Notice;
import com.my.xymh.entity.RoleAction;
import com.my.xymh.entity.SchoolInfo;
import com.my.xymh.entity.SchoolJob;
import com.my.xymh.entity.User;
import com.my.xymh.entity.WebCount;
import com.my.xymh.entity.Xl;
import com.my.xymh.service.ActionService;
import com.my.xymh.service.ManageService;
import com.my.xymh.service.NewsService;
import com.my.xymh.service.NoticeService;
import com.my.xymh.service.SchoolInfoService;
import com.my.xymh.service.SchoolJobService;
import com.my.xymh.service.UserService;
import com.my.xymh.service.WebCountService;
import com.my.xymh.service.XlService;
import com.my.xymh.utils.Pager;
import com.my.xymh.utils.UserUtils;

/**
 * 登陆相关
 * @author 
 *
 */
@Controller
@RequestMapping("/login")
public class LoginController extends BaseController{
	@Autowired
	private WebCountService webCountService;
	@Autowired
	private ManageService manageService;
	@Autowired
	private UserService userService;
	@Autowired
	private ActionService actionService;
	
	@Autowired
	private NewsService newsService;
	@Autowired
	private NoticeService noticeService;
	@Autowired
	private SchoolInfoService schoolInfoService;
	@Autowired
	private SchoolJobService schoolJobService;
	@Autowired
	private XlService xlService;
	/**
	 * 跳转登陆
	 * @return
	 */
	@RequestMapping(value = "/login.do")
	public String login(){
		return "login/login";
		
	}
	/**
	 * 用户首页
	 * @return
	 */
	@RequestMapping(value = "/index.do")
	public String index(Model model){
//		@Autowired
//		private NewsService newsService;
//		@Autowired
//		private NoticeService noticeService;
//		@Autowired
//		private SchoolInfoService schoolInfoService;
//		@Autowired
//		private SchoolJobService schoolJobService;
		
		//5张图片
		List<SchoolInfo> phs = schoolInfoService.listAll();
		//9个新闻
		List<News> news = newsService.listAll();
		//5个公告
		List<Notice> notices = noticeService.listAll();
		//9个招聘
		List<SchoolJob> sjs = schoolJobService.listAll();
		//5个校历
		List<Xl> xls = xlService.listAll();
		model.addAttribute("phs", phs);
		model.addAttribute("news", news);
		model.addAttribute("notices", notices);
		model.addAttribute("sjs", sjs);
		model.addAttribute("xls", xls);
		WebCount load = webCountService.load(1);
		load.setCountAll(load.getCountAll()+1);
		webCountService.update(load);
		model.addAttribute("count", load.getCountAll()+1);
		return "login/index";
		
	}
	@RequestMapping(value = "/welcome.do")
	public String welcome(){
		return "login/welcome";
		
	}
	@RequestMapping(value = "/toLogin.do")
	public String findByObj(String userName,String passWord,Integer type, Model model, HttpServletRequest request, HttpServletResponse response,HttpSession session) {
		 
		if(type == null){
			return "login/login";
		}
		//type == 管理员 2 社团 3 教师 4用户
		session.removeAttribute("isManage");
		session.removeAttribute("user");
		session.removeAttribute("userId");
		//private Integer type;// 1老师 2 社团3.用户 
		if(type == 1){
			Manage manage = new Manage();
			manage.setUserName(userName);
			manage.setPassWord(passWord);
			Manage man = manageService.loadBySqlId("login", manage);
			if(!isEmpty(man)){
				request.getSession().setAttribute("isManage", 1);
				return "login/mIndex";
			}else{
				return "login/login";
			}
		}else if(type == 2){
			User user = new User();
			user.setUserName(userName);
			user.setPassWord(passWord);
			user.setType(type);
			User use = userService.loadBySqlId("login",user);
			
			if(!isEmpty(use)){
				roleAct(model, use);
				request.getSession().setAttribute("user", use);
				request.getSession().setAttribute("userId", use.getId());
				return "login/mIndex";
			}else{
				return "login/login";
			}
		}else if(type == 3){
			User user = new User();
			user.setUserName(userName);
			user.setPassWord(passWord);
			user.setType(1);
			User use = userService.loadBySqlId("login",user);
			if(!isEmpty(use)){
				roleAct(model, use);
				request.getSession().setAttribute("user", use);
				request.getSession().setAttribute("userId", use.getId());
				return "login/mIndex";
			}else{
				return "login/login";
			}
		}else{
			//5张图片
			List<SchoolInfo> phs = schoolInfoService.listAll();
			//9个新闻
			List<News> news = newsService.listAll();
			//5个公告
			List<Notice> notices = noticeService.listAll();
			//9个招聘
			List<SchoolJob> sjs = schoolJobService.listAll();
			//5个校历
			List<Xl> xls = xlService.listAll();
			model.addAttribute("phs", phs);
			model.addAttribute("news", news);
			model.addAttribute("notices", notices);
			model.addAttribute("sjs", sjs);
			model.addAttribute("xls", xls);
			User user = new User();
			user.setUserName(userName);
			user.setPassWord(passWord);
			user.setType(3);
			User use = userService.loadBySqlId("login",user);
			if(!isEmpty(use)){
				request.getSession().setAttribute("user", use);
				request.getSession().setAttribute("userId", use.getId());
			}
		}
		return "login/index";
	}

	private void roleAct(Model model, User user) {
		if(!isEmpty(user.getRole())){
			List<Action> actions = new ArrayList<Action>();
			List<RoleAction> roleActions = user.getRole().getRoleActions();
			if(!isEmpty(roleActions)){
				for (RoleAction ra: roleActions) {
					actions.add(actionService.load(ra.getActionId()));
				}
			}
			model.addAttribute("actions", actions);
		}
	}
	
	/**
	 * 退出
	 * @param session
	 * @return
	 */
	@RequestMapping(value = "/tuichu.do")
	  public String tuichu(HttpSession session){
        session.invalidate();
        return "login/login";
    }
	@RequestMapping(value = "/utu.do")
	  public String utu(HttpSession session){
      session.invalidate();
      return "redirect:/login/index.do";
  }
	

}

如果也想学习本系统,下面领取。关注并回复:138ssm 

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

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

相关文章

对称加密算法(二)(分组密码,Feistel Cipher)

文章目录Traditional Block Cipher StructureStream Ciphers and Block CiphersFeistel CipherReferencesTraditional Block Cipher Structure Stream Ciphers and Block Ciphers 序列密码也称为流密码 (Stream Ciphers)&#xff0c; 它是指每次对数字数据流的一个比特或一个…

CSS -- CSS复合选择器总结

文章目录CSS的复合选择器1 什么是复合选择器2 后代选择器3 子选择器4 并集选择器5 伪类选择器6 链接伪类选择器7 :focus 伪类选择器8 复合选择器总结CSS的复合选择器 1 什么是复合选择器 在 CSS 中&#xff0c;可以根据选择器的类型把选择器分为基础选择器和复合选择器&#…

【博客554】k8s 中的 Client-Side Apply 和 Server-Side Apply

k8s 中的 Client-Side Apply 和 Server-Side Apply 背景 如果你经常与 kubectl 打交道&#xff0c;那相信你一定见过 kubectl.kubernetes.io/last-applied-configuration annotation&#xff0c;以及那神烦的 managedFields&#xff0c;像这样&#xff1a; kubectl get pods…

单元测试理论储备及JUnit5实战

概述 测试驱动开发&#xff0c;TDD&#xff0c;Test Driven Development&#xff0c;优点&#xff1a; 使得开发人员对即将编写的软件任务具有更清晰的认识&#xff0c;使得他们在思考如何编写代码之前先仔细思考如何设计软件对测试开发人员所实现的代码提供快速和自动化的支…

银保监机构保险许可证数据(2007-2022年)

保险是金融系统的重要组成部分,保险的经济补偿和资金融通功能对维持金融系统的稳定,维护整个社会的安定起着不可或缺的作用,因此,从现实意义上来讲,对于我国保险业系统性风险的研究是很有必要性的。 通过对保险业系统性风险的类型、传播机制的研究,可以有效防范并降低我国保险…

MATLB|基于粒子群优化算法的智能微电网调度(含风、光、微型燃气轮机、电网输入微网、储能)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑…

linux基本使用及服务器环境搭建

文章目录0.linux基本命令1.配置jdk环境变量2.安装tomcat3. mysql安装4.部署jar项目基本命令5. 前端项目继承到后端项目中0.linux基本命令 1.pwd 我在那里 2.who am i 我是谁 3.clear 清屏 4.ctrlc 强制停止 5.ip addr 查看地址 6.ping 是否联通网站 7.systemctl start|s…

分布式系统的解决方案,学好这个就够了

分布式、负载、消息队列等一些解决方案&#xff0c;在互联网公司应用已经非常普遍了&#xff0c;也是每一个程序员要成为技术专家、架构师必学的知识。 所以&#xff0c;今天给大家推荐一个开源项目&#xff0c;有关互联网项目常见的解决方案&#xff0c;通通都打包一起了。 …

10个 解放双手的 IDEA 插件,少些冤枉代码

正经干活用的 分享一点自己工作中得心应手的IDEA插件&#xff0c;可不是在插件商店随随便便搜的&#xff0c;都经过实战检验&#xff0c;用过的都说好。可能有一些大家用过的就快速划过就行了。 1、GenerateAllSetter 实际的开发中&#xff0c;可能会经常为某个对象中多个属性…

半监督下的点云

搬了这么个东东来~~ 不过他的名字有点容易叫大家混淆,所以没写标题上... 在训练阶段&#xff0c;只需少量的二维方框标注作为指导&#xff0c;本文的网络就可以从激光雷达方框中产生精确的具有三维属性的图像级长方体标注。 论文&#xff1a;https://arxiv.org/pdf/2211.0930…

【Dubbo3高级特性】「实战开发」自定义扩展实现Dubbo服务对外暴露的主机地址实战开发指南

内容主旨 本篇文章主要介绍了如何进行自定义Dubbo服务对外暴露的主机地址的实战技术方案&#xff0c;其中我们需要针对于服务提供者侧的host主机暴漏的目的以及如何进行定制化处理 特性说明 在Dubbo中&#xff0c;Provider启动时主要做两个事情 启动服务提供者的server端实…

基于C++实现(控制台+界面)通讯录管理系统【100010012】

个人通讯录管理系统 问题描述&#xff1a; 主要内容&#xff1a; 个人通讯录是记录了同学&#xff08;包含一起上学的学校名称&#xff09;、同事&#xff08;包含共事的单位名称&#xff09;、朋友&#xff08;包含认识的地点&#xff09;、亲戚&#xff08;包含称呼&#…

Python小炼(2):文件操作

"一封信&#xff0c;写下太多如果" 如果有一定语言基础的&#xff0c;一定对文件操作十分得"熟悉"!当然&#xff0c;这种熟悉是 引起人恼怒的 也不为过。 python 也有自己的文件操作&#xff0c;那它跟C\C又有何不同呢&#xff1f; 一、文件的基本操作 (…

中国宗教活动场所数据库(数据+python代码)

通常研究&#xff0c;宗教活动场所与公司避税行为&#xff0c;社会整体信任水平以及民营企业创始资金来源等元素相关联。例如&#xff0c;企业注册地的宗教传统负向影响公司避税&#xff0c;企业注册地的宗教传统通过提高管理者的道德意识和强化管理者的风险规避倾向两条机制抑…

Swagger总结

目录 简介&#xff1a; openAPI Springfox&#xff1a; 简介 Springfox的使用 SwaggerUI的使用 Swagger配置 设置扫描的包 设置范围 Swagger常用注解&#xff1a; 控制类、方法生成接口信息 ApiParam ApiModel ApiModelProperty ApiIgnore ApiImplicitParam 部分图片来自百…

SpringBoot日志详解

⭐️前言⭐️ &#x1f349;博客主页&#xff1a; &#x1f341;【如风暖阳】&#x1f341; &#x1f349;精品Java专栏【JavaEE进阶】、【JavaEE初阶】、【MySQL】、【数据结构】 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; …

rocketMq相关机制

rocketMq相关机制 topic读写队列 perm字段表示Topic的权限。有三个可选项。 2&#xff1a;禁写禁订阅&#xff0c;4&#xff1a;可订 阅&#xff0c;不能写&#xff0c;6&#xff1a;可写可订阅 这其中&#xff0c;写队列会真实的创建对应的存储文件&#xff0c;负责消息写入。…

小蓝本 第一本《因式分解技巧》第四章 拆项与添项 笔记(第四天)

小蓝本 第一本《因式分解技巧》第四章 拆项与添项 笔记&#xff08;第四天&#xff09;前言拆项与添项目的方法分组分解走平均分配分组分解走瞄准公式旧事重提第二章公式(9)好题习题4题目题解错题题号改错经验前言 芜湖&#xff0c;坚持做小蓝本的第四天&#xff0c;今天的知识…

基于LSTM、BP神经网络实现电力系统负荷预测(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

房屋装修设计技巧有哪些?有哪些注意事项

拥有自己的家是每个人的愿望&#xff0c;拥有一座新的房子是一种幸福。但是&#xff0c;作为一个装修小白&#xff0c;装修新房是一件很麻烦的事情。那么&#xff0c;房屋装修设计技巧是什么&#xff1f;房屋的装修设计应该注意些什么&#xff1f;下面我将详细解释一下。 房屋装…