SpringBoot水果商城后台管理系统(文末附源码)

Posted 小王java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot水果商城后台管理系统(文末附源码)相关的知识,希望对你有一定的参考价值。

🍅程序员小王的博客:程序员小王的博客
🍅 欢迎点赞 👍 收藏 ⭐留言 📝
🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕
🍅java自学的学习路线:java自学的学习路线

一、项目功能简介

(1)《SpringBoot水果商城后台管理系统》该项目采用技术:

《SpringBoot水果商城后台管理系统》该项目采用的技术实现如下:html+CSS+javascript+jsp+SpringBoot+Mybatis+mysql

  • 后台使用SpringBoot+mybatis框架
  • 前端采用jsp+js+css等界面非常的美观大方
  • mysql数据库+tomcat服务器

(2)管理员功能介绍:

1、管理员登录(如果验证码错误报:验证码有误,密码或账户错误报账户或密码错误)

2、强制登录,如果管理员没有登录,不能进入系统(显示管理员名字为登录成功)

3、退出登录(注销Session的形式进行退出登录)

(3)水果功能介绍:

1、分页展示所有

2、删除

3、批量删除

4、全选

6、修改(先进行数据回显之后进行修改)

7、图片上传和图片在页面显示功能

二、数据库设计

(1)数据库创建

-- 创建员工表
create table admin(
id int primary key auto_increment,
username varchar(20) not null,
password varchar(20) not null
)
-- 添加管理员数据
insert into admin values(null,'王恒杰','123456');
insert into admin values(null,'杨福君','whj63135');
insert into admin values(null,'邓正武','675437');
-- 查询管理员
select *from admin;

-- 创建水果表
create table fruit(
id int primary key auto_increment,
image varchar(30) not null,
name varchar(20) not null,
price double not null,
month int not null,
createTime date
);
-- 查询水果表
select * from fruit;
-- 添加水果信息
insert into fruit values(null,'/img.jpg','苹果','5.00',5,NOW());

(2)数据库设计文档

数据库名: fruitmall

文档版本: V1.0.0

文档描述: 数据库表设计描述

表名说明
admin管理员
fruit水果管理

表名: admin

说明: 管理员

序号名称数据类型长度小数位允许空值主键默认值说明
1idint100NY
2usernamevarchar200NN
3passwordvarchar200NN

表名: fruit

说明: 水果

序号名称数据类型长度小数位允许空值主键默认值说明
1idint100NY
2imagevarchar300NN
3namevarchar200NN
4pricedouble230NN
5monthint100NN
6createTimedate100YN

三、导入项目相关依赖和配置application.yml

(1)导入相关依赖

  <!--集成springboot的父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
    </parent>

    <dependencies>

        <!--引入springboot的web依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--引入mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>


        <!--引入mybatis以及整合相关依赖-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.2</version>
        </dependency>

        <!--druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.12</version>
        </dependency>

        <!--JSTL表达式-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!--引入junit测试相关依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

        <!--引入aop相关依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <!--jsp-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
    </dependencies>

(2)配置application.yml

server:
  port: 8080 #端口号
  servlet:
    context-path: /fruitmall #水果商城
    jsp:
      init-parameters:
        development: true  #开启jsp页面的调试模式
spring:
  mvc:
    view:
      prefix: /    #前缀
      suffix: .jsp  #后缀

# 数据源
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource  #数据源类型
    driver-class-name: com.mysql.cj.jdbc.Driver   #加载驱动
    url: jdbc:mysql://localhost:3306/fruitmall?useSSL=false&serverTimezone=UTC
    username: root
    password: root

