Java项目:01 springboot智能养生平台设计与实现

news2025/1/19 8:15:29

项目介绍

Java项目 智能养生平台
使用技术:spring+mybatis+springmvc+html+JavaScript+css+layui+jQuery
运行环境
jdk8+mysql+IntelliJ IDEA+maven
主要分两个端,用户端和管理员端
网站功能:实现论坛帖子管理,论坛帖子分类管理,留言管理,用户登录注册,管理员管理,
验证码使用,ajax使用,分页查询,报表统计,友情链接,问卷提交,问卷添加修改,问卷结果查看等。
管理员端主要功能:
管理员管理、用户管理、问卷管理、问卷结果管理、帖子分类管理、数据分析统计、公告管理、帖子管理、友情链接管理、留言管理

环境要求

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

技术栈

后台框架:Spring Boot、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。

运行截图

前端页面

QQ浏览器截图20231231003811

QQ浏览器截图20231231004551

QQ浏览器截图20231231004605

QQ浏览器截图20231231004616

QQ浏览器截图20231231004629

QQ浏览器截图20231231004644

管理员端页面

QQ浏览器截图20231231004658

QQ浏览器截图20231231004716

QQ浏览器截图20231231004725

QQ浏览器截图20231231004733

QQ浏览器截图20231231004743

QQ浏览器截图20231231004752

QQ浏览器截图20231231004800

QQ浏览器截图20231231004809

相关代码

AdminController

package com.module.controller.base;

import com.module.mapper.AdminMapper;
import com.module.pojo.Admin;
import com.module.util.MD5Util;
import com.module.util.ResultUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang.StringUtils;
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.ResponseBody;

import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 页面请求控制  管理员管理
 */
@Controller
public class AdminController {
    @Autowired
    AdminMapper adminMapper;

    /**
     * 跳转到列表页面
     *
     * @return
     */
    @RequestMapping("manage/adminList")
    public String adminList() {
        return "manage/admin/adminList";
    }

    /**
     * 跳转到添加页面
     *
     * @return
     */
    @RequestMapping("manage/addAdmin")
    public String addAdmin(Model model) {
        return "manage/admin/saveAdmin";
    }

    /**
     * 跳转到修改页面
     *
     * @param id
     * @param model
     * @return
     */
    @RequestMapping("manage/editAdmin")
    public String editAdmin(Integer id, Model model) {
        Admin admin = adminMapper.selectAdminById(id);
        model.addAttribute("admin", admin);
        return "manage/admin/saveAdmin";
    }

    /**
     * 分页查询
     *
     * @param page  默认第一页
     * @param limit 默认每页显示10条
     * @return
     */
    @RequestMapping("manage/queryAdminList")
    @ResponseBody
    public ResultUtil getCarouseList(Integer page, Integer limit, String keyword) {
        if (null == page) { //默认第一页
            page = 1;
        }
        if (null == limit) { //默认每页10条
            limit = 10;
        }
        Map map = new HashMap();
        if (StringUtils.isNotEmpty(keyword)) {
            map.put("keyword", keyword);
        }
        PageHelper.startPage(page, limit, true);
        List<Admin> list = adminMapper.selectAll(map);
        PageInfo<Admin> pageInfo = new PageInfo<Admin>(list);  //使用mybatis分页插件
        ResultUtil resultUtil = new ResultUtil();
        resultUtil.setCode(0);  //设置返回状态0为成功
        resultUtil.setCount(pageInfo.getTotal());  //获取总记录数目 类似count(*)
        resultUtil.setData(pageInfo.getList());    //获取当前查询出来的集合
        return resultUtil;
    }

    /**
     * 插入记录
     */
    @RequestMapping("manage/saveAdmin")
    @ResponseBody
    public ResultUtil saveAdmin(Admin admin, HttpSession session) {
        Date nowTime = new Date();
        admin.setCreatetime(nowTime);
        admin.setAdminpassword(MD5Util.getMd5(admin.getAdminpassword())); //加密密码
        try {
            adminMapper.insertAdmin(admin);
            return ResultUtil.ok("添加管理员成功");
        } catch (Exception e) {
            return ResultUtil.error("添加管理员出错,稍后再试!");
        }
    }

    /**
     * 更新记录
     */
    @RequestMapping("manage/updateAdmin")
    @ResponseBody
    public ResultUtil updateAdmin(Admin admin, HttpSession session) {
        Date nowTime = new Date();
        admin.setCreatetime(nowTime);
        admin.setAdminpassword(MD5Util.getMd5(admin.getAdminpassword())); //加密密码
        try {
            adminMapper.updateAdmin(admin);
            return ResultUtil.ok("修改管理员成功");
        } catch (Exception e) {
            return ResultUtil.error("修改管理员出错,稍后再试!");
        }
    }


