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

作者主页:舒克日记

简介: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/===
     */
    @Autowired
    private UsersService usersService;
    
    /**
     * 【不分页 => 查询列表 => 无条件】
    * @Title: listAll 
    * @Description: TODO(这里用一句话描述这个方法的作用) 
    * @param @return 设定文件 
    * @author
    * @return String 返回类型 
    * @throws
     */
    @RequestMapping(value = "/listAll.json")
    @ResponseBody
    public 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")
    @ResponseBody
    public 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")
    @ResponseBody
    public String edit(Users users){
       Users users1 = usersService.getByEntity(users);
       JSONObject jsonObject = new JSONObject();
       jsonObject.put("bean", users1);
       return jsonObject.toJSONString();
    }

    @RequestMapping(value = "grxx.do")
    @ResponseBody
    public 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")
    @ResponseBody
    public 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")
    @ResponseBody
    public 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")
    @ResponseBody
    public 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")
    @ResponseBody
    public 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")
    @ResponseBody
    public 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")
    @ResponseBody
    public 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)
    @ResponseBody
    public 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)
    @ResponseBody
    public 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)
    @ResponseBody
    public 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;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android横竖屏切换configChanges=“screenSize|orientation“避免activity销毁重建,Kotlin

Android横竖屏切换configChanges"screenSize|orientation"避免activity销毁重建&#xff0c;Kotlin 如果不在Androidmanifest.xml设置activity的&#xff1a; android:configChanges"screenSize|orientation" 那么&#xff0c;每次横竖屏切换activity都会…

【鸿蒙 HarmonyOS 4.0】数据持久化

一、数据持久化介绍 数据持久化是将内存数据(内存是临时的存储空间)&#xff0c;通过文件或数据库的形式保存在设备中。 HarmonyOS提供两种数据持久化方案&#xff1a; 1.1、用户首选项&#xff08;Preferences&#xff09;&#xff1a; 通常用于保存应用的配置信息。数据通…

如何使用Express框架构建一个简单的Web应用

在这个数字化时代&#xff0c;Web应用的需求越来越多样化和复杂化。在前端开发领域&#xff0c;Express框架作为一个快速、灵活的Node.js Web应用程序框架&#xff0c;拥有强大的功能和丰富的生态系统&#xff0c;深受开发者们的青睐。本篇博客将带您一步步探索如何使用Express…

JS进阶——解构赋值

数组解构 基本&#xff1a; let [a, b, c] [1, 2, 3]; // a 1 // b 2 // c 3 可嵌套 let [a, [[b], c]] [1, [[2], 3]]; // a 1 // b 2 // c 3 可忽略 let [a, , b] [1, 2, 3]; // a 1 // b 3 不完全解构 let [a 1, b] []; // a 1, b undefined 剩余运…

LLMChain使用 | RouterChain的使用 - 用本地大模型搭建多Agents

单个本地大模型搭建参考博客 单个Chain&#xff1a;面对一个需求&#xff0c;我们需要创建一个llmchain&#xff0c;设置一个prompt模板&#xff0c;这个chain能够接收一个用户input&#xff0c;并输出一个结果&#xff1b;多个Chain&#xff1a;考虑到同时面对多个需求&#x…

【计算机网络】网络基础知识

一. 网络发展史 独立模式&#xff08;单机模式&#xff09;&#xff1a;计算机之间相互独立&#xff0c;各自拥有独立的数据。 网络互连&#xff1a;将多台计算机连接在一起&#xff0c;完成数据共享。 随着时代的发展&#xff0c;越来越需要计算机之间进行互相通信&#…

#1.4w字长文#仿抖音项目架构设计与实现

一、项目介绍 本文介绍了一个Web端短视频应用&#xff0c;致力于为用户提供交互友好、功能完备的短视频浏览体验和直播体验。 集成了Gorse推荐算法&#xff0c;旨在为用户提供更个性化的推荐视频流和更权威的热门视频流。接入大模型&#xff0c;通过对视频内容进行语言分析&a…

旧物回收小程序开发,开启绿色生活新篇章

随着科技的发展和人们生活水平的提高&#xff0c;物质生活的丰富带来了大量的废弃物。如何合理处理这些废弃物&#xff0c;实现资源的再利用&#xff0c;已成为社会关注的焦点。旧物回收小程序的开发与应用&#xff0c;为这一问题提供了有效的解决方案。本文将探讨旧物回收小程…

洛谷C++简单题小练习day14—闰年推算小程序

