IDEA+Java+SSM+Jsp+Mysql实现Web商品信息管理系统(上)

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: IDEA+Java+SSM+Jsp+Mysql实现Web商品信息管理系统

一、系统介绍


1.开发环境


开发工具:IDEA2018


JDK版本:Jdk1.8


Mysql版本:8.0.13


2.技术选型


Java+SSM+Bootstrap+Jsp+Mysql


3.系统功能


1.登录系统,注册系统。


2.管理员商品信息的增删改查,包含图片上传功能。


图片上传位置:out\artifacts\Commodity_war_exploded\upload


4.数据库文件

/*
 Navicat Premium Data Transfer
 Source Server         : MySQL
 Source Server Type    : MySQL
 Source Server Version : 80013
 Source Host           : 127.0.0.1:3306
 Source Schema         : ssm_commodity
 Target Server Type    : MySQL
 Target Server Version : 80013
 File Encoding         : 65001
 Date: 13/03/2022 23:02:18
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for items
-- ----------------------------
DROP TABLE IF EXISTS `items`;
CREATE TABLE `items`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '商品名称',
  `price` float(10, 1) NOT NULL COMMENT '商品定价',
  `detail` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '商品描述',
  `pic` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商品图片',
  `createtime` datetime(0) NOT NULL COMMENT '生产日期',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 22 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of items
-- ----------------------------
INSERT INTO `items` VALUES (19, '辣条', 2.0, '卫龙辣条', '36e2f94e-a707-4021-98e3-fdb071091198.jpg', '2022-03-12 16:00:00');
INSERT INTO `items` VALUES (20, '薯片', 3.0, '乐事薯片', 'c165ca56-6a25-4bb0-b1ab-d51cedfa12d4.jpg', '2022-02-27 16:00:00');
INSERT INTO `items` VALUES (21, '冰红茶', 5.0, '康师傅冰红茶', '91eddeee-809a-4c99-8d9c-a8697024befa.jpg', '2022-03-12 16:00:00');
INSERT INTO `items` VALUES (22, '方便面', 5.0, '康师傅红烧牛肉面', 'd39ea554-7d6c-41b2-8a10-5e55d4ce69f0.jpg', '2022-03-12 16:00:00');
INSERT INTO `items` VALUES (23, '雪糕', 2.0, '乐山雪糕', 'c2a8330d-d481-423f-b3b4-3c3c9b56d5b5.jpg', '2022-03-12 16:00:00');
INSERT INTO `items` VALUES (24, '牛奶', 5.0, '蒙牛牛奶', '6cf59ac5-be74-4fc0-8ea6-892492bc542f.jpg', '2022-03-12 16:00:00');
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名称',
  `password` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
  `birthday` date NULL DEFAULT NULL COMMENT '注册日期',
  `sex` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别,\"男\"“女”',
  `address` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'admin', 'admin', '2022-03-13', '1', '湖北武汉');
INSERT INTO `user` VALUES (7, 'user', 'user', '2022-12-28', '1', '湖南长沙');
SET FOREIGN_KEY_CHECKS = 1;


5.工程截图

b3aa0889645741a79d03f2654fba9e31.jpg


二、系统展示


1.系统注册


fe48f2dd3f5749f0a5dc92d6a9ce0b97.jpg


2.系统登录


b81935812dfe4af29bc7bc8e0fde788a.jpg


3.系统主页


c11ade654bdb4ad8b364a36c7dd36265.jpg


4.查询商品


f34dcff541d741b38e4dbf1fdf9ba47f.jpg


5.添加商品


22867bb9ef724e24a6b05f2d074c5b45.jpg


6.修改商品


959a258f976a4303bd8d25490b603a2f.jpg


三、部分代码


ItemsController


商品增删改查的逻辑控制层

package com.sjsq.controller;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.sjsq.service.ItemsService;
import com.sjsq.entity.Items;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
/**
 *@class_name:ItemsController 
 *@param: 6.controller控制层
 *@return: 实现业务逻辑控制
 *@author:sjsq
 *@createtime:2022年2月22日
 */
