栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

基于SSM+MVC三层架构实现超市会员管理系统

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于SSM+MVC三层架构实现超市会员管理系统

基于SSM实现超市会员管理系统

大家好,本周为大家带来一个基于SSM的超市会员管理系统,干货满满,内容详细哦~

项目简介

超市会员管理系统

  1. 查询会员信息,能够根据多条件进行查询,并将查询的结果进行分页展示,展示效果按照前5后4的样式进行展示

    细节:

    (1) 点击多条件搜索后,在表单中回显搜索的内容

    (2) 点击分页码时,要把多条件搜索框中的条件传递到控制器

    (3) 点击分页码时,如果当前是第一页,上一页要禁用,如果当前是最后一页,下一页要禁用

    (4) 分页导航显示当前页的前5页和当前页的后4页

  2. 修改会员信息,点击修改按钮后先展示编辑表单,并在编辑表单中回显要修改的内容,点击提交后,进行更新操作

    细节

    (1) 在编辑表单中,如果该会员有头像要把头像回显

    (2) 如果上传了新的头像,则使用新的替换旧的头像,如果没有上传新的头像,则使用旧的头像

  3. 删除会员信息,点击删除按钮后删除对应的会员信息并将上传的会员头像删除

  4. 新增会员信息,点击新增按钮后,新增页需要有会员头像上传,上传完毕头像后将头像存储在硬盘,数据库存储对应的图片名称

效果图

项目结构

后端结构

前端结构

配置文件结构

整合SSM

mybatis-config.xml

MyBatis配置文件,配置数据库信息及实体类别名,绑定**Mapperxml文件,打印日志




	
	     
	     
	
	
	
		
	
	
	
		
	

applicationContext.xml

Spring配置文件,注册bean,整合mybatis,注册接口,配置事务,切面




	
	
	
	
	
		
	
	
	
	
	
		
		
		
		
	

	
	
		


		
        
	
	
	
		
		
		
	

	
		
	
	
		
	

	
	
		
		
	
	
	
		
		
			
						
			
			
		
	
	
	
	
		
		
		
		
		
		

spring-mvc.xml

SpringMVC配置文件,配置视图解析器,文件上传,开启注解开发




	
	
	
	
	
	
	
	
		
		
		
		
	
	
	
	
		
  		
		
		
	
	
	
	

配置web.xml