day14--闰年推算小程序--2.18 习题概述 题目描述 输入 x,y&#xff0c;输出 [x,y] 区间中闰年个数&#xff0c;并在下一行输出所有闰年年份数字&#xff0c;使用空格隔开。 输入格式 输入两个正整数 x,y&#xff0c;以空格隔开。 输出格式 第一行输出一个正整数&#xf…

C++笔记:OOP三大特性之多态

前言 本博客中的代码和解释都是在VS2019下的x86程序中进行的&#xff0c;涉及的指针都是 4 字节&#xff0c;如果要其他平台下测试&#xff0c;部分代码需要改动。比如&#xff1a;如果是x64程序&#xff0c;则需要考虑指针是8bytes问题等等。 文章目录 前言一、多态的概念二、…

Linux网络编程(三-UDP协议)

目录 一、UDP概述 二、UDP的首部格式 三、UDP缓冲区 四、基于UDP的应用层协议 五、常见问题 一、UDP概述 UDP(User Datagram Protocol&#xff0c;用户数据协议报)是传输层协议&#xff0c;提供不可靠服务&#xff0c;其特点包括&#xff1a; 无连接&#xff1a;知道对端…

探针类型、方式及实验

目录 1、tcpSocket方式 2、就绪检测 3、就绪检测2 4、启动、退出动作 5、探针 5.1探针的三种类型 5.2探针的三种方式 1、tcpSocket方式 vim tcpsocket.yaml apiVersion: v1 kind: Pod metadata:name: probe-tcp spec:containers:- name: nginximage: soscscs/myapp:v1live…

300分钟吃透分布式缓存-10讲:MC是怎么定位key的?

我们在进行 Mc 架构剖析时&#xff0c;除了学习 Mc 的系统架构、网络模型、状态机外&#xff0c;还对 Mc 的 slab 分配、Hashtable、LRU 有了简单的了解。本节课&#xff0c;将进一步深入学习这些知识点。 接下来&#xff0c;进入 Memcached 进阶的学习。会讲解 Mc 是如何进行…

UIKit 在 UICollectionView 中拖放交换 Cell 视图的极简实现

概览 UIKit 中的 UICollectionView 视图是我们显示多列集合数据的不二选择&#xff0c;而丰富多彩的交互操作更是我们选择 UICollectionView 视图的另一个重要原因。 如上图所示&#xff1a;我们实现了在 UICollectionView 中拖放交换任意两个 Cell 子视图的功能&#xff0c;这…

YOLOv9来了! 使用可编程梯度信息学习你想学的内容, v7作者新作!【文献速读】

YOLOv9文献速读&#xff0c;本文章使用 GPT 4.0 和 Ai PDF 工具完成。 文章地址&#xff1a;https://arxiv.org/pdf/2402.13616.pdf 文章目录 文章简介有哪些相关研究&#xff1f;如何归类&#xff1f;谁是这一课题在领域内值得关注的研究员&#xff1f;论文试图解决什么问题&a…

实现律所高质量发展-Alpha法律智能操作系统

律师行业本质上属于服务行业&#xff0c;而律师团队作为一个独立的服务单位&#xff0c;应当包含研发、市场、销售、服务等单位发展的基础工作环节。但现实中&#xff0c;很多律师团队其实并没有区分这些工作。鉴于此&#xff0c;上海市锦天城律师事务所医药大健康行业资本市场…

2.22 day3、4 QT

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

MIT-6.824-Lab2,Raft部分笔记|Use Go

文章目录 前记Paper6&#xff1a;RaftLEC5、6&#xff1a;RaftLAB22AtaskHintlockingstructureguide设计与编码 2BtaskHint设计与编码 2CtaskHint question后记 LEC5&#xff1a;GO, Threads, and Raftgo threads技巧raft实验易错点debug技巧 前记 趁着研一考完期末有点点空余…

十四、图像几何形状绘制

项目功能实现&#xff1a;矩形、圆形、椭圆等几何形状绘制&#xff0c;并与原图进行相应比例融合 按照之前的博文结构来&#xff0c;这里就不在赘述了 一、头文件 drawing.h #pragma once#include<opencv2/opencv.hpp>using namespace cv;class DRAWING { public:void…

“最会写”的中文大模型Weaver来了,中文创意写作能力超GPT-4

分享&#xff5c; Weaver ChatGPT等通用大模型支持的功能成百上千&#xff0c;但是对于普通日常用户来说&#xff0c;智能写作一定是最常见的&#xff0c;也是大模型最能真正帮上忙的使用场景之一。尽管大模型经常能写出看起来像模像样的文字&#xff0c;但是大多数情况下内容…