    /**
     * 根据ID删除
     *
     * @param id
     * @return
     */
    @RequestMapping("manage/deleteAdmin")
    @ResponseBody
    public ResultUtil deleteAdminById(Integer id) {
        try {
            adminMapper.deleteAdminById(id);
            return ResultUtil.ok("删除管理员成功");
        } catch (Exception e) {
            return ResultUtil.error("删除管理员出错,稍后再试!");
        }
    }

    /**
     * 根据ID批量删除
     *
     * @param idsStr
     * @return
     */
    @RequestMapping("manage/deletesAdmin")
    @ResponseBody
    public ResultUtil deletesAdmin(String idsStr) {
        try {
            if (!StringUtils.isBlank(idsStr)) {
                String[] ids = idsStr.split(",");
                for (String id : ids) {
                    adminMapper.deleteAdminById(Integer.parseInt(id));
                }
            }
            return ResultUtil.ok("批量删除管理员成功");
        } catch (Exception e) {
            return ResultUtil.error("删除管理员出错,稍后再试!");
        }
    }


}

BaseController

package com.module.controller.base;

import com.github.pagehelper.Page;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.ui.Model;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 所有控制器的父类
 */
public class BaseController {

    /**
     * 时间转换处理器
     *
     * @param binder
     */
    @InitBinder
    protected void initBinder(WebDataBinder binder) {
        binder.registerCustomEditor(
                Date.class,
                new CustomDateEditor(
                        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"),
                        true    //true:允许输入空值,false:不能为空值
                )
        );
    }


    /**
     * 分页参数方法封装
     *
     * @param model
     * @param pathURL  分页地址
     * @param pageInfo 分页查询信息
     */
    public static void setPageParams(Model model, String pathURL, Page<Object> pageInfo) {
        model.addAttribute("currentPage", pageInfo.getPageNum()); //绑定当前页参数
        model.addAttribute("totalPage", pageInfo.getPages()); //绑定总页数
        model.addAttribute("totalNums", pageInfo.getTotal()); //绑定总记录条数
        model.addAttribute("pathURL", pathURL); //绑定分页跳转地址
    }


}

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

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

相关文章

计算机基础面试题 |20.精选计算机基础面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

YOLOv5改进 | 2023主干篇 | EfficientViT替换Backbone(高效的视觉变换网络)

一、本文介绍 本文给大家带来的改进机制是EfficientViT(高效的视觉变换网络),EfficientViT的核心是一种轻量级的多尺度线性注意力模块,能够在只使用硬件高效操作的情况下实现全局感受野和多尺度学习。本文带来是2023年的最新版本的EfficientViT网络结构,论文题目是Effici…

4.MapReduce 序列化

目录 概述序列化序列化反序例化java自带的两种Serializable非Serializable hadoop序例化实践 分片/InputFormat & InputSplit日志 结束 概述 序列化是分布式计算中很重要的一环境&#xff0c;好的序列化方式&#xff0c;可以大大减少分布式计算中&#xff0c;网络传输的数…

推荐VSCODE插件:为`package.json`添加注释信息

众所周知&#xff0c;JSON文件是不支持注释的&#xff0c;除了JSON5/JSONC之外&#xff0c;我们在开发项目特别是前端项目时&#xff0c;大量会用到JSON文件&#xff0c;特别是在编写package.json中的scripts时&#xff0c;由于缺少注释,当有大量的命令脚本时&#xff0c;就有了…

Spring Cloud 介绍

文章目录 微服务技术栈Spring Cloud 介绍京东、阿里的微服务架构SpringBoot 和 SpringCloud 版本选择Springboot版本选择Springcloud版本选择Springcloud和Springboot之间的依赖关系如何看Spring Cloud 组件的升级替换 微服务技术栈 [toc] Spring Cloud 介绍 Spring Cloud是…

Element+vue3.0 tabel合并单元格span-method

Elementvue3.0 tabel合并单元格 span-method :span-method"objectSpanMethod"详解&#xff1a; 在 objectSpanMethod 方法中&#xff0c;rowspan 和 colspan 的值通常用来定义单元格的行跨度和列跨度。 一般来说&#xff0c;rowspan 和 colspan 的值应该是大于等于…

一氧化碳中毒悲剧频发:探究道合顺电化学传感器促进家庭取暖安全

1月6日&#xff0c;陕西省榆林市发生了一起疑似因使用煤炭炉取暖中毒事件。通报称&#xff0c;经公安部门现场调查&#xff0c;并结合医院救治情况&#xff0c;初步判断5人属一氧化碳中毒&#xff0c;其中4人抢救无效死亡&#xff0c;令人痛心。 一般来说&#xff0c;这种在日…

【System Verilog and UVM实力进阶1】SVA语法

毛主席说过&#xff1a;人不犯我我不犯人&#xff0c;人若犯我我必犯人。 目录 1 SVA介绍 1.1 什么是断言 1.2 为什么用System Verilog 断言&#xff08;SVA&#xff09; 1.3 System Verilog的调度 1.4 SVA术语 1.4.1 并发断言 1.4.2 即时断言 1.5 建立SVA块 1.6 一个简…

