Java项目:20 基于SSM实现的支教管理系统

作者主页:源码空间codegym

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

文中获取源码

项目介绍

ssm支教管理系统(前台+后台)

前台角色:支教学校+志愿者

支教学校功能模块:支教学校查询+报名职位+发布+已发布列表+已报名列表+评论列表+联系管理员+信息管理

志愿者功能模块:支教学校查询+报名职位+参与职位+我的评价+支教服务时长+信息管理

后台角色:管理员

功能模块:管理员管理+志愿者管理+支教学校管理+志愿者管理+报名审核+职位管理+轮播图设置+评论管理+留言管理

环境:IDEA+jdk1.8+Tomcat9+MySQL5.7+maven3.6.1

技术:ssm+jsp

环境要求

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等版本均可;

技术栈

后台框架:springmvc、MyBatis

数据库:MySQL

环境:JDK8、TOMCAT、IDEA

使用说明

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

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

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

运行指导

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

http://mtw.so/5MHvZq

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

运行截图

前端界面

O1CN01tPMWKS28H08diFPgX_!!0-fleamarket.jpg_q50.jpg_

O1CN01yniudB28H08lBMku4_!!0-fleamarket.jpg_q50

O1CN01bAb8La28H08gUYBbP_!!0-fleamarket.jpg_q50

O1CN01jEhmm028H08fNHjMc_!!0-fleamarket.jpg_q50

O1CN01LbjvIX28H08aw3gyI_!!0-fleamarket.jpg_q50

后台界面

O1CN01T3o2jS28H08in7qcT_!!0-fleamarket.jpg_q50

O1CN01ydwzCX28H08hAIDk6_!!0-fleamarket.jpg_q50

O1CN012qTI3O28H08hAJMPN_!!0-fleamarket.jpg_q50

O1CN01ASobLY28H08jI6UzH_!!0-fleamarket.jpg_q50

代码

UsersController