@Controller
@RequestMapping("/items")
public class ItemsController {
  @Autowired
  private ItemsService itemsService;
  //分页查询数据
  @RequestMapping("/queryItems")
  public String queryItems(@RequestParam(value="pn",defaultValue="1")Integer pn,Model model){
    //1.引入分页插件,pn是第几页,5是每页显示多少行
    PageHelper.startPage(pn,5);
    //2.紧跟的查询就是一个分页查询
    List<Items>list =itemsService.findAll();
    //3.使用PageInfo包装查询后的结果,5是连续显示的条数
    PageInfo<Items> pageInfo =new PageInfo<Items>(list,5);
    //4.使用model设置到前端
    model.addAttribute("pageInfo",pageInfo);
    model.addAttribute("test","呵呵");
    //5.最后设置返回的jsp
    return "showItems";
  }
  //分页查询数据
  @RequestMapping("/querySomeItems")
  public String querySomeItems(@RequestParam(value="pn",defaultValue="1")Integer pn,@RequestParam(value = "commodityname",required = false) String commodityname, Model model){
    //1.引入分页插件,pn是第几页,5是每页显示多少行
    PageHelper.startPage(pn,5);
        System.out.println(commodityname);
    //2.紧跟的查询就是一个分页查询
    List<Items>list =itemsService.findSome(commodityname);
    //3.使用PageInfo包装查询后的结果,5是连续显示的条数
    PageInfo<Items> pageInfo =new PageInfo<Items>(list,5);
    //4.使用model设置到前端
    model.addAttribute("pageInfo",pageInfo);
    //5.最后设置返回的jsp
    return "showItems";
  }
  // 添加商品
  @RequestMapping("/addItems")
  public String addItems(Items items,MultipartFile items_pic,HttpServletRequest request,HttpServletResponse response) throws IllegalStateException, IOException{
    //设置图片上传的路径
    String path =request.getServletContext().getRealPath("/upload");
    System.out.println("上传路径是:" + path);
    // 获取图片文件名
    String pic_name = items_pic.getOriginalFilename();
    System.out.println("原文件名是:" + pic_name);
    // 为了防止上传同名图片导致覆盖文件,引入随机数UUID解决。
    String newname = UUID.randomUUID().toString() + pic_name.substring(pic_name.lastIndexOf("."));
    System.out.println("新文件名是:" + newname);
    // 创建文件流对象picfile
    File picFile = new File(path, newname);
    System.out.println("文件流为:" + picFile);
    // 如果不存在则创建
    if (!picFile.exists()) {
      picFile.mkdirs();
      }
    items_pic.transferTo(picFile);
    items.setPic(newname);
      // 添加进去
    itemsService.add(items);
      // 内部转发
    return "redirect:queryItems.action";
  }
  //删除商品
  @RequestMapping("/del")
  public String del(int id){
    itemsService.del(id);
    return "redirect:queryItems.action";
  }
  //查询单条记录
  @RequestMapping("/findOne")
  public String findOne(Model model,int id){
    Items items = itemsService.findOne(id);
    model.addAttribute("items", items);
    //返给更新的方法
    return "upd";
  }
  //修改数据
  @RequestMapping("/upd")
  public String upd(Items items,MultipartFile items_pic1,HttpServletRequest request) throws IllegalStateException, IOException{
    //拿到单条数据
    items.setPic(itemsService.findOne(items.getId()).getPic());
    // 拿到该条数据的图片路径和名字
    String path = request.getServletContext().getRealPath("/upload");
    String pic_name = items_pic1.getOriginalFilename();
    //修改以后做新判断
    if (items_pic1 != null && pic_name != null && pic_name.length() > 0) {
      String newname = UUID.randomUUID().toString() + pic_name.substring(pic_name.lastIndexOf("."));
      File picFile = new File(path, newname);
      //文件夹不存在就创建 
      if (!picFile.exists()) {
        picFile.mkdirs();
      }
      items_pic1.transferTo(picFile);
      items.setPic(newname);
    }
    //修改完成以后调用更新方法
    itemsService.upd(items);
    return "redirect:queryItems.action";
  }
}


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
SQL 监控 安全
Java Web应用的安全防护与攻防策略
Java Web应用的安全防护与攻防策略
|
7天前
|
消息中间件 Java 微服务
构建可扩展的Java Web应用架构
构建可扩展的Java Web应用架构
|
22天前
|
自然语言处理 前端开发 Java
Servlet与JSP:Java Web开发的基石技术详解
【6月更文挑战第23天】Java Web的Servlet与JSP是动态网页的核心。Servlet是服务器端的Java应用,处理HTTP请求并响应;JSP则是结合HTML与Java代码的页面,用于动态内容生成。Servlet通过生命周期方法如`init()`、`service()`和`destroy()`工作,而JSP在执行时编译成Servlet。两者在MVC架构中分工,Servlet处理逻辑,JSP展示数据。尽管有Spring MVC等框架,Servlet和JSP仍是理解Web开发基础的关键。
|
13天前
|
监控 负载均衡 Java
如何设计高可用性的Java Web应用程序
如何设计高可用性的Java Web应用程序
|
14天前
|
存储 缓存 负载均衡
使用Java构建可扩展的Web应用
使用Java构建可扩展的Web应用
|
14天前
|
SQL 安全 Java
Java Web应用的安全防护与攻防深度剖析
Java Web应用的安全防护与攻防深度剖析
|
22天前
|
存储 Java 关系型数据库
基于Servlet和JSP的Java Web应用开发指南
【6月更文挑战第23天】构建Java Web应用,Servlet与JSP携手打造在线图书管理系统,涵盖需求分析、设计、编码到测试。通过实例展示了Servlet如何处理用户登录(如`LoginServlet`),JSP负责页面展示(如`login.jsp`和`bookList.jsp`)。应用基于MySQL数据库,包含用户和图书表。登录失败显示错误信息,成功后展示图书列表。部署到Tomcat服务器测试功能。此基础教程为深入Java Web开发奠定了基础。
|
22天前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
【6月更文挑战第23天】Java Web开发中,Servlet和JSP是构建动态Web应用的基础。Servlet处理逻辑,JSP专注展示。示例展示了Servlet如何通过`request.setAttribute`传递数据给JSP渲染。JSP自定义标签提升页面功能,如创建`WelcomeTag`显示欢迎消息。Servlet过滤器,如`CacheControlFilter`,用于预处理数据或调整响应头。这些集成和扩展技术增强了应用效率、安全性和可维护性,是Java服务器端开发的关键。
|
22天前
|
前端开发 安全 Java
Java服务器端开发实战:利用Servlet和JSP构建动态网站
【6月更文挑战第23天】**Servlet和JSP在Java Web开发中扮演关键角色。Servlet处理业务逻辑,管理会话,JSP则结合HTML生成动态页面。两者协同工作,形成动态网站的核心。通过Servlet的doGet()方法响应请求,JSP利用嵌入式Java代码创建动态内容。实战中,Servlet处理数据后转发给JSP展示,共同构建高效、稳定的网站。虽然新技术涌现,Servlet与JSP仍为Java Web开发的基石,提供灵活且成熟的解决方案。**
|
22天前
|
缓存 负载均衡 安全
Servlet与JSP在Java Web应用中的性能调优策略
【6月更文挑战第23天】在Java Web中,Servlet和JSP调优至关重要,以应对高并发和复杂业务带来的性能挑战。优化包括Servlet复用、线程安全、数据库连接池,以及JSP的编译优化、使用JSTL、页面缓存和静态内容分离。全局优化涉及负载均衡、异步处理和缓存策略。通过这些实践,开发者能提升应用响应速度和吞吐量,确保高负载下的稳定运行。