基于Spring+SpringMvc+Hibernate的社区管理系统

.2.1  浏览者子系统功能划分
前台系统主要包括网站公告,文档信息浏览下载,视频信息浏览下载,音频信息浏览下载,图片信息浏览下载,前台系统模块如图4-1。
 基于Spring+SpringMvc+Hibernate的社区管理系统
图4-1  客户子系统模块图
4.2.2  管理员子系统功能划分
管理员子系统可分为网站公告管理模块,用户管理模块,文档管理模块,视频管理模块,音频管理模块,图片管理模块,等。管理员子系统如图4-2。
基于Spring+SpringMvc+Hibernate的社区管理系统 
图 4-2 管理员子系统模块
4.2.3  普通用户子系统功能划分
普通用户子系统可分为文档管理模块,视频管理模块,音频管理模块,图片管理模块,修改密码模块,普通用户子系统如图4-3。

基于Spring+SpringMvc+Hibernate的社区管理系统图 4-3 普通用户子系统模块
 
图5-11 网站前台设计

 基于Spring+SpringMvc+Hibernate的社区管理系统

基于Spring+SpringMvc+Hibernate的社区管理系统

5.3.2  管理员登录页面

基于Spring+SpringMvc+Hibernate的社区管理系统
    管理员登录界面adminlogin.JSP,本页是社区管理系统后台管理的入口,为了确保网站与数据库的安全,对进入的人进行身份验证是十分必要的,尤其是网站的后台管理系统。本页的主要功能就是对社区用户进行身份验证。进入后台系统控制台页面如图5-3所示。
 
图5-3 登录页面
 基于Spring+SpringMvc+Hibernate的社区管理系统
图5-4 网站公后管理模块
5.3.4 普通用户管理模块
1.本系统的后台用户分为两类:管理员和普通用户,管理员可以进行整个系统的管理与维护操作,普通用户可以上传电子信息。普通用户管理模块可以完成普通用户的添加及删除的功能,普通用户管理模块对应的磁盘文件为pxxmanager.jsp,普通用户管理模块的页面设计如图5-5所示:
基于Spring+SpringMvc+Hibernate的社区管理系统 
图5-5 普通用户管理模块
 基于Spring+SpringMvc+Hibernate的社区管理系统
图5-6 新增用户页面设计
1.文档信息管理模块,完成文档信息的上传及管理的功能,管理员可以上传相应的文档信息,可以对文档信息进行删除,文档信息管理模块对应的磁盘文件为wdmanager.jsp,文档信息管理页面的设计如图5-7所示:
基于Spring+SpringMvc+Hibernate的社区管理系统 
图5-7 文档管理模块
 基于Spring+SpringMvc+Hibernate的社区管理系统
图5-8 文档上传界面
 基于Spring+SpringMvc+Hibernate的社区管理系统
图5-9 视频文件管理模块
 基于Spring+SpringMvc+Hibernate的社区管理系统
图5-10 普通用户管理模块

package com.lyh.flowers.controller;


import java.awt.Image;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;

import javax.annotation.Resource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.swing.ImageIcon;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
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.multipart.MultipartFile;

import com.lyh.flowers.pojo.Category;
import com.lyh.flowers.pojo.Flower;
import com.lyh.flowers.pojo.PageBean;
import com.lyh.flowers.service.impl.CategoryServiceImpl;
import com.lyh.flowers.service.impl.FlowerServiceImpl;

 
@Controller
@RequestMapping("/flowerM")
public class AdminFlowerController {
    @Resource
    private CategoryServiceImpl categoryService;
    @Resource
    private FlowerServiceImpl flowerService;
    /**
     * 获取当前页码
     */
    private int getPc(HttpServletRequest req) {
        int pc = 1;
        String param = req.getParameter("pc");
        if(param != null && !param.trim().isEmpty()) {
            try {
                pc = Integer.parseInt(param);
            } catch(RuntimeException e) {}
        }
        return pc;
    }
    
    /**
     * 截取url,页面中的分页导航中需要使用它做为超链接的目标!
     */
    private String getUrl(HttpServletRequest req) {
        String url = req.getRequestURI() + "?" + req.getQueryString();
        int index = url.lastIndexOf("&pc=");
        if(index != -1) {
            url = url.substring(0, index);
        }
        return url;
    }
    
    public static String uuid() {
        return UUID.randomUUID().toString().replace("-", "").toUpperCase();
    }
    
    @RequestMapping(value="/main")
    public String main(HttpServletRequest request,Model model){
        return "adminflower/main";
    }
    
