基于 Spring SSM框架 开发的一套 进存销管理系统

**

基于 Spring SSM框架 开发的一套 进存销管理系统

**

1.编写工具:Eclipse;
2.开发环境 java jdk版本1.8,Tomact 版本9.0;
3.运用框架 SSM(Spring spring Mvc Mybatis)Bootstrap-table Maven;
4.前台脚本语言 js jq ;
5.相关技术 SSM框架的集成
文件的上传下载
jave Excel的部分相关操作
controller service 之间的合理运用

项目代码文件层次

在这里插入图片描述

主要功能模块

1:系统管理员登录模块(此处运用验证进行了用户的登录验证 可以防止机器人的识别进行操作 登录时会判断当前管理员是否已有登录账号)

2:用户注册模块 (当系统管理员没有登录账号时可以通过注册进行登录 注册时 输入的账号 以及邮箱都为唯一约束 不可重复 并且阻止用户注册)
在这里插入图片描述
3:系统首页(管理员登录成功后 进入的页面 在此 可以通过搜索框对系统的功能进行搜索 快速查找 如 输入物料查找功能 点击提示框 则可以进入到相应的功能页面)

在这里插入图片描述在这里插入图片描述4:管理员信息管理模块(管理员可在此页面对自己相应的头像 地址 邮箱 密码 出生年月 等 个人资料进行设置后修改)
在这里插入图片描述
5:系统物料管理页(管理可在此页面进行系统物料的录入 并且 录入的物料为唯一条件 当录入后 会做相应的判断)录入成功后会自动显示在本页面 页面中搜索框提供快速查找系统物料 为模糊查询 并带有物料的删除功能
在这里插入图片描述
6:物料供应商的相关信息设置
在这里插入图片描述
7:商品采购的申请 (从一录入的系统物料中进行选择采购)
在这里插入图片描述
8:已提交申请的批准驳回(批准时 需要批准人进行签名并保存 驳回时 可附上驳回原因)
在这里插入图片描述
在这里插入图片描述
9:审核通过的申请可在商品采购页 进行采购 (采购时 会提醒选择采购数量 已交存放仓库 并且会判断采购数量是否大于所选仓库的剩余容量 反之则需重新选择入库仓库 或采购数量)
在这里插入图片描述
在这里插入图片描述
10:系统仓库管理(管理员可在本页面对系统仓库进行管理 仓库的管理 以及商品的出库 销售 并且会对相应的数量进行自动更新 当 当前商品的系统库存不够销售以及出库数量时 会提示管理重新操作 )
在这里插入图片描述
11:仓库管理 (当系统或对应商有新加仓库 或废弃仓库 可地仓库进行仓库其添加仓库会判断当前系统是否已有改仓库 删除仓库则会判断所选仓库中是否还包含有存放物料 反之则无法进行操作)
在这里插入图片描述
在这里插入图片描述
12:退出系统(完成相对应的操作后 点击退出即可完成退出登录)
在这里插入图片描述

部分代码片段

1:Users_infoController (用户信息控制器)

package com.controller;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.ibatis.annotations.Param;
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 com.Ajax.AjaxRes;
import com.entitys.Users_infoEntity;
import com.service.Users_infoService;
import com.uuid.UuidUtil;

@Controller
public class Users_infoController {
	@Autowired
	private Users_infoService users_infoService;

	/**
	 * 用户注册 并且判断用户账号 以及用户邮箱是否被使用 如果是 则阻止用户注册 并提示跟换
	 * 
	 * @return
	 * @throws IOException 
	 */
	@RequestMapping("/addUsers")
	@ResponseBody
	public AjaxRes addUsers(Users_infoEntity users_info,
			@Param("users_zhanghao") String users_zhanghao,
			@Param("users_mail") String users_mail) throws IOException {
		AjaxRes res = new AjaxRes();
		// 账号判断
		users_info.setUsers_zhanghao(users_zhanghao);
		List<Users_infoEntity> users_infobyzh = users_infoService.findbyzh(users_info);
		// 邮箱判断
		users_info.setUsers_mail(users_mail);
		List<Users_infoEntity> users_infobyem = users_infoService.findbyem(users_info);
		if (users_infobyzh.size() > 0) {
			res.setResMsg("该账号已被使用!");
		} else if (users_infobyem.size() > 0) {
			res.setResMsg("该邮箱已被使用!");
		} else {
			// 用户注册
			// 用户赋值Uuid
			users_info.setUsers_id(UuidUtil.get32UUID());
			users_infoService.insert(users_info);
			res.setResMsg("注册成功!");
		}
		return res;
	}