抖音矩阵云混剪系统源码 短视频矩阵营销系统V2.2.1(免授权版)

抖音矩阵云混剪系统源码 短视频矩阵营销系统V2.2.1&#xff08;免授权版&#xff09; 中网智达矩阵营销系统多平台多账号一站式管理&#xff0c;一键发布作品。智能标题&#xff0c;关键词优化&#xff0c;排名查询&#xff0c;混剪生成原创视频&#xff0c;账号分组&#xff…

基于Jackson自定义json数据的对象转换器

1、问题说明 后端数据表定义的id主键是Long类型&#xff0c;一共有20多位。 前端在接收到后端返回的json数据时&#xff0c;Long类型会默认当做数值类型进行处理。但前端处理20多位的数值会造成精度丢失&#xff0c;于是导致前端查询数据出现问题。 测试前端Long类型的代码 …

单机多卡训练报错NCCL版本有问题

torch.distributedtorch.distributed…DistBackendErrorDistBackendError: : NCCL error in: …/torch/csrc/distributed/c10d/ProcessGroupNCCL.cpp:1275, internal error, NCCL version 2.14.3 这个不知道什么原因&#xff0c;然后解决方法是 增加环境变量NCCL_SOCKET_IFNAM…

FreeRTOS——软件定时器

一、什么是定时器 简单可以理解为闹钟&#xff0c;到达指定一段时间后&#xff0c;就会响铃。 STM32 芯片自带硬件定时器&#xff0c;精度较高&#xff0c;达到定时时间后会触发中断&#xff0c;也可以生成 PWM 、输入捕获、输出 比较&#xff0c;等等&#xff0c;功能强大&a…

HarmonyOS应用开发学习笔记 应用上下文Context 获取文件夹路径

1、 HarmoryOS Ability页面的生命周期 2、 Component自定义组件 3、HarmonyOS 应用开发学习笔记 ets组件生命周期 4、HarmonyOS 应用开发学习笔记 ets组件样式定义 Styles装饰器&#xff1a;定义组件重用样式 Extend装饰器&#xff1a;定义扩展组件样式 5、HarmonyOS 应用开发…

用html和css实现一个加载页面【究极简单】

要创建一个简单的加载页面&#xff0c;你可以使用 HTML 和 CSS 来设计。以下是一个基本的加载页面示例&#xff1a; HTML 文件 (index.html): <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"…

Python 工具 | conda 基本命令

Hi&#xff0c;大家好&#xff0c;我是源于花海。本文主要了解 Python 的工具的 conda 相关的基本命令。Conda 是一个开源的软件包管理系统和环境管理系统&#xff0c;用于安装多个版本的软件包及其依赖关系&#xff0c;并在它们之间轻松切换。在Windows下&#xff0c;需要安装…

赋能智慧农业生产,基于YOLOv3开发构建农业生产场景下油茶作物成熟检测识别系统

AI赋能生产生活场景&#xff0c;是加速人工智能技术落地的有利途径&#xff0c;在前文很多具体的业务场景中我们也从实验的角度来尝试性地分析实践了基于AI模型来助力生产生活制造相关的各个领域&#xff0c;诸如&#xff1a;基于AI硬件实现农业作物除草就是一个比较熟知的场景…

数据挖掘在制造业中的预测与优化应用

随着大数据时代的到来&#xff0c;数据挖掘技术在各行各业的应用日益广泛&#xff0c;尤其在制造业中&#xff0c;其对于提升生产效率、降低运营成本、优化供应链管理等方面发挥着不可替代的作用。本文将探讨数据挖掘在制造业中的预测与优化应用&#xff0c;通过深入剖析实际案…

强化学习求解TSP(一):Qlearning求解旅行商问题TSP(提供Python代码)

一、Qlearning简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于奖励的决策问题。它是一种无模型的学习方法&#xff0c;通过与环境的交互来学习最优策略。Q-learning的核心思想是通过学习一个Q值函数来指导决策&#xff0c;该函数表示在给定状态下采取某个动作所获…

2023.10.13 求逆序对,二分,求极小值

求逆序对 划分归并对数组进行调整的合理性在于 每次划分数组后&#xff0c;在前面数组的元素与后面数组元素相对次序不会颠覆&#xff0c;就是前面元素在前面划分出的数组里随便调整&#xff0c;也依然在后面数组的任意元素里的前面&#xff0c;而不可能调整到后面数组的任意…

TF-IDF(Term Frequency-Inverse Document Frequency)算法详解

目录 概述 术语解释 词频&#xff08;Term Frequency&#xff09; 文档频率&#xff08;Document Frequency&#xff09; 倒排文档频率&#xff08;Inverse Document Frequency&#xff09; 计算&#xff08;Computation&#xff09; 代码语法 代码展示 安装相关包 测…