package com.sys.lawyer.controller;import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.sys.lawyer.base.BaseController;
import com.sys.lawyer.po.Releases;
import com.sys.lawyer.po.Users;
import com.sys.lawyer.service.UsersService;
import com.sys.lawyer.utils.Base64Img;
import com.sys.lawyer.utils.Pager;
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 org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;/*** @ClassName:  * @Description: * @author  - - admin* @date - 2018年10月17日 14时41分30秒*/@Controller
@RequestMapping("/users")
public class UsersController extends BaseController {/*** 依赖注入 start dao/service/===*/@Autowiredprivate UsersService usersService;/*** 【不分页 => 查询列表 => 无条件】* @Title: listAll * @Description: TODO(这里用一句话描述这个方法的作用) * @param @return 设定文件 * @author* @return String 返回类型 * @throws*/@RequestMapping(value = "/listAll.json")@ResponseBodypublic String listAll(Users users, Integer pageIndex){PageHelper.startPage(notEmpty(pageIndex) ? pageIndex : 0, 15);Pager<Users> pagers = usersService.findByEntity(users);JSONObject jsonObject = new JSONObject();jsonObject.put("page", pagers);return jsonObject.toJSONString();}@RequestMapping(value = "getUser.json")@ResponseBodypublic String getUser(){JSONObject jsonObject = new JSONObject();if (notEmpty(usersService.getUser())){jsonObject.put("user", false);} else {jsonObject.put("user", false);}return jsonObject.toJSONString();}@RequestMapping(value = "list.do")public String list(Integer role, Model model){model.addAttribute("role", role);model.addAttribute("user", new JSONObject().toJSONString(usersService.getUser()));return "users/list";}/***  【不分页=》查询列表=>有条件】* @Title: listByEntity * @Description: TODO(这里用一句话描述这个方法的作用) * @param @return 设定文件 * @author* @return String 返回类型 * @throws*/@RequestMapping(value = "/listByEntity")public String listByEntity(Users users, Model model, HttpServletRequest request, HttpServletResponse response){List<Users> listAll = usersService.listAllByEntity(users);model.addAttribute("list", listAll);return "users/list";}@RequestMapping(value = "edit.do")@ResponseBodypublic String edit(Users users){Users users1 = usersService.getByEntity(users);JSONObject jsonObject = new JSONObject();jsonObject.put("bean", users1);return jsonObject.toJSONString();}@RequestMapping(value = "grxx.do")@ResponseBodypublic String grxx(){Users users1 = usersService.getUser();JSONObject jsonObject = new JSONObject();jsonObject.put("bean", users1);return jsonObject.toJSONString();}/*** 分页查询 返回list对象(通过对象)** @return*/@RequestMapping(value = "/findByObj")public String findByObj(Users users, Model model) {//分页查询Pager<Users> pagers = usersService.findByEntity(users);model.addAttribute("pagers", pagers);//存储查询条件model.addAttribute("bean", users);return "users/list";}/*** 跳至添加页面* @return*/@RequestMapping(value = "/add")public String add() {return "users/addexcl";}@RequestMapping(value = "/zc")public String zc() {return "users/add";}@RequestMapping(value = "importExcl.do")public String importExcl() {return "users/addexcl";}@RequestMapping(value = "/importsave.json")@ResponseBodypublic String importsave(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request) {JSONObject jsonObject = new JSONObject();boolean flag = false;if (notEmpty(file)){flag = usersService.importsave(file);}jsonObject.put("message", flag ? "提交成功" : "登录名重复或其他数据异常");jsonObject.put("flag", flag);return jsonObject.toJSONString();}@RequestMapping(value = "/reportExcl.do")public void reportExcl(Users users, HttpServletResponse response) {usersService.reportExcl(users, response);}/*** 添加执行* @return*/@RequestMapping(value = "/exAdd")public String exAdd(Users users, @RequestParam(value = "file", required = false) MultipartFile file, String openid) throws IOException {if (file.getSize() > 0){String str = Base64Img.getImgStr(file.getInputStream());String type = file.getContentType();users.setPhoto("data:" + type + ";base64," + str);}usersService.insert(users);return "redirect:/users/findByObj";}@RequestMapping(value = "/update.json")@ResponseBodypublic String update(Users users, @RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request) {JSONObject jsonObject = new JSONObject();Users user = usersService.getUser();Users users1 = usersService.getById(user.getId());if (user.getRole() == 1 || user.getRole() == 0){if (notEmpty(users)){if (notEmpty(users.getId())){if (notEmpty(file)){users.setPhoto("/resource/upload/" + saveFile(file, request));}users.setIsDelete(0);usersService.updateById(users);if (user.getId() == users.getId()){request.getSession().setAttribute("user", usersService.getById(users.getId()));}}jsonObject.put("message", "提交成功");jsonObject.put("flag", true);}} else if ((user.getRole() > 1) || (notEmpty(users1) && user.getRole() == 1 && users1.getRole() == 0)){jsonObject.put("message", "权限不足");jsonObject.put("flag", false);}return jsonObject.toJSONString();}@RequestMapping(value = "/updateGrxx.json")@ResponseBodypublic String updateGrxx(Users users, @RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request) {JSONObject jsonObject = new JSONObject();if (notEmpty(users)){if (notEmpty(users.getId())){if (notEmpty(file)){users.setPhoto("/resource/upload/" + saveFile(file, request));}users.setIsDelete(0);usersService.updateById(users);request.getSession().setAttribute("user", usersService.getById(users.getId()));}jsonObject.put("message", "修改成功");jsonObject.put("flag", true);}return jsonObject.toJSONString();}@RequestMapping(value = "/save.json")@ResponseBodypublic String save(Users users, @RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request) {JSONObject jsonObject = new JSONObject();Users user = usersService.getUser();Users users1 = new Users();if (user.getRole() == 1 || user.getRole() == 0){if (notEmpty(users)){users1.setName(users.getName());users1 = usersService.getByEntity(users1);if (notEmpty(users1)){jsonObject.put("message", "登录名重复");jsonObject.put("flag", false);} else {users.setPhoto("/resource/upload/" + saveFile(file, request));users.setIsDelete(0);if (notEmpty(users.getId())){usersService.update(users);} else {usersService.insert(users);}
//              request.getSession().setAttribute("user", users);jsonObject.put("message", "提交成功");jsonObject.put("flag", true);}}} else {jsonObject.put("message", "权限不足");jsonObject.put("flag", false);}return jsonObject.toJSONString();}/*** 删除通过主键* @return*/@RequestMapping(value = "delete.json")@ResponseBodypublic String delete(Integer id) {Users users = usersService.getUser();Users users2 = usersService.getById(id);JSONObject jsonObject = new JSONObject();if (users.getRole() == 0 || users.getRole() == 1){if (users.getId() == id){jsonObject.put("flag", false);jsonObject.put("message", "不能删除自己");} else if (users.getRole() ==1 && users2.getRole() == 0){jsonObject.put("flag", false);jsonObject.put("message", "不能删除超级管理员");} else {usersService.deleteById(id);jsonObject.put("flag", true);jsonObject.put("message", "删除成功");}} else {jsonObject.put("flag", false);jsonObject.put("message", "本账号无权限删除用户");}return jsonObject.toJSONString();}@RequestMapping(value = "sh.json")@ResponseBodypublic String sh(Integer id) {JSONObject jsonObject = new JSONObject();Users users = usersService.getById(id);users.setIsSh(1);usersService.updateById(users);jsonObject.put("flag", true);jsonObject.put("message", "审核成功");return jsonObject.toJSONString();}/*** 【不分页 => 查询列表 => 无条件】* @Title: listAll * @Description: TODO(这里用一句话描述这个方法的作用) * @param @return 设定文件 * @author* @return String 返回类型 * @throws*/@RequestMapping(value = "/listAllJson", method = RequestMethod.POST)@ResponseBodypublic String listAllJson(Users users, HttpServletRequest request, HttpServletResponse response){List<Users> listAll = usersService.listAll();JSONObject jsonObject = new JSONObject();jsonObject.put("list", listAll);jsonObject.put("obj", users);return jsonObject.toString();}/*** ajax 添加* @param * @return*/@RequestMapping(value = "/exAddJson", method = RequestMethod.POST)@ResponseBodypublic String exAddJson(Users users, HttpServletRequest request, HttpServletResponse response) {usersService.insert(users);JSONObject jsonObject = new JSONObject();jsonObject.put("message", "添加成功");return jsonObject.toString();}/*** ajax 修改* @param * @return*/@RequestMapping(value = "/exUpdate.json", method = RequestMethod.POST)@ResponseBodypublic String exUpdateJson(Users users, Model model, HttpServletRequest request, HttpServletResponse response) {//1.通过实体类修改,可以多传修改条件usersService.update(users);//2.通过主键id修改//usersService.updateById(users);JSONObject jsonObject = new JSONObject();jsonObject.put("message", "修改成功");return jsonObject.toString();}@RequestMapping(value = "loginOut.do")public String loginOut(HttpServletRequest request){request.getSession().removeAttribute("user");return "redirect:/web/index.do";}public String saveFile(@RequestParam(value = "file", required = false) MultipartFile files, HttpServletRequest request) {String filePath = "";String fileNmae = "";if (notEmpty(files)) {int pre = (int) System.currentTimeMillis();try {filePath = request.getRealPath("/resource/upload/");File f = new File(filePath);if (!f.exists()) {f.mkdirs();}fileNmae = pre + files.getOriginalFilename().replaceAll(" ", "").replace("(", "").replace(")", "");File file = new File(filePath + fileNmae);if (!file.exists()) {file.createNewFile();}files.transferTo(file);} catch (Exception e) {e.printStackTrace();System.out.println("上传出错");}}return fileNmae;}
}

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

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

相关文章

【数据结构】单向循环链表

一、mian函数 #include <stdio.h> #include "./3.looplinklist.h" int main(int argc, const char *argv[]) {looplinklist* head create_looplinklist();insertHead_looplinklist(head,100);insertHead_looplinklist(head,200);insertHead_looplinklist(hea…

瑞盟MS5188N——16bit、8 通道、500kSPS、 SAR 型 ADC

产品简述 MS5188N 是 8 通道、 16bit 、电荷再分配逐次逼近型模数 转换器&#xff0c;采用单电源供电。 MS5188N 拥有多通道、低功耗数据采集系统所需的所有 组成部分&#xff0c;包括&#xff1a;无失码的真 16 位 SAR ADC &#xff1b;用于将输入配 置为单端输入…

【Flink状态管理(八)】Checkpoint:CheckpointBarrier对齐后Checkpoint的完成、通知与对学习状态管理源码的思考

文章目录 一. 调用StreamTask执行Checkpoint操作1. 执行Checkpoint总体代码流程1.1. StreamTask.checkpointState()1.2. executeCheckpointing1.3. 将算子中的状态快照操作封装在OperatorSnapshotFutures中1.4. 算子状态进行快照1.5. 状态数据快照持久化 二. CheckpointCoordin…

图的遍历-----深度优先遍历(dfs),广度优先遍历(bfs)【java详解】

目录 简单介绍&#xff1a;什么是深度、广度优先遍历&#xff1f; 深度优先搜索&#xff08;DFS&#xff0c;Depth First Search&#xff09;&#xff1a; 大致图解&#xff1a; 广度优先搜索&#xff08;BFS&#xff0c;Breadth First Search&#xff09;&#xff1a; 大致图…

Python学习笔记——自定义函数(传递任意数量的实参)

Python允许函数从调用语句中收集任意数量的实参。例如下面自定义函数制作一个披萨&#xff0c;它需要接受很多配料&#xff0c;但无法预先确定顾客要点多少种配料。 下面行数只有一个形参*toppings&#xff0c;不管调用语句提供多少个实参&#xff0c;这个参数都会收集到&…

用 LangChain 和 Milvus 从零搭建 LLM 应用

如何从零搭建一个 LLM 应用&#xff1f;不妨试试 LangChain Milvus 的组合拳。 作为开发 LLM 应用的框架&#xff0c;LangChain 内部不仅包含诸多模块&#xff0c;而且支持外部集成&#xff1b;Milvus 同样可以支持诸多 LLM 集成&#xff0c;二者结合除了可以轻松搭建一个 LL…

在Discord上添加自己的服务器并邀请midjourney机器人加入

我开发的chatgpt网站&#xff1a; https://chat.xutongbao.top

vue2--多设备访问本地调试项目

背景 在vue2开发阶段&#xff0c;为了更好的和小伙伴对项目进行讨论&#xff0c;需要让小伙伴可以看到自己本地的项目。 方案 修改vue2项目配置 在本地进行项目调试时&#xff0c;都是使用的127.0.0.1:8080&#xff0c;为了让局域网中的其他小伙伴可以访问&#xff0c;需要…

阿里云国际-在阿里云服务器上快速搭建幻兽帕鲁多人服务器

幻兽帕鲁是最近流行的新型生存游戏。该游戏一夜之间变得极为流行&#xff0c;同时在线玩家数量达到了200万。然而&#xff0c;幻兽帕鲁的服务器难以应对大量玩家的压力。为解决这一问题&#xff0c;幻兽帕鲁允许玩家建立专用服务器&#xff0c;其提供以下优势&#xff1a; &am…

Docker中如何删除某个镜像

1. 停止使用镜像的容器 首先&#xff0c;您需要停止所有正在使用该镜像的容器。您可以使用 docker stop 命令来停止容器&#xff1a; docker stop 11184993a106如果有多个容器使用该镜像&#xff0c;您需要对每个容器都执行停止命令。您可以通过 docker ps -a | grep core-ba…

数据结构 计算结构体大小

一、规则&#xff1a; 操作系统制定对齐量&#xff1a; 64位操作系统&#xff0c;默认8Byte对齐 32位操作系统&#xff0c;默认4Byte对齐 结构体对齐规则&#xff1a; 1.结构体整体的大小&#xff0c;需要是最大成员对齐量的整数倍 2.结构体中每一个成员的偏移量需要存在…

Selenium常见问题解析

1、元素定位失败&#xff1a; 在使用Selenium自动化测试时&#xff0c;最常见的问题之一是无法正确地定位元素&#xff0c;这可能导致后续操作失败。解决方法包括使用不同的定位方式&#xff08;如xpath、CSS selector、id等&#xff09;&#xff0c;等待页面加载完全后再进行…

【Oracle】玩转Oracle数据库(三):数据库的创建和管理

前言 嘿&#xff0c;各位数据库小能手们&#xff01;今天我们要进入数据库的创世纪&#xff0c;探索Oracle数据库的创建和管理&#xff01;&#x1f527;&#x1f4bb; 在这篇博文【Oracle】玩转Oracle数据库&#xff08;三&#xff09;&#xff1a;数据库的创建和管理中&#…

详解动态内存管理!

目录 ​编辑 1.为什么要用动态内存分配 2.malloc和free 2.1 malloc 2.2 free 3.calloc和realloc 3.1 calloc 3.2 realloc 4.常见的动态内存的错误 4.1 对NULL的解引用操作 4.2 对动态内存开辟空间的越界访问 4.3 对非动态内存开辟空间用free释放 4.4 使用free释放动…

【北京游戏业:出海竞争实力全面】

本文将深入分析北京的游戏行业发展。在上海、广州、北京、深圳、成都、杭州、福建七大游戏产业中心城市中&#xff0c;北京无疑是出海竞争力最强的游戏产业集群。本文将全面剖析北京游戏行业的发展现状。 北京是中国游戏产业的发源地。拥有从游戏引擎到美术设计等完整的产业链…

如何在Shopee平台上选择爆款商品:借鉴爆款属性的有效策略

在当今激烈竞争的电商市场中&#xff0c;想要在Shopee平台上取得成功&#xff0c;卖家需要精心选择潜在的热销产品。借鉴爆款商品的属性是一种行之有效的策略&#xff0c;能够帮助卖家快速找到市场上的热门商品。通过分析市场趋势、竞品表现、社交媒体趋势等多方面因素&#xf…

【EI会议征稿通知】第四届自动化控制、算法与智能仿生学术会议(ACAIB 2024)

第四届自动化控制、算法与智能仿生学术会议(ACAIB 2024) 2024 4th Conference on Automation Control, Algorithm and Intelligent Bionics 第四届自动化控制、算法与智能仿生学术会议&#xff08;ACAIB 2024&#xff09;将于2024年6月7日-9日在中国银川举行。 本届大会由北…

leetcode hot100 完全平方数

本题中&#xff0c;是给一个整数n&#xff0c;让用完全平方数凑出这个整数&#xff0c;注意&#xff0c;题中给了n的范围&#xff0c;是大于等于1的&#xff0c;也就是说&#xff0c;dp[0]我们可以先不考虑。 整个问题可以抽象成完全背包问题的变形形式&#xff0c;物品就是这…

在 React 中使用 i18next支持多语言

基本用法 安装依赖包 npm i i18next react-i18next i18next-browser-languagedetector --savei18next 提供了翻译的基本能力; react-i18next 是 i18next 的一个插件&#xff0c;用来降低 react 的使用成本; i18next-browser-languagedetector 是用来检测浏览器语言的插件。 …

搜维尔科技:OptiTrack探索人类与技术之间关系的开创性表演

另一种蓝色通过 OptiTrack 释放创造力 总部位于荷兰的当代舞蹈团因其探索人类与技术之间关系的开创性表演而受到广泛赞誉。该公司由富有远见的编舞家大卫米登多普创立&#xff0c;不仅利用技术作为探索的主题&#xff0c;而且将其作为表达故事的动态工具。 “我一直对文化与…