	/**
	 * 用户登录 并且判断用户账号 以及用户密码的输入是否正确
	 * 
	 * @return
	 */
	@RequestMapping("/users_login")
	@ResponseBody
	public AjaxRes users_login(Users_infoEntity users_info,
			@Param("users_zhanghao") String users_zhanghao,
			@Param("users_pws") String users_pws,
			HttpServletRequest req,
			@Param("logoVerify_val") String logoVerify_val) {
		AjaxRes res = new AjaxRes();
		HttpSession session=req.getSession();
		String ip = req.getHeader("x-forwarded-for");
		// 账号判断
		users_info.setUsers_zhanghao(users_zhanghao);
		List<Users_infoEntity> users_infobyzh = users_infoService.findbyzh(users_info);
		// 密码判断
		users_info.setUsers_pws(users_pws);
		List<Users_infoEntity> users_infobypws = users_infoService.findbypws(users_info);
		if (users_infobyzh.isEmpty()) {
			res.setResMsg("该账号未注册!");
		} else if (users_infobypws.isEmpty()) {
			res.setResMsg("密码不正确!");
		}else if (!(logoVerify_val.equalsIgnoreCase(session.getAttribute("logoVerify_val").toString()))) {//验证码不区分大小写
			res.setResMsg("验证码不正确!");
		} else {
			//用户登录
			session.setAttribute("user",users_infobyzh.get(0));
			//更新用户登录ip地址 以及登录区域
			users_info.setUsers_zhanghao(users_zhanghao);
			users_info.setUsers_dl_ip(ip);
			System.out.println("---------------------------------------------"+ip);
			users_infoService.updatedlzc(users_info);
			res.setResMsg("登录成功!");
		}
		return res;
	}
	/**
	 * 用户退出登录(清空session)
	 * 
	 * @return
	 */
	@RequestMapping("/logout")
	public String Logout(HttpServletRequest req){
		HttpSession session=req.getSession();
		session.setAttribute("user", null);
		return "redirect:login";	
	}
	/**
	 * 用户资料设置
	 * @param users_info
	 * @param md
	 * @return
	 */
	@RequestMapping("/user_info")
	public String user_info(Users_infoEntity users_info,Model md){
		List<Users_infoEntity> user_infos=users_infoService.findbyId(users_info);
		//日期格式转换
		SimpleDateFormat slf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		for(int i=0;i<user_infos.size();i++){
			user_infos.get(i).setZh_users_zc_time(slf.format(user_infos.get(i).getUsers_zc_time()));
			user_infos.get(i).setZh_users_dl_time(slf.format(user_infos.get(i).getUsers_dl_time()));
		}
		md.addAttribute("user_infos", user_infos.get(0));	
	    return "page/userInfo";
	}
	/**
	 * 用户个人修改信息 因用户昵称 邮箱为唯一约束 故此需要进行判断系统是否存在新输入的值
	 * @param users_info
	 * @param users_niceng
	 * @param users_pws
	 * @param users_mail
	 * @return
	 */
	@RequestMapping("/update_user_info")
	@ResponseBody
	public AjaxRes update_user_info(Users_infoEntity users_info,
			@Param("users_niceng") String users_niceng,
			@Param("users_mail") String users_mail){
		AjaxRes res=new AjaxRes();
		//昵称判断
		users_info.setUsers_niceng(users_niceng);
		List<Users_infoEntity> users_infobyna = users_infoService.findbyna(users_info);
		// 邮箱判断
		users_info.setUsers_mail(users_mail);
		List<Users_infoEntity> users_infobyem = users_infoService.findbyem(users_info);
		if(users_infobyna.size()>0){
			res.setResMsg("该昵称已被使用!");
		} else if (users_infobyem.size() > 0) {
			res.setResMsg("该邮箱已被使用!");	
		}else{
			//用户修改个人数据
			users_infoService.update(users_info);
			res.setResMsg("修改成功!");	
		}
		return res;
	}
	/**
	 * 处于安全 用户在修改密码和邮箱时 必须经过原(旧密码的验证 )通过后才可修改 反之则阻止 修改成功时清空当前session 提示重新登录
	 * @param users_info
	 * @param resq
	 * @param old_users_pws
	 * @param users_mail
	 * @return
	 * @throws IOException
	 */
	@RequestMapping("/update_user_save")
	@ResponseBody
	public AjaxRes update_user_save(Users_infoEntity users_info,
			HttpServletRequest req,
			@Param("old_users_pws") String old_users_pws,
			@Param("users_pws") String users_pws,
			@Param("users_mail") String users_mail) {
		AjaxRes res=new AjaxRes();
		//旧密码验证判断
		users_info.setUsers_pws(old_users_pws);
		List<Users_infoEntity> users_infobypws = users_infoService.findbypws(users_info);
		// 邮箱判断
		users_info.setUsers_mail(users_mail);
		List<Users_infoEntity> users_infobyem = users_infoService.findbyem(users_info);
		if(users_infobypws.isEmpty()){
			res.setResMsg("原密码验证不通过 请核对后在修改!");
		} else if (users_infobyem.size() > 0) {
			res.setResMsg("该邮箱已被使用!");	
		}else{
			//用户修改个人数据
			users_info.setUsers_pws(users_pws);
			users_infoService.updatesave(users_info);
			res.setResMsg("修改成功当前登陆已过期请重新登陆!");
			//清空session
			HttpSession session=req.getSession();
			session.setAttribute("user", null);
		}
		return res;
	}
}

2:Shop_caigoushenheiController (采购审核控制器)

package com.controller;

import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

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 com.Ajax.AjaxRes;
import com.entitys.Shop_caigoushenheiEntity;
import com.entitys.Shop_wuliaoEntity;
import com.pageUtil.Page;
import com.service.Shop_caigoushenheiService;
import com.service.Shop_wuliaoService;
import com.uuid.UuidUtil;

import sun.misc.BASE64Decoder;

@Controller
public class Shop_caigoushenheiController {

