基于 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;" />
<label>进存销管理系统 | 账号设置 </label>
</div>
<div class="pan_logo_right">
<label>账号:${user_infos.users_zhanghao }</label> | <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>昵 称:</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>性 别:</span><label>${user_infos.users_sex }</label>
</div>
<br />
<div class="ul">
<span>生 日:</span><label>${user_infos.users_birth }</label>
</div>
<br />
<div class="ul">
<span>邮 箱:</span><label>${user_infos.users_mail }</label>
</div>
<br />
<div class="ul">
<span>电 话:</span><label>${user_infos.users_phone }</label>
</div>
<br />
<div class="ul">
<span>地 址:</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>确 认 密 码:</label><input placeholder="确认密码" class="save_input" name="re_users_pws" type="password"/><br />
<label>邮 箱 更 换:</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.****.net/download/qq_41193701/11176065