    @RequestMapping(value="/edit",method={RequestMethod.POST})
    public String edit(HttpServletRequest request,Model model){
        Flower flower=new Flower();
        flower=flowerService.findByFid(request.getParameter("fid"));
//        System.out.println("fid="+request.getParameter("fid"));
        flower.setCurrPrice(Double.valueOf(request.getParameter("currPrice")));
        flower.setPrice(Double.valueOf(request.getParameter("price")));
        flower.setDiscount(Double.valueOf(request.getParameter("discount")));
        flower.setBranchnumber(Integer.valueOf(request.getParameter("branchnumber")));
        flower.setFlowercolor(request.getParameter("flowercolor"));
        flower.setFname(request.getParameter("fname"));
        flower.setFlowersaying(request.getParameter("flowersaying"));
        flower.setTarget(request.getParameter("target"));
        flower.setType(request.getParameter("type"));
        flower.setMakeuse(request.getParameter("makeuse"));
        flower.setMaterial(request.getParameter("material"));
        flower.setPacking(request.getParameter("packing"));
        
        
        flowerService.edit(flower);
        model.addAttribute("msg", "修改成功!");
        return "admin/msg";
    }
    
    @RequestMapping(value="/delete/{fid}")
    public String delete(@PathVariable String fid,HttpServletRequest request,Model model){
        Flower flower=new Flower();
        flower=flowerService.findByFid(fid);
        /*
         * 删除图片
         */
        flower = flowerService.findByFid(flower.getFid());
        
        String savepath = request.getSession().getServletContext().getRealPath("/");//获取真实的路径
        new File(savepath, flower.getImage_w()).delete();//删除文件
        new File(savepath, flower.getImage_b()).delete();//删除文件
        
        flowerService.delete(flower.getFid());//删除数据库的记录
        
        model.addAttribute("msg", "删除成功!");
        return "admin/msg";
    }
    
    @RequestMapping(value="/findCategoryAll")
    public String findCategoryAll(HttpServletRequest request,Model model){
        List<Category> parents = categoryService.findAll();
        model.addAttribute("parents", parents);
        
        return "adminflower/left";
    }
    
    @RequestMapping(value="/load/{fid}",method={RequestMethod.GET})
    public String load(@PathVariable String fid,HttpServletRequest request,Model model){
        Flower flower = flowerService.findByFid(fid);
        model.addAttribute("flower", flower);
        
        List<Category> materials=categoryService.findChildren("2");
        List<Category> colors=categoryService.findChildren("6");
        List<Category> targets=categoryService.findChildren("4");
        List<Category> makeuses=categoryService.findChildren("1");
        List<Category> types=categoryService.findChildren("7");
        List<Category> branchnumbers=categoryService.findChildren("5");
        
        model.addAttribute("materials", materials);
        model.addAttribute("colors", colors);
        model.addAttribute("targets", targets);
        model.addAttribute("makeuses", makeuses);
        model.addAttribute("types", types);
        model.addAttribute("branchnumbers", branchnumbers);
        
        
        return "adminflower/desc";
    }
    
    
    @RequestMapping(value="/body",method={RequestMethod.GET})
    public String body(HttpServletRequest request,Model model){
        
        return "adminflower/body";
    }
    @RequestMapping(value="/addflower",method={RequestMethod.GET})
    public String addPre(HttpServletRequest request,Model model){
        List<Category> materials=categoryService.findChildren("2");
        List<Category> colors=categoryService.findChildren("6");
        List<Category> targets=categoryService.findChildren("4");
        List<Category> makeuses=categoryService.findChildren("1");
        List<Category> types=categoryService.findChildren("7");
        List<Category> branchnumbers=categoryService.findChildren("5");
        
        model.addAttribute("materials", materials);
        model.addAttribute("colors", colors);
        model.addAttribute("targets", targets);
        model.addAttribute("makeuses", makeuses);
        model.addAttribute("types", types);
        model.addAttribute("branchnumbers", branchnumbers);
        Flower flower=new Flower();
        model.addAttribute("flower", flower);
        return "adminflower/add";
    }    
    