	@Autowired
	private Shop_wuliaoService wuliaoService;
	@Autowired
	private Shop_caigoushenheiService caigoushenheiService;
	/**
	 * 查询物料信息(放入前面的页面select下拉选项选项)
	 * @param wuliao
	 * @param md
	 * @return
	 */
	@RequestMapping("/findwuliaoname")
	public String find(Shop_wuliaoEntity wuliao,Model md){
		List<Shop_wuliaoEntity> wuliaos=wuliaoService.find(wuliao);
		md.addAttribute("wuliaos", wuliaos);
		return "page/subchaigoushenhei";	
	}
	/**
	 * 条件查询物料信息(放入前面的页面物料选项卡中)
	 * @param wuliao
	 * @param md
	 * @return
	 */
	@RequestMapping("/findwuliaobyId")
	@ResponseBody
	public AjaxRes findwuliaoby(Shop_wuliaoEntity wuliao,Model md){
		AjaxRes res=new AjaxRes();
		List<Shop_wuliaoEntity> wuliaoby=wuliaoService.findbyId(wuliao);
		res.setSucceed(wuliaoby,"获取成功");
		md.addAttribute("wuliaoby",wuliaoby);
		return res;			
	}
	/**
	 * 申请采购的提交
	 * @param caigoushenhei
	 * @return
	 */
	@RequestMapping("/subcaigoushenhei")
	@ResponseBody
	public AjaxRes Subcaigoushenhei(Shop_caigoushenheiEntity caigoushenhei){
		//赋值uuid
		caigoushenhei.setShop_caigoushenhei_id(UuidUtil.get32UUID());
		AjaxRes res=new AjaxRes();
		caigoushenheiService.insert(caigoushenhei);
		res.setResMsg("申请提交成功!");
		return res;
	}
	/**
	 * 查询出全部的采购审核信息 并显示到页面
	 * @param caigoushenhei
	 * @return
	 */
	@RequestMapping("/showcaigoushenhei")
	@ResponseBody
	public Object Showcaigoushenhei(Shop_caigoushenheiEntity caigoushenhei){
		List<Shop_caigoushenheiEntity> caigoushenheis=caigoushenheiService.find(caigoushenhei);
		if(caigoushenhei.getLimit()>0){
			caigoushenhei.setLimits("1");
		}
		//实例化page对象
		Page page=new Page();
		page.setPageNumber(caigoushenhei.getOffset());
		page.setPageSize(caigoushenhei.getLimit());
		page.setTotal(caigoushenheiService.count(caigoushenhei));
		page.setObj(caigoushenheis);
		return page;
	}
	/**
	 * 此处查询审核通过的提交信息 必将审核日期格式进行转换
	 * @param caigoushenhei
	 * @return
	 */
	@RequestMapping("/showcaigoushenheizt")
	@ResponseBody
	public Object Showcaigoushenheizt(Shop_caigoushenheiEntity caigoushenhei){
		List<Shop_caigoushenheiEntity> caigoushenheis=caigoushenheiService.findzt(caigoushenhei);
		//获取到时间戳 并将其转换
		 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		 for(int i=0;i<caigoushenheis.size();i++){
			 caigoushenheis.get(i).setZhuanyishop_caigoushenhei_time(sdf.format(caigoushenheis.get(i).getShop_caigoushenhei_time()));
		 }
		if(caigoushenhei.getLimit()>0){
			caigoushenhei.setLimits("1");
		}
		//实例化page对象
		Page page=new Page();
		page.setPageNumber(caigoushenhei.getOffset());
		page.setPageSize(caigoushenhei.getLimit());
		page.setTotal(caigoushenheiService.count(caigoushenhei));
		page.setObj(caigoushenheis);
		return page;
	}
	//申请批准
	/**
	 * 当管理员同意申请过后 并置入管理员的签名 签名后将base64格式的签名图片转换为文件路径格式存放在数据库中
	 * @param caigoushenhei
	 * @param req
	 * @return
	 * @throws IOException
	 */
	@RequestMapping("/pizhuncaigou")
	@ResponseBody
	public AjaxRes pizhuncaigou(Shop_caigoushenheiEntity caigoushenhei,HttpServletRequest req) throws IOException{
		AjaxRes res=new AjaxRes();
		String qianming=caigoushenhei.getShop_caigoushenhei_qianming();
		//声明要截取的字段(前几位)
		int i=22;
		//将base64编码获取并截取
		byte[] buffer;
	    qianming=qianming.substring(i);
	    //转码
	    buffer = new BASE64Decoder().decodeBuffer(qianming);
	    //存入的文件路径
		String lujing="\\uploadFile\\qianming\\"+buffer+".png";
		String realPath=req.getServletContext().getRealPath(lujing);
		FileOutputStream out = new FileOutputStream(realPath);
		out.write(buffer);
		out.close();
		//把路径存到数据库	
		caigoushenhei.setShop_caigoushenhei_qianming_lujing(lujing);
		caigoushenheiService.update(caigoushenhei);
		res.setResMsg("申请批准成功!");
		return res;
	}
	/**
	 * 审核驳回 如果未通过审核 管理员可将本条审核信息进行驳回
	 * @param caigoushenhei
	 * @return
	 */
	@RequestMapping("/pizhunbohui")
	@ResponseBody
	public AjaxRes pizhunbohui(Shop_caigoushenheiEntity caigoushenhei){
		AjaxRes res=new AjaxRes();
		caigoushenheiService.updatebohui(caigoushenhei);
		res.setResMsg("执行成功!");
		return res;
		
	}
	/**
	 * 删除已处理的审核信息
	 * @param caigoushenhei
	 * @return
	 */
	@RequestMapping("/delshenhei")
	@ResponseBody
	public AjaxRes delshenhei(Shop_caigoushenheiEntity caigoushenhei){
		AjaxRes res=new AjaxRes();
		caigoushenheiService.delete(caigoushenhei);
		res.setResMsg("删除成功");
		return res;
		
	}

}

3:仓库管理控制器(Shop_cangkuController)

package com.controller;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.ibatis.annotations.Param;
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 org.springframework.web.multipart.MultipartFile;

import com.Ajax.AjaxRes;
import com.entitys.Shop_cangkuEntity;
import com.entitys.Shop_infoEntity;
import com.service.Shop_cangkuService;
import com.service.Shop_infoService;
import com.uuid.UuidUtil;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.UnderlineStyle;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