mybatis:
  mapper-locations: classpath:com/tjcu/mapper/*Mapper.xml #指定mapper文件所在的位置,其中classpath必须和mapper-locations分开
  type-aliases-package: com.tjcu.entity

四、管理员核心功能

1、前端

<%@page isELIgnored="false" contentType="text/html; harset=utf-8" pageEncoding="UTF-8" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>login</title>
    <link rel="stylesheet" type="text/css" href="$pageContext.request.contextPath/css/bootstrap.min.css"/>
</head>

<body>
<div id="wrap" class="container-fluid">
    <div id="top_content" class="row" style="margin: 0 auto;">
        <div class="col-sm-8 col-sm-offset-2">
            <div id="header">
                <div id="topheader">
                    <h1 class="text-center text-info">欢迎进入水果管理系统V1.0</h1>
                </div>
                <div id="navigation">
                </div>
            </div>
        </div>
    </div>
    <div class="row" style="margin-top: 20px;">
        <div class="col-sm-8 col-sm-offset-2">
            <div id="content">
                <form method="post" action="$pageContext.request.contextPath/admin/login">
                    <div class="form-group">
                        <label for="username">用户名</label>
                        <input type="text" v-model="username" id="username" class="form-control" name="username"/>
                    </div>
                    <div class="form-group">
                        <label for="password">密码</label>
                        <input type="password" id="password" v-model="password" class="form-control" name="password"/>
                    </div>
                    <br>
                    <tr>
                        <td valign="middle" align="right">
                            验证码:
                            <img id="num" src="$pageContext.request.contextPath/admin/generateImageCode" />
                            <a href="javascript:;" onclick="document.getElementById('num').src = '$pageContext.request.contextPath/admin/generateImageCode?'+(new Date()).getTime()">换一张</a>
                        </td>
                        <td valign="middle" align="left">
                            <input type="text" class="inputgri" name="adminCode" />
                        </td>
                    </tr>
                    <input type="submit" style="width: 98%" class="btn btn-danger" value="登录&raquo;"/>
                </form>
            </div>
            $requestScope.msg
        </div>
    </div>
    <div class="row" style="margin-top: 40px;">
        <div class="col-sm-8 col-sm-offset-2">
            <h5 class="text-center">Fruit@136.com</h5>
        </div>
    </div>
</div>
</body>
</html>

2、控制层

package com.tjcu.controller;

import com.tjcu.entity.Admin;
import com.tjcu.service.AdminService;
import com.tjcu.utils.VerifyCodeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

import static javax.swing.text.html.CSS.getAttribute;

/**
 * @author 王恒杰
 * @date 2021/11/28 16:22
 * @Description:
 */
@Controller
@RequestMapping("admin")
public class AdminAction 
    @Autowired
    private AdminService adminService;
    @RequestMapping("login")
    public String login(Admin admin, HttpServletRequest request,String adminCode)
        //1.比较验证是否一致
        HttpSession session = request.getSession();
        String code = session.getAttribute("code").toString();
        if(code.equals(adminCode))
            Admin login = adminService.login(admin.getUsername(), admin.getPassword());
           if(login!=null)
               request.setAttribute("admin",login);
               session.setAttribute("admin",login);
               return "forward:/fruit/showAll?pageNumber=1";
           else 
               request.setAttribute("msg","用户名或者密码输入错误");
               return "login";
           
        else 
            request.setAttribute("msg","验证码输入错误");
            return "login";
        

    

    /**
     * 用来生成验证码方法
     */
    @RequestMapping("generateImageCode")
    public void generateImageCode(HttpSession session, HttpServletResponse response) throws IOException 
        //1.生成随机字符串
        String code = VerifyCodeUtils.generateVerifyCode(4);
        //2.保存随机字符串到Session中
        session.setAttribute("code",code);
        //3.将随机字符串生成图片
        //4.通过response响应图片
        response.setContentType("image/png");//指定响应类型
        ServletOutputStream os = response.getOutputStream();
        VerifyCodeUtils.outputImage(80,30,os,code);
    
@RequestMapping("cancel")
    public String cancel(HttpServletRequest request)
        request.getSession().invalidate();
        request.setAttribute("msg","管理员已经退出登录!");
        return "login";
    


五、水果相关功能核心代码

1、全选jquery实现

<script>
    $("#selectAll").click(function () 
        //:checkbox 获取当前选中的单选按钮或者复选框
        //:checkbox:gt(0) 获取当前复选框大于0的复选框
        //prop修改标签的属性 标签对象.prop(“属性名”,”属性值”);
        //prop获取标签的属性 标签对象.prop(“属性名”);
        //checked:选中
        //注意:在单选框和复选框中checked只要出现checked就是选中,不管他是否等于true还是false
        $(":checkbox:gt(0)").prop("checked",$("#selectAll"以上是关于SpringBoot水果商城后台管理系统(文末附源码)的主要内容,如果未能解决你的问题,请参考以下文章

Java精品项目源码第68期前台+后台精品水果商城系统

Java项目:前台+后台精品水果商城系统设计和实现(java+Springboot+ssm+mysql+jsp+maven)

基于ssm的运动产品商城的设计与实现(文末附源码论文)

JavaWeb SSM SpringBoot+Redis网上水果超市商城(源码+论文可运行《精品毕设》)主要实现登录注册商品分类浏览订单评论收藏购物车个人信息地址管理后台管理

基于SSM框架的农场商城系统的设计与实现(文末附源码论文)

毕业设计——基于SpringBoot的水果商城(Java课程设计)在线购物商城毕业设计