    @RequestMapping(value="/addflower",method={RequestMethod.POST})
    public String doadd(@RequestParam("image_w") MultipartFile image_w,
            @RequestParam("image_b") MultipartFile image_b, HttpServletRequest request,ModelMap model) throws ServletException, IOException{
        Flower flower=new Flower();
        flower.setBranchnumber(Integer.parseInt(request.getParameter("branchnumber")));
        flower.setFname(request.getParameter("fname"));
        flower.setFlowersaying(request.getParameter("flowersaying"));
        flower.setFlowercolor(request.getParameter("flowercolor"));
        flower.setCurrPrice(Double.parseDouble(request.getParameter("currPrice")));
        flower.setPrice(Double.parseDouble(request.getParameter("price")));
        flower.setPacking(request.getParameter("packing"));
        flower.setMakeuse(request.getParameter("makeuse"));
        flower.setMaterial(request.getParameter("material"));
        flower.setTarget(request.getParameter("target"));
        flower.setType(request.getParameter("type"));
        flower.setDiscount(Double.parseDouble(request.getParameter("discount")));
        /*
         * 把上传的图片保存起来
         *   > 获取文件名:截取之
         *   > 给文件添加前缀:使用uuid前缀,为也避免文件同名现象
         *   > 校验文件的扩展名:只能是jpg
         *   > 校验图片的尺寸
         *   > 保存之
         */
        // 获取文件名
        String filename = image_w.getOriginalFilename();
        // 截取文件名,因为部分浏览器上传的绝对路径
        int index = filename.lastIndexOf("\\");
        if(index != -1) {
            filename = filename.substring(index + 1);
        }
        // 给文件名添加uuid前缀,避免文件同名现象
        filename = uuid() + "_" + filename;
        // 校验文件名称的扩展名
        if(!filename.toLowerCase().endsWith(".jpg")) {
            model.addAttribute("msg", "上传的图片扩展名必须是JPG");
            model.addAttribute("flower", flower);
            return "adminflower/add";
        }
        /*
         * 保存图片:
        */
        String savepath = request.getSession().getServletContext().getRealPath("/static/flower_images");
        File destFile=new File(savepath, filename);
        image_w.transferTo(destFile);
        
        // 校验尺寸,把图片new成图片对象:Image、Icon、ImageIcon、BufferedImage、ImageIO
        // 1. 使用文件路径创建ImageIcon
        ImageIcon icon = new ImageIcon(destFile.getAbsolutePath());
        // 2. 通过ImageIcon得到Image对象
        Image image = icon.getImage();
        // 3. 获取宽高来进行校验
        if(image.getWidth(null) > 350 || image.getHeight(null) > 350) {
            destFile.delete();//删除图片
            model.addAttribute("msg", "您上传的图片尺寸超出了350*350!");
            model.addAttribute("flower", flower);
            return "adminflower/add";
        }
        
        // 把图片的路径设置给flower对象
        flower.setImage_w("/static/flower_images/" + filename);
        
        // 获取文件名
        filename = image_b.getOriginalFilename();
        // 截取文件名,因为部分浏览器上传的绝对路径
        index = filename.lastIndexOf("\\");
        if(index != -1) {
            filename = filename.substring(index + 1);
        }
        filename = uuid() + "_" + filename;
        if(!filename.toLowerCase().endsWith(".jpg")) {
            model.addAttribute("msg", "上传的图片扩展名必须是JPG");
            model.addAttribute("flower", flower);
            return "adminflower/add";
        }
        
        savepath = request.getSession().getServletContext().getRealPath("/static/flower_images");
        destFile = new File(savepath, filename);
        image_b.transferTo(destFile);
        // 校验尺寸
        icon = new ImageIcon(destFile.getAbsolutePath());
        image = icon.getImage();
        if(image.getWidth(null) > 350 || image.getHeight(null) > 350) {
            destFile.delete();//删除图片
            model.addAttribute("msg", "您上传的图片尺寸超出了350*350!");
            model.addAttribute("flower", flower);
            return "adminflower/add";
        }
        
        flower.setImage_b("/static/flower_images/" + filename);
    
        // 调用flowerService完成保存
        flower.setFid(uuid());
        flowerService.add(flower);
        
        // 保存成功信息转发到msg.jsp
        model.addAttribute("msg", "添加成功");
        return "admin/msg";
    }

    @RequestMapping(value="/flowerlist/{cid}")
    public String findByCategory(@PathVariable String cid,HttpServletRequest request,Model model){
        
        Category category=categoryService.load(cid);
        String pid=category.getPid();
        String cname=category.getCname();
        int pc = getPc(request);
        String url = getUrl(request);
        
//        System.out.println("pid:"+pid+"cname:"+cname+"cid+"+cid+"pc:"+pc);
        PageBean<Flower> pb = flowerService.findByType(pid, cname, cid, pc);
        
        pb.setUrl(url);
        request.setAttribute("pb", pb);
        
        return "adminflower/list";
    }
    

}