拦截用户的所有请求,初始化spring容器,过滤,编码



  SSM-SupermarketVIPManagerSystem
  
    	  
  
  	contextConfigLocation
  	classpath:applicationContext.xml
  
  
  	org.springframework.web.context.ContextLoaderListener
  
  
   	
  	
  		springmvc
  		org.springframework.web.servlet.DispatcherServlet
  		
  		
  		
  			contextConfigLocation
  			classpath:springmvc.xml
  		
  		
  		
  		1
  	
  	
  	
  	
  		springmvc
  		
  		/
  	

	
	
		default
		*.css
		*.js
		*.jpg
		*.png
		*.jpeg
		/fonts/**
	

  	
  	
  	
	
		CharacterEncodingFilter
		org.springframework.web.filter.CharacterEncodingFilter
		
			encoding
			utf-8
		
		
			forceRequestEncoding
			true
		
		
			forceResponseEncoding
			true
		
	
	
		CharacterEncodingFilter
		/*
	 

SSM整合完毕!

其他配置文件

db.properties

连接数据库

driverClass=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/ssmbuild?characterEncoding=utf-8
user=root
password=111111

log4j.properties

日志输出定义

log4j.rootLogger= DEBUG,Console  

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n  

log4j.logger.java.sql.ResultSet=INFO  
log4j.logger.org.apache=INFO  
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG
核心代码

RouteController

路由跳转,携带数据跳转到指定页面并加载

package com.wanshi.controller;

import com.wanshi.bean.VipInfo;
import com.wanshi.bean.VipLevel;
import com.wanshi.service.VipInfoService;
import com.wanshi.service.VipLevelService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;
import java.util.logging.Level;

@Controller
@RequestMapping("/route")
public class RouteController {

    @Autowired
    @Qualifier("VipLevelServiceImpl")
    private VipLevelService vipLevelService;
    @Autowired
    private VipInfoService vipInfoService;

    @RequestMapping("/add")
    public String add(Model model) {
        List list = vipLevelService.list();
        model.addAttribute("levelList", list);
        return "add";
    }

    @RequestMapping("/update/{id}")
    private String update(@PathVariable("id") Integer id, Model model) {
        VipInfo vipInfo = vipInfoService.getByVip(id);
        List list = vipLevelService.list();
        model.addAttribute("vip", vipInfo);
        model.addAttribute("levelList", list);
        return "edit";
    }
}

VipInfoController

package com.wanshi.controller;

import com.wanshi.bean.Page;
import com.wanshi.bean.VipInfo;
import com.wanshi.service.VipInfoService;
import com.wanshi.utils.FileUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.UUID;

@Controller
@RequestMapping("/vip")
public class VipInfoController {

    @Autowired
    @Qualifier("VipInfoServiceImpl")
    private VipInfoService vipInfoService;

    private static final Integer PAGE_SIZE = 2;

    @RequestMapping("/vip_list")
    public String list(String pageNumb, VipInfo vipInfo, Model model) {
        Integer currentNumb = 1;
        if (pageNumb != null && !pageNumb.equals("")) {
            currentNumb = Integer.valueOf(pageNumb);
        }
        Page pager = vipInfoService.list(currentNumb, PAGE_SIZE, vipInfo.getVip_name(), vipInfo.getVip_phone(), vipInfo.getVip_email());
        model.addAttribute("pager", pager);
        model.addAttribute("vipName", vipInfo.getVip_name());
        model.addAttribute("vipPhone", vipInfo.getVip_phone());
        model.addAttribute("vipEmail", vipInfo.getVip_email());
        return "list";
    }

    @RequestMapping("/addHandle")
    public String addHandle(MultipartFile head_pic, HttpServletRequest request) {
        try {
            String vipName = request.getParameter("vip_name");
            String vipLevel = request.getParameter("vip_level");
            String vipPhone = request.getParameter("vip_phone");
            String vipEmail = request.getParameter("vip_email");
            String finalFileName = FileUtil.upload(head_pic, "");
            //将数据装载为对象
            VipInfo vipInfo = new VipInfo();
            vipInfo.setVip_name(vipName);
            vipInfo.setVip_level(Integer.valueOf(vipLevel));
            vipInfo.setVip_phone(vipPhone);
            vipInfo.setVip_email(vipEmail);
            vipInfo.setHead_pic(finalFileName);
            vipInfoService.insert(vipInfo);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "redirect:/vip/vip_list";
    }


    @RequestMapping("/delete/{id}")
    public String delete(@PathVariable("id") Integer id) {
        vipInfoService.delete(id);
        return "redirect:/vip/vip_list";
    }

    @RequestMapping("/editHandle")
    public String editHandle(MultipartFile head_pic, HttpServletRequest request) {
        try {
            String vipId = request.getParameter("id");
            String vipName = request.getParameter("vip_name");
            String vipLevel = request.getParameter("vip_level");
            String vipPhone = request.getParameter("vip_phone");
            String vipEmail = request.getParameter("vip_email");
            String vipStatus = request.getParameter("status");
            String oldHeadPic = request.getParameter("old_head_pic");

            String finalFileName = FileUtil.upload(head_pic, oldHeadPic);
            //将数据装载为对象
            VipInfo vipInfo = new VipInfo();
            vipInfo.setId(Integer.valueOf(vipId));
            vipInfo.setVip_name(vipName);
            vipInfo.setVip_level(Integer.valueOf(vipLevel));
            vipInfo.setVip_phone(vipPhone);
            vipInfo.setVip_email(vipEmail);
            vipInfo.setHead_pic(finalFileName);
            vipInfo.setVip_status(Integer.valueOf(vipStatus));
            vipInfoService.update(vipInfo);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "redirect:/vip/vip_list";
    }
}

FileUtil

工具类,封装了文件上传

package com.wanshi.utils;

import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.UUID;

public class FileUtil {

    public static String upload(MultipartFile head_pic, String oldHeadPic) throws IOException {
        String finalFileName = "";
        if (head_pic.getSize() > 0) {
            InputStream inputStream = head_pic.getInputStream();
            String originalFilename = head_pic.getOriginalFilename();
            new File("C:/uploads/img/"+oldHeadPic).delete();
            //生成目标文件
            String destName = UUID.randomUUID().toString().replace("-", "");
            //获取源文件的后缀名
            String extName = originalFilename.substring(originalFilename.lastIndexOf("."));
            finalFileName = destName+extName;
            //目标文件
            File file = new File("C:/uploads/img/"+finalFileName);
            if (!file.exists()) {
                file.mkdirs();
            }
            //开始上传
            head_pic.transferTo(file);
        }
        return finalFileName;
    }

}

结语

项目到此就结束了,对本项目感兴趣的读者,可在下方下载源代码,不明白的可以多敲上几遍,若有问题,可在评论区留言,代码可能会有点多,但坚持敲下来,你会达到不一样的高度,加油吧,滴水穿石~

项目源代码 >>> 超市管理系统
提取码: axb7

如果您觉得博客的不错的话,那就(点赞,评论,收藏)吧~~ 哈哈

感谢支持~~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/305318.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号