@Controller
public class Shop_cangkuController {
	@Autowired
	private Shop_cangkuService cangkuService;
	@Autowired
	private Shop_infoService shop_infoService;
	/**
	 *  新加仓库(先查询是否有输入的厂库 在让其添加   系统仓库唯一约束)
	 * @param cangku
	 * @param shop_cangku_name
	 * @return
	 */
	@RequestMapping("/addcangku")
	@ResponseBody
	public AjaxRes addcangku(Shop_cangkuEntity cangku, @Param("shop_cangku_name") String shop_cangku_name) {
		AjaxRes res = new AjaxRes();
		cangku.setShop_cangku_name(shop_cangku_name);
		List<Shop_cangkuEntity> cangkubyname = cangkuService.findbyname(cangku);
		// 判断是否已有厂库
		if (cangkubyname.isEmpty()) {
			// 赋值仓库id
			cangku.setShop_cangku_id(UuidUtil.get32UUID());
			cangkuService.insert(cangku);
			System.out.println("--------------------------------------------------------" + cangku);
			res.setResMsg("新加成功!");

		} else {
			res.setResMsg("系统已有此仓库 请勿重复添加!");
		}
		return res;
	}
	/**
	 * 根据仓库名查询(已采购的商品) 以及仓库 并显示在相关页面
	 * @param shop_info
	 * @param cangku
	 * @param md
	 * @return
	 */
	@RequestMapping("/findckname")
	public String findckname(Shop_infoEntity shop_info, Shop_cangkuEntity cangku, Model md) {
		List<Shop_cangkuEntity> cangkus = cangkuService.find(cangku);
		md.addAttribute("cangkus", cangkus);
		List<Shop_infoEntity> shop_infos = shop_infoService.findbyckname(shop_info);
		md.addAttribute("shop_infos", shop_infos);
		return "page/cangku";
	}
	/**
	 * 仓库管理 这里可以修改厂库的管理人员 运营状态 仓库地址 但不可修改仓库名 已交仓库容量
	 * @param cangku
	 * @param shop_cangku_name
	 * @return
	 */
	@RequestMapping("/upck")
	@ResponseBody
	public AjaxRes upck(Shop_cangkuEntity cangku, @Param("shop_cangku_name") String shop_cangku_name) {
		AjaxRes res = new AjaxRes();
		cangku.setShop_cangku_name(shop_cangku_name);
		List<Shop_cangkuEntity> cangkubyname = cangkuService.findbyname(cangku);
		// 判断是否已有厂库
		if (cangkubyname.isEmpty()) {
			cangkuService.update(cangku);
			res.setResMsg("修改成功!");

		} else {
			res.setResMsg("仓库名重复!");
		}
		return res;

	}
	/**
	 * 根据仓库名查询改仓库的容量 (因仓库名为唯一字段)
	 * @param cangku
	 * @param md
	 * @return
	 */
	@RequestMapping("/findsize")
	@ResponseBody
	public AjaxRes findsize(Shop_cangkuEntity cangku, Model md) {
		AjaxRes res = new AjaxRes();
		List<Shop_cangkuEntity> cangkusize = cangkuService.findbyname(cangku);
		res.setSucceed(cangkusize, "获取成功");
		md.addAttribute("cangkusize", cangkusize);
		return res;
	}	
	/**
	 * 在仓库管理中删除商品信息 当确认删除时 自动更新相关仓库的容量
	 * @param cangku
	 * @param shop_info
	 * @param shop_id
	 * @return
	 */
	@RequestMapping("/delete_shop_info")
	@ResponseBody
	public AjaxRes delete_shop_info(Shop_cangkuEntity cangku,Shop_infoEntity shop_info,
			@Param("shop_id") String shop_id) {
		AjaxRes res = new AjaxRes();
		cangkuService.update_rongliang(cangku);
		//得到需要删除的商品id
		shop_info.setShop_id(shop_id);
		shop_infoService.delete(shop_info);
		res.setResMsg("删除成功!");
		return res;
	}
	/**
	 * 系统仓库的删除 判断当前仓库中是否还存在商品信息 如果存在 则阻止删除(验证在前端验证)
	 * @param cangku
	 * @return
	 */
	@RequestMapping("/del_cangku")
	@ResponseBody
	public AjaxRes delcangku(Shop_cangkuEntity cangku){
		AjaxRes res=new AjaxRes();
		cangkuService.delete(cangku);
		res.setResMsg("改仓库已被成功删除!");
		return res;
	}

	
	/**
	 * 盘库管理(excel操作 导入以及导出)
	 * @param cangku
	 * @param shop_info
	 * @param req
	 * @param shop_cangku_name
	 * @return
	 */
	@RequestMapping("/panku")
	@ResponseBody
	public AjaxRes panku(Shop_cangkuEntity cangku,Shop_infoEntity shop_info, HttpServletRequest req,
			@Param("shop_int_cangku") String shop_cangku_name) {
		AjaxRes res = new AjaxRes();
		// excel存放路径
		String realPath = req.getSession().getServletContext().getRealPath("/");
		String exclePath = "static\\excel\\";
		String pathName = shop_cangku_name + "盘库表.xls";
		String fileName = realPath + exclePath + pathName;
		File xlsFile = new File(fileName);
		WritableWorkbook workbook = null;
		try {
			workbook = Workbook.createWorkbook(xlsFile);
			WritableSheet sheet = workbook.createSheet("sheet", 0);
			Date date = new Date();
			//日期格式装换
			SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			String zhDate=sdf.format(date);	
			try {
				WritableFont wf = new WritableFont(WritableFont.ARIAL, 15,WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK); // 定义格式 字体 下划线 斜体 粗体 颜色
				WritableCellFormat wcf = new WritableCellFormat(wf); // 单元格定义
				wcf.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式
				//标题样式
				WritableFont wftit = new WritableFont(WritableFont.ARIAL, 15,WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK); // 定义格式 字体 下划线 斜体 粗体 颜色
				WritableCellFormat wcftit = new WritableCellFormat(wftit); // 单元格定义
/*				wcftit.setBackground(jxl.format.Colour.WHITE); // 设置单元格的背景颜色*/
				wcftit.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式
				//内容样式
				WritableFont wfcont = new WritableFont(WritableFont.ARIAL, 14,WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK); // 定义格式 字体 下划线 斜体 粗体 颜色
				WritableCellFormat wccont = new WritableCellFormat(wfcont); // 单元格定义		
				wccont.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式
				// 因为仓库名为唯一约束(所以这里采用根据仓库名查询)
				List<Shop_cangkuEntity> cangkus = cangkuService.findbyname(cangku);
				if (cangkus != null && cangkus.size() > 0) {

					for (int i = 0; i < cangkus.size(); i++) {
						sheet.addCell(new Label(0, 0,zhDate+":"+cangkus.get(i).getShop_cangku_name() + ":盘库",wcf));
			            sheet.mergeCells(0, 0, 5, 0);//合并垮了5列。
						sheet.addCell(new Label(0, 1, "仓库类型"+":" + cangkus.get(i).getShop_cangku_leixing(),wcf));
						sheet.addCell(new Label(1, 1, "管理员"+":" + cangkus.get(i).getShop_cangku_user(),wcf));
						sheet.addCell(new Label(2, 1, "仓库容量"+":" + cangkus.get(i).getShop_cangku_rongliang().toString(),wcf));
						sheet.addCell(new Label(3, 1, "当前容量"+":" + cangkus.get(i).getShop_cangku_now_rongliang().toString(),wcf));
					}
				}
				// 设置盘库表头
				sheet.addCell(new Label(0, 2, "盘后商品总容量",wcftit));
				// 设置盘库表头
				sheet.addCell(new Label(2, 2, "现仓库剩余容量",wcftit));
				// 设置列表名
				sheet.addCell(new Label(0, 3, "商品名",wcftit));
				sheet.addCell(new Label(1, 3, "供应商",wcftit));
				sheet.addCell(new Label(2, 3, "入库仓库",wcftit));
				sheet.addCell(new Label(3, 3, "当前数量",wcftit));
				sheet.addCell(new Label(4, 3, "实际数量",wcftit));
				sheet.addCell(new Label(5, 3, "备注",wcftit));
				shop_info.setShop_int_cangku(shop_cangku_name);
				List<Shop_infoEntity> shop_infos = shop_infoService.findbyckname(shop_info);
				if (shop_infos != null && shop_infos.size() > 0) {
					for (int row = 0; row < shop_infos.size(); row++) {
						sheet.addCell(new Label(0, row + 4, shop_infos.get(row).getShop_name(),wccont));
						sheet.addCell(new Label(1, row + 4, shop_infos.get(row).getShop_gongyin_name(),wccont));
						sheet.addCell(new Label(2, row + 4, shop_infos.get(row).getShop_int_cangku(),wccont));
						sheet.addCell(new Label(3, row + 4, shop_infos.get(row).getShop_size().toString(),wccont));
						sheet.addCell(new Label(4, row + 4, null));
						sheet.addCell(new Label(5, row + 4, null));
					}
				}
				//设置行宽
				sheet.setColumnView(0,30); 
				sheet.setColumnView(1,30); 
				sheet.setColumnView(2,30); 
				sheet.setColumnView(3,30); 
				sheet.setColumnView(4,30); 
				sheet.setColumnView(5,30); 
				sheet.setColumnView(6,30); 
				//设置行高
				sheet.setRowView(0, 500);
				sheet.setRowView(2, 500);
				workbook.write();
				workbook.close();
			} catch (RowsExceededException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (WriteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return res;
	}
	
}

4:验证码

package com.logoverify;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class VerifyController {
	private int width = 150;// 定义图片的width
    private int height = 50;// 定义图片的height
    private int codeCount = 4;// 定义图片上显示验证码的个数
    private int xx = 30;
    private int fontHeight = 24;
    private int codeY = 30;
    char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
            'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
    /**
     * 定义并创建前端用户登录验证是的验证码
     * @param req
     * @param resp
     * @throws IOException
     */
    @RequestMapping("/logoVerify")
    public void getCode(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        // 定义图像buffer
        BufferedImage buffImg = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics gd = buffImg.getGraphics();
        // 创建一个随机数生成器类
        Random random = new Random();
        // 将图像填充为白色
        gd.setColor(Color.WHITE);
        gd.fillRect(0, 0, width, height);
        // 创建字体,字体的大小应该根据图片的高度来定。
        Font font = new Font("Fixedsys", Font.BOLD, fontHeight);
        // 设置字体。
        gd.setFont(font);
        // 画边框。
        gd.setColor(Color.BLACK);
        gd.drawRect(0, 0, width - 1, height - 1);
        // 随机产生40条干扰线,使图象中的认证码不易被其它程序探测到。
        gd.setColor(Color.BLACK);
        for (int i = 0; i < 40; i++) {
            int x = random.nextInt(width);
            int y = random.nextInt(height);
            int xl = random.nextInt(12);
            int yl = random.nextInt(12);
            gd.drawLine(x, y, x + xl, y + yl);
        }
        // randomCode用于保存随机产生的验证码,以便用户登录后进行验证。
        StringBuffer randomCode = new StringBuffer();
        int red = 0, green = 0, blue = 0;
        // 随机产生codeCount数字的验证码。
        for (int i = 0; i < codeCount; i++) {
            // 得到随机产生的验证码数字。
            String code = String.valueOf(codeSequence[random.nextInt(codeSequence.length-1)]);
            // 产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。
            red = random.nextInt(255);
            green = random.nextInt(255);
            blue = random.nextInt(255);
            // 用随机产生的颜色将验证码绘制到图像中。
            gd.setColor(new Color(red, green, blue));
            gd.drawString(code, (i + 1) * xx, codeY);
            // 将产生的四个随机数组合在一起。
            randomCode.append(code);
        }
        // 将四位数字的验证码保存到Session中。
        HttpSession session = req.getSession();
        //session传值
        session.setAttribute("logoVerify_val", randomCode.toString());
        // 禁止图像缓存。
        resp.setHeader("Pragma", "no-cache");
        resp.setHeader("Cache-Control", "no-cache");
        resp.setDateHeader("Expires", 0);
        resp.setContentType("image/jpeg");
        // 将图像输出到Servlet输出流中。
        ServletOutputStream sos = resp.getOutputStream();
        ImageIO.write(buffImg, "jpeg", sos);
        sos.close();
    }

}

5:spring-mvl.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">

  	<!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射-->   
    <!--  <mvc:annotation-driven/>	 -->
	<mvc:default-servlet-handler/>
	<!-- 启动对@AspectJ注解的支持 -->  
	<aop:aspectj-autoproxy/> 
	<!-- 通知spring使用cglib而不是jdk的来生成代理方法 AOP可以拦截到Controller -->  
	<aop:aspectj-autoproxy proxy-target-class="true"/>
  	<mvc:interceptors>  
	   <!--使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求  -->
	    <mvc:interceptor>  
	        <mvc:mapping path="/**"/>
	        <mvc:exclude-mapping path="/register"/> 
	        <mvc:exclude-mapping path="/addUsers"/> 
	        <mvc:exclude-mapping path="/login"/> 
	        <mvc:exclude-mapping path="/users_login"/> 
	      <!-- 放行验证码 -->
	        <mvc:exclude-mapping path="/logoVerify"/>
	        <mvc:exclude-mapping path="/.css"/>    
	        <mvc:exclude-mapping path="/.js"/>            
	        <bean class="com.interceptor.LoginInterceptor"/>  
	    </mvc:interceptor>  
	</mvc:interceptors>
  	<!-- 自动扫描且只扫描@Controller -->
    <context:component-scan base-package="com" use-default-filters="false">
        <!-- 平台功能模块controller-->
        <context:include-filter type="aspectj" expression="com.controller..*Controller"/>
        <!-- 登录验证controller -->
        <context:include-filter type="aspectj" expression="com.logoverify..*Controller"/>
    </context:component-scan>
    
    <!-- 对静态资源文件的访问  restful-->     
	<mvc:resources mapping="/static/**" location="/,/static/" /> 
	<mvc:resources mapping="/boostrap/**" location="/,/boostrap/" /> 
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
		<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
		<property name="prefix" value="/WEB-INF/views/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>

	<mvc:annotation-driven>
		<mvc:message-converters register-defaults="true">
			<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
			<bean
				class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
				<property name="supportedMediaTypes">
					<list>
						<value>text/html;charset=UTF-8</value>
						<value>text/json;charset=UTF-8</value>
						<value>application/json;charset=UTF-8</value>
					</list>
				</property>
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven>
	<!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 默认编码 -->
		<property name="defaultEncoding" value="utf-8" />
		<!-- 文件大小最大值 -->
		<property name="maxUploadSize" value="1048576000" />
		<!-- 内存中的最大值 -->
		<property name="maxInMemorySize" value="40960" />
	</bean>
</beans>

6:SSM Maven 相关pom.xml 配置文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com</groupId>
  <artifactId>InvoicingManagementSystem</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>InvoicingManagementSystem Maven Webapp</name>
  <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
    <dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-jdbc</artifactId>
	    <version>4.3.5.RELEASE</version>
  	</dependency>
  	 		<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-webmvc</artifactId>
	    <version>4.3.5.RELEASE</version>
	</dependency>
 	<!--上传文件相关的jar包  -->
 	<dependency>
	    <groupId>commons-io</groupId>
	    <artifactId>commons-io</artifactId>
	    <version>2.4</version>
  	</dependency>
  	
  	<dependency>
	    <groupId>commons-fileupload</groupId>
	    <artifactId>commons-fileupload</artifactId>
	    <version>1.3.1</version>
  	</dependency>
  	
  	<dependency>
	    <groupId>org.apache.commons</groupId>
	    <artifactId>commons-lang3</artifactId>
	    <version>3.3.2</version>
  	</dependency>		
	<!-- jstl -->
	<dependency>
	    <groupId>jstl</groupId>
	    <artifactId>jstl</artifactId>
	    <version>1.2</version>
	</dependency>
  	<!--跟加密算法相关的codeC  -->
	<dependency>
	    <groupId>commons-codec</groupId>
	    <artifactId>commons-codec</artifactId>
	    <version>1.9</version>
	</dependency>
 	
 	<!--orm或者jdbc组件需要用到的jar包 mybatis  -->
	<!--mysql数据库驱动  -->
	<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
	<dependency>
	    <groupId>org.apache.commons</groupId>
	    <artifactId>commons-dbcp2</artifactId>
	    <version>2.1.1</version>
	</dependency>
	
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>5.0.8</version>
	    <scope>runtime</scope>
	</dependency>	
	<!--阿里的连接  druid连接池 类似于c3p0  -->
 	<dependency>
	    <groupId>com.alibaba</groupId>
	    <artifactId>druid</artifactId>
	    <version>1.0.15</version>
	</dependency>
 	
 	 <dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	    <version>3.3.1</version>
	</dependency> 
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis-spring</artifactId>
	    <version>1.2.4</version>
	</dependency>
	
	<dependency>
	    <groupId>com.github.pagehelper</groupId>
	    <artifactId>pagehelper</artifactId>
	    <version>4.2.1</version>
	</dependency>
	<!-- lg4j -->
	<!-- https://mvnrepository.com/artifact/log4j/log4j -->
	<dependency>
	    <groupId>log4j</groupId>
	    <artifactId>log4j</artifactId>
	    <version>1.2.17</version>
	</dependency>
	<!-- org.apache.commons -->
	<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
	<dependency>
	    <groupId>org.apache.commons</groupId>
	    <artifactId>commons-lang3</artifactId>
	    <version>3.4</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
	<dependency>
	    <groupId>commons-beanutils</groupId>
	    <artifactId>commons-beanutils</artifactId>
	    <version>1.9.1</version>
	</dependency>
		<!-- org.slf4j -->
	<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
	<dependency>
	    <groupId>org.slf4j</groupId>
	    <artifactId>slf4j-api</artifactId>
	    <version>1.7.25</version>
	</dependency>
	<!-- aspectjweaver -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.8.11</version>
		</dependency>
		<!-- aspectjrt -->
		<dependency>
			<groupId>aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>1.5.3</version>
		</dependency>
	   <!-- jackson依赖包 -->
	    <dependency>
	        <groupId>com.fasterxml.jackson.core</groupId>
	        <artifactId>jackson-core</artifactId>
	        <version>2.9.5</version>
	    </dependency>
	    <dependency>
	        <groupId>com.fasterxml.jackson.core</groupId>
	        <artifactId>jackson-databind</artifactId>
	        <version>2.9.5</version>
	    </dependency>
	  	<dependency>
		    <groupId>com.fasterxml.jackson.core</groupId>
		    <artifactId>jackson-annotations</artifactId>
		    <version>2.9.5</version>
	  	</dependency>
	  	<!-- https://mvnrepository.com/artifact/jexcelapi/jxl  操作excel-->
		<dependency>
		    <groupId>jexcelapi</groupId>
		    <artifactId>jxl</artifactId>
		    <version>2.6</version>
		</dependency>
	  	
    </dependencies>
  <build>
    <finalName>InvoicingManagementSystem</finalName>
  </build>
</project>

7:前台用户管理页面

<%@ page language="java" contentType="text/html; charset=utf-8"
	pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set var="jpath" value="${pageContext.request.contextPath}" />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
	content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
	<style type="text/css">
	 *{ margin:0; padding:0;}
	</style>
<title>个人信息界面</title>
<link rel="stylesheet" type="text/css" href="static/css/userinfo.css" />
<link rel="stylesheet" type="text/css" href="static/date/css/date.css" />
</head>

<body>
	<div class="main">
		<!--主框架-->
		<div>
			<!--头部-->
			<div class="pan_logo">
				<div class="pan_logo_left">
					<img src="static/imgs/logo.png" style="margin-top: 10px;" />&nbsp;
					<label>进存销管理系统&nbsp;|&nbsp;账号设置 </label>
				</div>
				<div class="pan_logo_right">
					<label>账号:${user_infos.users_zhanghao }</label> &nbsp;|&nbsp; <label class="back">返回首页</label>
				</div>
			</div>
		</div>
		<!--头部-->
		<div class="count_left" style="margin-top:10px;">
			<!--内容左边-->
			<c:if test="${user_infos.users_touxiang==null || user_infos.users_touxiang=='' }">
			 <img src="static/imgs/nologo.png" style="width: 300px;height: 300px; border-radius: 50px; margin-left:60px;"/><br />
			</c:if>
			<c:if test="${user_infos.users_touxiang!=null }">
			 <img src="${user_infos.users_touxiang }" style="width: 300px;height: 300px; border-radius: 150px; margin-left:60px;" /><br />
			</c:if>
			<div class="ul" style="margin-top: 20px;">
				<span>昵&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 称:</span><label>${user_infos.users_niceng }</label>
			</div>
			<br />
			<div class="ul">
				<span>登录账号 :</span><label>${user_infos.users_zhanghao }</label>
			</div>
			<br />
			<div class="ul">
				<span>性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 别:</span><label>${user_infos.users_sex }</label>
			</div>
			<br />
			<div class="ul">
				<span>生&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 日:</span><label>${user_infos.users_birth }</label>
			</div>
			<br />
			<div class="ul">
				<span>邮&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 箱:</span><label>${user_infos.users_mail }</label>
			</div>
			<br />
			<div class="ul">
				<span>电&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 话:</span><label>${user_infos.users_phone }</label>
			</div>
			<br />
			<div class="ul">
				<span>地&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 址:</span><label>${user_infos.users_address }</label>
			</div>
			<br />
			<div class="ul">
				<span>注册时间 :</span><label>${user_infos.zh_users_zc_time }</label>
			</div>
			<br />
			<div class="ul">
				<span>上次登录 :</span><label>${user_infos.zh_users_dl_time }</label>
			</div>
			<br />
		</div>
		<!--内容左边-->
		<div class="count_right">
			<!--内容右边-->
			<div class="biaoti">信息修改:</div>
			<form class="up_info">
			    <input class="from_input" name="users_id" value="${user_infos.users_id }" type="hidden"/><br />
				<label>昵称:</label><input placeholder="请输入新的昵称" class="from_input" name="users_niceng" /><br />
				<label>生日:</label><input placeholder="出生日期" class="from_input date_picker" name="users_birth" value="${user_infos.users_birth }"/><br />
				<label>性别:</label><input placeholder="性别" class="from_input" name="users_sex" value="${user_infos.users_sex }"/><br />
				<label>电话:</label><input placeholder="联系方式" class="from_input"name="users_phone" value="${user_infos.users_phone }"/><br />
				<label>邮箱:</label><input placeholder="邮箱e-mail" class="from_input" name="users_mail"/><br />
				<div style="margin-top: 40px;">
				<label>地址:</label><input placeholder="地址" class="from_input" name="users_address" type="hidden" value="${user_infos.users_address }"/><br />
				  <iframe style="margin-left: 50px; margin-top: -40px;" src="${jpath }/address" width="100%" frameborder="0" scrolling="no"></iframe>
				</div>
                <br/>
				<input placeholder="请选择上传头像" class="from_input" name="users_touxiang" type="hidden" value="${user_infos.users_touxiang }"/>
				<label>头像:</label><input placeholder="请选择上传头像" class="from_input" name="touxiangname" style="margin-top: -50px;"/><br />
				<!--头像选择及上传  -->
				<input placeholder="选择头像" class="from_input" name="users_touxiang" style="display: none;"/><br /> 
			    <input class="from_input uptouxiang" type="file" id="f" style="display: none"/><br />
				<div class="up_show_div">  
				 <img class="up_show_img" src=""> 
				</div>
				<div class="up_change_img">
				 <img src="static/imgs/add.png" style="width: 30px; height: 30px; margin-top: 10px; margin-left: 10px;"> 
			    </div>
				<!--头像选择及上传   -->
				<br /> 
				
				<input type="button" value="重新填写" class="reset" /> <input
					type="button" value="确认修改" class="ok yes_up" />
			</form>
			<div class="biaoti">账户安全:</div>

			<form class="up_save">
			     <input class="from_input" name="users_id" value="${user_infos.users_id }" type="hidden"/><br />
				 <label>验证旧的密码:</label><input placeholder="请输入旧的密码" class="save_input" name="old_users_pws" type="password"/><br /> 
				 <label>输入新的密码:</label><input placeholder="新的密码" class="save_input" name="users_pws" type="password"/><br />
				 <label>确&nbsp;认&nbsp;&nbsp; &nbsp; &nbsp;密&nbsp;码:</label><input placeholder="确认密码" class="save_input"  name="re_users_pws" type="password"/><br />
				 <label>邮&nbsp;箱&nbsp;&nbsp; &nbsp; &nbsp;更&nbsp;换:</label><input placeholder="新的邮箱" class="save_input" name="users_mail"/><br />
				  <input type="button" value="重新填写" class="reset" /> <input type="button"
					value="确认修改" class="ok yes_save" />
			</form>
		</div>
		<!--内容右边-->
	</div>
	<!--主框架-->
	<div class="hengtiao"></div>
	<!--底部-->
	<div style="width:100%;height:200px; background-color: #eee;margin-top:400px;"></div>
	<script src="static/vendor/jquery/jquery.min.js"></script>
	<!-- 日期插件 -->
	<script src="http://www.jq22.com/jquery/1.8.3/jquery.min.js"></script>
	<script src="static/date/js/jquery.date_input.pack.js"></script>
	<script>
		//图片转换为base64格式
		$(".up_change_img").click(function () {  
		    $(".uptouxiang").click();
		});  
		$(".uptouxiang").change(function () {  
		    run(this, function (data) {  
		    	$(".up_show_div").show();
		        $('.up_show_img').attr('src', data); 
		        $(".up_change_img").css({"margin-left":"260px","margin-top":"-52px"}); 
		        var touxiangname=$('.uptouxiang').val();
		        //截取data:image/png;base64,便于存入数据库后 页面能够显示
		        //var users_touxiang=data.substring(data.indexOf(",") + 1);
		        $('[name=users_touxiang]').val(data); 
		        $('[name=touxiangname]').val(touxiangname);  
		    });  
		});  
	function run(input_file, get_data) {  
	    /*input_file:文件按钮对象*/  
	    /*get_data: 转换成功后执行的方法*/  
	    if (typeof (FileReader) === 'undefined') {  
	        alert("抱歉,你的浏览器不支持 FileReader,不能将图片转换为Base64,请使用现代浏览器操作!");  
	    } else {  
	        try {  
	            /*图片转Base64 核心代码*/  
	            var file = input_file.files[0];        
	            //得到上传文件的大小
	            var f= document.getElementById("f").files; 
	            var filemaxsize = 1024*1024;//最大限制1M 
	            var fileSize =f[0].size;
	            //这里我们判断下类型如果不是图片就返回 去掉就可以上传任意文件  
	            if (!/image\/\w+/.test(file.type)) {  
	                alert("请确保文件为图像类型");  
	                return false;  
	            }else if(fileSize>filemaxsize){ //这里判断选择图片的大小
	            alert("头像图片不能大于"+filemaxsize/(1024*1024)+"M!请重新选择"); 
 	            target.value =""; 
	            return false; 
	            } 
	            var reader = new FileReader();  
	            reader.onload = function () {  
	                get_data(this.result);  
	            }  
	            reader.readAsDataURL(file);  
	        } catch (e) {  
	            alert(“图片转换出错”) 
	        }  
	    }  
	};
</script>

<script >
$(function(){
	$('.date_picker').date_input();
	});
$(".back").click(function(){
	 window.history.back(-1); 
})
//清空表单值
$(".reset").click(function(){
	$(".up_info")[0].reset();
    $(".up_save")[0].reset();
});
//邮箱格式判断
$("[name=users_mail]").change(function(){
	var email=$("[name=users_mail]").val()
	if (email != "") {
        var reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
        isok= reg.test(email );
        if (!isok) {
                   alert("邮箱格式不正确,请重新输入!");
                   return false;
        }
 };
})
//用户信息修改
$(".yes_up").click(function(){
	//获取三级联动页面中的地址(值)
	var dizhi = localStorage.getItem("dizhi");
	$("[name=users_address]").val(dizhi);
	//表单空值判断
	var users_niceng=$(this).parent().find("[name=users_niceng]").val();
	var users_birth=$(this).parent().find("[name=users_birth]").val();
	var users_sex=$(this).parent().find("[name=users_sex]").val();
	var users_phone=$(this).parent().find("[name=users_phone]").val();
	var users_mail=$(this).parent().find("[name=users_mail]").val();
	var users_address=$(this).parent().find("[name=users_address]").val();
	if(users_niceng=='' || users_birth=='' || users_sex=='' || users_phone=='' || users_mail=='' || users_birth=='' || users_address==''){
		alert("请将数据填写完整!")
	}else{
		var dataJson = "{";
		var dataArr = [];
		$(".up_info").find("input").each(function(index, _this) {
			var inputN = $(_this).attr("name");
			if (inputN != "" && inputN != null) {
				dataArr.push(inputN + ":'" + $(_this).val() + "'");
				dataJson += ",";
			}
		});
		dataJson = "{" + dataArr.join(",") + "}";
		var jsonForms = eval('(' + dataJson + ')');
		$.post("${jpath}/update_user_info", jsonForms, function(data) {
			console.log(data);
			var json = $.parseJSON(data);
			alert(json.resMsg);
			//清空表单
			$(".up_info")[0].reset();
			//刷新用户信息页面
			window.location.reload();
		});
	}
		
});
//两次输入密码验证相等否
$("[name=re_users_pws]").change(function(){
	var users_pws=$("[name=users_pws]").val();
	var re_users_pws=$("[name=re_users_pws]").val();
	if(users_pws!=re_users_pws){
	  alert("确认密码不相等!")
	}
	})
//用户密码邮箱修改
$(".yes_save").click(function(){
		var dataJson = "{";
		var dataArr = [];
		$(".up_save").find("input").each(function(index, _this) {
			var inputN = $(_this).attr("name");
			if (inputN != "" && inputN != null) {
				dataArr.push(inputN + ":'" + $(_this).val() + "'");
				dataJson += ",";
			}
		});
		dataJson = "{" + dataArr.join(",") + "}";
		var jsonForms = eval('(' + dataJson + ')');
		$.post("${jpath}/update_user_save", jsonForms, function(data) {
			console.log(data);
			var json = $.parseJSON(data);
			alert(json.resMsg);
			//清空表单
			$(".up_save")[0].reset();
			//刷新用户信息页面
			window.location.reload();
		});
});
</script>
</body>
</html>

以上便是小生通过 java SSM框架 制作的一套进存销管理系统 学习永无止境 欢迎大家进行参观与指导
项目下载
https://download.csdn.net/download/qq_41193701/11176065

猜你喜欢

转载自blog.csdn.net/qq_41193701/article/details/90176457