热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java项目:校内超市管理系统(java+SSM+Maven+BootStrap+Mysql)

本系统分为管理员与普通用户两种角色。采用后端SSM框架,前端BootStrap(前后端不分离)的系统架构模式,实现了基本的超市管理功能;本系统实现了超市管理的基本功能,包括商品库存
源码获取:俺的博客首页 "资源" 里下载!

项目介绍

本系统分为管理员与普通用户两种角色。采用后端SSM框架,前端BootStrap(前后端不分离)的系统架构模式,实现了基本的超市管理功能;
本系统实现了超市管理的基本功能,包括商品库存模块,商品分类模块,供应商管理模块,销售统计模块以及用户管理模块。


环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 
5.数据库:MySql 5.7版本;
6.是否Maven项目:是;


技术栈

- 后端:Spring + SpringMVC + MyBatis
- 前端:BootStrap
- 插件:PageHelper分页插件
- 环境:Jdk 1.8 + Tomcat 9.0.45 + Maven管理工具 + MySQL v5.7.33


使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,访问路径(本地部署):localhost:8080/sms

 

 

 

 

 

 

用户管理控制层:

@Controller public class UserServlet{ @Autowired BillServiceImpl billService; @Autowired ProviderServiceImpl providerService; @Autowired UserServiceImpl userService; @Autowired RoleServiceImpl roleService; @RequestMapping(value="/user.do",method = {RequestMethod.POST, RequestMethod.GET}) public String doPost(HttpSession session, @Valid User user, BindingResult bindingResult, HttpServletRequest request, HttpServletResponse response, @RequestParam(value="method",required = false) String method, Model model) throws ServletException, IOException { System.out.println("--------------->"+method); if(method != null && method.equals("add")){ return this.add(request, response,user,bindingResult,session); }else if(method != null && method.equals("query")){ return this.query(request, response); }else if(method != null && method.equals("getrolelist")){ this.getRoleList(request, response); }else if(method != null && method.equals("ucexist")){ this.userCodeExist(request, response); }else if(method != null && method.equals("deluser")){ this.delUser(request, response); }else if(method != null && method.equals("view")){ return this.getUserById(request, response,"userview",model); }else if(method != null && method.equals("modify")){ return this.getUserById(request, response,"usermodify",model); }else if(method != null && method.equals("modifyexe")){ return this.modify(request, response); }else if(method != null && method.equals("pwdmodify")){ this.getPwdByUserId(request, response); }else if(method != null && method.equals("savepwd")){ return this.updatePwd(request, response); } return "error"; } private String updatePwd(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Object o = request.getSession().getAttribute(Constants.USER_SESSION); String newpassword = request.getParameter("newpassword"); boolean flag = false; if(o != null && !StringUtils.isNullOrEmpty(newpassword)){ flag = userService.updatePwd(((User)o).getId(),newpassword); if(flag){ request.setAttribute(Constants.SYS_MESSAGE, "修改密码成功,请退出并使用新密码重新登录!"); request.getSession().removeAttribute(Constants.USER_SESSION);//session注销 }else{ request.setAttribute(Constants.SYS_MESSAGE, "修改密码失败!"); } }else{ request.setAttribute(Constants.SYS_MESSAGE, "修改密码失败!"); } return "pwdmodify"; } private void getPwdByUserId(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Object o = request.getSession().getAttribute(Constants.USER_SESSION); String oldpassword = request.getParameter("oldpassword"); Map resultMap = new HashMap(); if(null == o ){//session过期 resultMap.put("result", "sessionerror"); }else if(StringUtils.isNullOrEmpty(oldpassword)){//旧密码输入为空 resultMap.put("result", "error"); }else{ String sessiOnPwd= ((User)o).getUserPassword(); if(oldpassword.equals(sessionPwd)){ resultMap.put("result", "true"); }else{//旧密码输入不正确 resultMap.put("result", "false"); } } // response.setContentType("application/json"); request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter outPrintWriter = response.getWriter(); outPrintWriter.write(JSONArray.toJSONString(resultMap)); outPrintWriter.flush(); outPrintWriter.close(); } private String modify(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id = request.getParameter("uid"); String userName = request.getParameter("userName"); String gender = request.getParameter("gender"); String birthday = request.getParameter("birthday"); String phOne= request.getParameter("phone"); String address = request.getParameter("address"); String userRole = request.getParameter("userRole"); User user = new User(); user.setId(Integer.valueOf(id)); user.setUserName(userName); user.setGender(Integer.valueOf(gender)); try { user.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse(birthday)); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } user.setPhone(phone); user.setAddress(address); user.setUserRole(Integer.valueOf(userRole)); user.setModifyBy(((User)request.getSession().getAttribute(Constants.USER_SESSION)).getId()); user.setModifyDate(new Date()); if(userService.modify(user)){ return "redirect:/user.do?method=query"; // response.sendRedirect(request.getContextPath()+"/jsp/user.do?method=query"); }else{ return "usermodify"; // request.getRequestDispatcher("usermodify.jsp").forward(request, response); } } private String getUserById(HttpServletRequest request, HttpServletResponse response, String url, Model model) throws ServletException, IOException { String id = request.getParameter("uid"); if(!StringUtils.isNullOrEmpty(id)){ //调用后台方法得到user对象 User user = userService.getUserById(id); System.out.println("------------> "+user); model.addAttribute("user", user); return url; // request.getRequestDispatcher(url).forward(request, response); } return "error"; } private void delUser(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id = request.getParameter("uid"); Integer delId = 0; try{ delId = Integer.parseInt(id); }catch (Exception e) { // TODO: handle exception delId = 0; } HashMap resultMap = new HashMap(); if(delId <= 0){ resultMap.put("delResult", "notexist"); }else{ if(userService.deleteUserById(delId)){ resultMap.put("delResult", "true"); }else{ resultMap.put("delResult", "false"); } } //把resultMap转换成json对象输出 // response.setContentType("application/json"); request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter outPrintWriter = response.getWriter(); outPrintWriter.write(JSONArray.toJSONString(resultMap)); outPrintWriter.flush(); outPrintWriter.close(); } private void userCodeExist(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //判断用户账号是否可用 String userCode = request.getParameter("userCode"); HashMap resultMap = new HashMap(); if(StringUtils.isNullOrEmpty(userCode)){ //userCode == null || userCode.equals("") resultMap.put("userCode", "exist"); }else{ User user = userService.selectUserCodeExist(userCode); if(null != user){ resultMap.put("userCode","exist"); }else{ resultMap.put("userCode", "notexist"); } } //把resultMap转为json字符串以json的形式输出 //配置上下文的输出类型 // response.setContentType("application/json"); request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); //从response对象中获取往外输出的writer对象 PrintWriter outPrintWriter = response.getWriter(); //把resultMap转为json字符串 输出 outPrintWriter.write(JSONArray.toJSONString(resultMap)); outPrintWriter.flush();//刷新 outPrintWriter.close();//关闭流 } private void getRoleList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List roleList = null; roleList = roleService.getRoleList(); //把roleList转换成json对象输出 // response.setContentType("application/json"); request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter outPrintWriter = response.getWriter(); outPrintWriter.write(JSONArray.toJSONString(roleList)); outPrintWriter.flush(); outPrintWriter.close(); } private String query(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //查询用户列表 String queryUserName = request.getParameter("queryname"); String temp = request.getParameter("queryUserRole"); String pageIndex = request.getParameter("pageIndex"); int queryUserRole = 0; List userList = null; //设置页面容量 int pageSize = Constants.pageSize; //当前页码 int currentPageNo = 1; System.out.println("queryUserName servlet--------"+queryUserName); System.out.println("queryUserRole servlet--------"+queryUserRole); System.out.println("query pageIndex--------- > " + pageIndex); if(queryUserName == null){ queryUserName = ""; } if(temp != null && !temp.equals("")){ queryUserRole = Integer.parseInt(temp); } if(pageIndex != null){ try{ currentPageNo = Integer.valueOf(pageIndex); }catch(NumberFormatException e){ return "error"; } } //总数量(表) int totalCount = userService.getUserCount(queryUserName,queryUserRole); //总页数 PageSupport pages=new PageSupport(); pages.setCurrentPageNo(currentPageNo); pages.setPageSize(pageSize); pages.setTotalCount(totalCount); int totalPageCount = pages.getTotalPageCount(); //控制首页和尾页 if(currentPageNo <1){ currentPageNo = 1; }else if(currentPageNo > totalPageCount){ currentPageNo = totalPageCount; } userList = userService.getUserList(queryUserName,queryUserRole,currentPageNo, pageSize); System.out.println("----------> "+userList.get(0).getAge()); request.setAttribute("userList", userList); List roleList = null; System.out.println(userList.get(0).getRole().getRoleName()); roleList = roleService.getRoleList(); System.out.println("===== "+roleList.get(0).getRoleCode()+"--------roleList:"+roleList.get(0).getRoleName()); request.setAttribute("roleList", roleList); request.setAttribute("queryUserName", queryUserName); request.setAttribute("queryUserRole", queryUserRole); request.setAttribute("totalPageCount", totalPageCount); request.setAttribute("totalCount", totalCount); request.setAttribute("currentPageNo", currentPageNo); return "userlist"; } private String add(HttpServletRequest request, HttpServletResponse response, User user, BindingResult bindingResult, HttpSession session) throws ServletException, IOException { if(bindingResult.hasErrors()){ System.out.println("输入错误"); return "useradd"; }System.out.println("111"); user.setCreatedBy(((User)session.getAttribute(Constants.USER_SESSION)).getId());System.out.println("222"); user.setCreationDate(new Date());System.out.println("333"); if(userService.add(user)){return "redirect:/user.do?method=query";}System.out.println("444"); return "useradd"; } }

供应商管理控制层:

@Controller public class ProviderServlet { @Autowired BillServiceImpl billService; @Autowired ProviderServiceImpl providerService; @Autowired UserServiceImpl userService; @RequestMapping(value="/provider.do",method = {RequestMethod.POST, RequestMethod.GET}) public String doPost(HttpServletRequest request, HttpServletResponse response, @RequestParam(value="method",required = false) String method) throws ServletException, IOException { if(method != null && method.equals("query")){ return this.query(request,response); }else if(method != null && method.equals("add")){ return this.add(request,response); }else if(method != null && method.equals("view")){ return this.getProviderById(request,response,"providerview"); }else if(method != null && method.equals("modify")){ return this.getProviderById(request,response,"providermodify"); }else if(method != null && method.equals("modifysave")){ return this.modify(request,response); }else if(method != null && method.equals("delprovider")){ this.delProvider(request,response); } return "error"; } private void delProvider(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id = request.getParameter("proid"); HashMap resultMap = new HashMap(); if(!StringUtils.isNullOrEmpty(id)){ int flag = providerService.deleteProviderById(id); if(flag == 0){//删除成功 resultMap.put("delResult", "true"); }else if(flag == -1){//删除失败 resultMap.put("delResult", "false"); }else if(flag > 0){//该供应商下有订单,不能删除,返回订单数 resultMap.put("delResult", String.valueOf(flag)); } }else{ resultMap.put("delResult", "notexit"); } //把resultMap转换成json对象输出 // response.setContentType("application/json"); request.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8"); PrintWriter outPrintWriter = response.getWriter(); outPrintWriter.write(JSONArray.toJSONString(resultMap)); outPrintWriter.flush(); outPrintWriter.close(); } private String modify(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String proCOntact= request.getParameter("proContact"); String proPhOne= request.getParameter("proPhone"); String proAddress = request.getParameter("proAddress"); String proFax = request.getParameter("proFax"); String proDesc = request.getParameter("proDesc"); String id = request.getParameter("id"); Provider provider = new Provider(); provider.setId(Integer.valueOf(id)); provider.setProContact(proContact); provider.setProPhone(proPhone); provider.setProFax(proFax); provider.setProAddress(proAddress); provider.setProDesc(proDesc); provider.setModifyBy(((User)request.getSession().getAttribute(Constants.USER_SESSION)).getId()); provider.setModifyDate(new Date()); boolean flag = false; flag = providerService.modify(provider); System.out.println("--------flag="+flag); if(flag){ return "redirect:/provider.do?method=query"; // response.sendRedirect(request.getContextPath()+"/jsp/provider.do?method=query"); }else{ return "providermodify"; // request.getRequestDispatcher("providermodify.jsp").forward(request, response); } } private String getProviderById(HttpServletRequest request, HttpServletResponse response, String url) throws ServletException, IOException { String id = request.getParameter("proid"); System.out.println("-------------"+id); if(!StringUtils.isNullOrEmpty(id)){ Provider provider = null; provider = providerService.getProviderById(id); request.setAttribute("provider", provider); System.out.println("-------------"+id); return url; // request.getRequestDispatcher(url).forward(request, response); } return "error"; } private String add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String proCode = request.getParameter("proCode"); String prOname= request.getParameter("proName"); String proCOntact= request.getParameter("proContact"); String proPhOne= request.getParameter("proPhone"); String proAddress = request.getParameter("proAddress"); String proFax = request.getParameter("proFax"); String proDesc = request.getParameter("proDesc"); Provider provider = new Provider(); provider.setProCode(proCode); provider.setProName(proName); provider.setProContact(proContact); provider.setProPhone(proPhone); provider.setProFax(proFax); provider.setProAddress(proAddress); provider.setProDesc(proDesc); provider.setCreatedBy(((User)request.getSession().getAttribute(Constants.USER_SESSION)).getId()); provider.setCreationDate(new Date()); boolean flag = false; flag = providerService.add(provider); if(flag){ return "redirect:/provider.do?method=query"; // response.sendRedirect(request.getContextPath()+"/jsp/provider.do?method=query"); }else{ return "provideradd"; // request.getRequestDispatcher("provideradd.jsp").forward(request, response); } } private String query(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String queryPrOname= request.getParameter("queryProName"); String queryProCode = request.getParameter("queryProCode"); if(StringUtils.isNullOrEmpty(queryProName)){ queryPrOname= ""; } if(StringUtils.isNullOrEmpty(queryProCode)){ queryProCode = ""; } List providerList = new ArrayList(); providerList = providerService.getProviderList(queryProName,queryProCode); request.setAttribute("providerList", providerList); request.setAttribute("queryProName", queryProName); request.setAttribute("queryProCode", queryProCode); return "providerlist"; // request.getRequestDispatcher("providerlist.jsp").forward(request, response); } }

商品管理控制层:

@RestController @RequestMapping("/goods") public class GoodsController { @Autowired private GoodsService goodsService; @Autowired private ProviderService providerService; @Autowired private CategoryService categoryService; /** * 商品模糊查询 * * @param * @return */ @SysLog("商品查询操作") @RequestMapping("/goodsList") public DataGridViewResult goodsList(GoodsVO goodsVO) { //创建分页信息 参数1 当前页 参数2 每页显示条数 IPage page = new Page<>(goodsVO.getPage(), goodsVO.getLimit()); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq(goodsVO.getProviderid() != null && goodsVO.getProviderid() != 0, "providerid", goodsVO.getProviderid()); queryWrapper.like(!StringUtils.isEmpty(goodsVO.getGname()), "gname", goodsVO.getGname()); IPage goodsIPage = goodsService.page(page, queryWrapper); List records = goodsIPage.getRecords(); for (Goods goods : records) { Provider provider = providerService.getById(goods.getProviderid()); if (null != provider) { goods.setProvidername(provider.getProvidername()); } } return new DataGridViewResult(goodsIPage.getTotal(), records); } /** * 添加商品信息 * * @param goods * @return */ @SysLog("商品添加操作") @PostMapping("/addgoods") public Result addGoods(Goods goods) { String id = RandomStringUtils.randomAlphanumeric(8); if (goods.getGoodsimg()!=null&&goods.getGoodsimg().endsWith("_temp")){ String newName = AppFileUtils.renameFile(goods.getGoodsimg()); goods.setGoodsimg(newName); } goods.setGnumbering(id); boolean bool = goodsService.save(goods); if (bool) { return Result.success(true, "200", "添加成功!"); } return Result.error(false, null, "添加失败!"); } /** * 修改商品信息 * * @param goods * @return */ @SysLog("商品修改操作") @PostMapping("/updategoods") public Result updateGoods(Goods goods) { //商品图片不是默认图片 if (!(goods.getGoodsimg()!=null&&goods.getGoodsimg().equals(Constast.DEFAULT_IMG))){ if (goods.getGoodsimg().endsWith("_temp")){ String newName = AppFileUtils.renameFile(goods.getGoodsimg()); goods.setGoodsimg(newName); //删除原先的图片 String oldPath = goodsService.getById(goods.getGid()).getGoodsimg(); AppFileUtils.removeFileByPath(oldPath); } } boolean bool = goodsService.updateById(goods); if (bool) { return Result.success(true, "200", "修改成功!"); } return Result.error(false, null, "修改失败!"); } /** * 删除单条数据 * * @param id * @return */ @SysLog("商品删除操作") @RequestMapping("/deleteOne") public Result deleteOne(int id) { boolean bool = goodsService.removeById(id); if (bool) { return Result.success(true, "200", "删除成功!"); } return Result.error(false, null, "删除失败!"); } /** * 根据id查询当前商品拥有的类别 * * @param id * @return */ @RequestMapping("/initGoodsByCategoryId") public DataGridViewResult initGoodsByCategoryId(int id) { List> mapList = null; try { //查询所有类别列表 mapList = categoryService.listMaps(); //根据商品id查询商品拥有的类别 Set cateIdList = categoryService.findGoodsByCategoryId(id); for (Map map : mapList) { //定义标记 默认不选中 boolean flag = false; int cateId = (int) map.get("cateid"); for (Integer cid : cateIdList) { if (cid == cateId) { flag = true; break; } } map.put("LAY_CHECKED", flag); } } catch (Exception e) { e.printStackTrace(); } return new DataGridViewResult(Long.valueOf(mapList.size()), mapList); } /** * 根据商品id加载商品信息 * @param goodsid * @return */ @GetMapping("/loadGoodsById") public DataGridViewResult loadGoodsById(int goodsid) { QueryWrapper goodsQueryWrapper = new QueryWrapper<>(); goodsQueryWrapper.eq(goodsid != 0, "gid", goodsid); Goods goods = goodsService.getById(goodsid); return new DataGridViewResult(goods); } /** * 为商品分配类别 * * @param categoryids * @param goodsid * @return */ @SysLog("类别添加操作") @RequestMapping("/saveGoodsCategory") public Result saveGoodsCategory(String categoryids, int goodsid) { try { if (goodsService.saveGoodsCategory(goodsid, categoryids)) { return Result.success(true, null, "分配成功"); } } catch (Exception e) { e.printStackTrace(); } return Result.error(false, null, "分配失败"); } /** * 加载下拉框 * * @return */ @RequestMapping("/loadAllGoods") public DataGridViewResult loadAllGoods() { QueryWrapper queryWrapper = new QueryWrapper<>(); List list = goodsService.list(queryWrapper); return new DataGridViewResult(list); } /** * 根据供应商查商品下拉框 * * @param providerid * @return */ @RequestMapping("/loadGoodsByProvidreId") public DataGridViewResult loadGoodsByProvidreId(Integer providerid) { QueryWrapper goodsQueryWrapper = new QueryWrapper<>(); goodsQueryWrapper.eq(providerid != null, "providerid", providerid); List list = goodsService.list(goodsQueryWrapper); for (Goods goods : list) { Provider provider = providerService.getById(goods.getProviderid()); if (null != provider) { goods.setProvidername(provider.getProvidername()); } } return new DataGridViewResult(list); } }

源码获取:俺的博客首页 "资源" 里下载! 

推荐阅读
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之六 || API项目整体搭建 6.1 仓储模式
    代码已上传Github+Gitee,文末有地址  书接上文:前几回文章中,我们花了三天的时间简单了解了下接口文档Swagger框架,已经完全解放了我们的以前的Word说明文档,并且可以在线进行调 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 最近学习反射机制的时候Properties.load(读取本地文件流的时候怎么也找不到加载文件后面发现IDEA的默认根目录是在它的Project工程下IDEA的文件目录和Ec ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
  • 一、Struts2是一个基于MVC设计模式的Web应用框架在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2优点1、实现 ... [详细]
  • Maven构建Hadoop,
    Maven构建Hadoop工程阅读目录序Maven安装构建示例下载系列索引 序  上一篇,我们编写了第一个MapReduce,并且成功的运行了Job,Hadoop1.x是通过ant ... [详细]
author-avatar
兰墨儿_231
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有