当前位置: 首页 > 编程日记 > 正文

Java项目:网上商城系统(java+jsp+servlert+mysql+ajax)

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

一、项目简述(+需求文档+PPT)

功能: 主页显示热销商品;所有商品展示,可进行商品搜索;点 击商品进入商品详情页,显示库存,具有立即购买和加入 购物车功能,可增减购买商品数量亦可手动输入(同时验证 库存),热销商品展示。立即购买进入确认订单页面,可选 择已经添加的地址,亦可新增地址。(同时验证库存),可 选择购买哪些商品,可删除不需要的商品。点击结算进入 确认订单页面,确认后提交订单,订单重复提交给予响 应,库存不足或商品下架给予响应。后台管理:(修改密码 等),商品管理(商品批量添加、上下架、库存维护等), 订单管理。

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe ( IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: JSP + C3P0+ Servlert + html+ css + JavaScript + JQuery + Ajax + Fileupload等等。

用户服务类:

@WebServlet("/frontstage_userServlet")
public class UserServlet extends HttpServlet {UserService service = new UserService();@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String action = req.getParameter("action");switch (action) {case "login":login(req, resp);break;case "checkUserNameRepeat":checkUserNameRepeat(req, resp);break;case "register":register(req, resp);break;case "logout":logout(req, resp);break;case "checkOldPassword":checkOldPassword(req, resp);break;case "modifyPassword":modifyPassword(req, resp);break;}}public void login(HttpServletRequest req, HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");String userName = req.getParameter("userName");String password = req.getParameter("password");String captcha = req.getParameter("captcha");if (captcha != null) {captcha = captcha.toUpperCase();}// 先进行验证码验证String checkcode = (String) req.getSession().getAttribute("checkcode_session");try {// 将用户输入的验证码和 系统验证对比if (checkcode.equals(captcha)) {User user = service.getUserByNameAndPassword(userName, password);if (user != null) {HttpSession session = req.getSession();session.setAttribute("user", user);JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));} else {// 将错误信息封装在结果集中JSONResult result = JSONResult.errorMsg("用户名或密码错误,请重试");// 以json的形式返回给前端resp.getWriter().println(JsonUtil.javaObjectToJson(result));}} else {// 将错误信息封装在结果集中JSONResult result = JSONResult.errorMsg("验证码输入错误,请重试");// 以json的形式返回给前端resp.getWriter().println(JsonUtil.javaObjectToJson(result));}} catch (Exception e) {e.printStackTrace();}}/*** 用户名重名检测* * @param req* @param resp*/public void checkUserNameRepeat(HttpServletRequest req, HttpServletResponse resp) {String userName = req.getParameter("userName");if (userName != null) {int d = service.checkUserNameRepeat(userName);try {if (d > 0) {JSONResult error = JSONResult.errorMsg("");resp.getWriter().println(JsonUtil.javaObjectToJson(error));} else {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}} catch (Exception e) {e.printStackTrace();}}}/*** 用户注册* * @param req* @param resp* @throws IOException */public void register(HttpServletRequest req, HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");User user = new User();user.setUserName(req.getParameter("userName"));user.setPassword(req.getParameter("password"));user.setEmail(req.getParameter("email"));user.setPhone(req.getParameter("phoneNum"));user.setRole("ordinaryUser");int d = service.addUser(user);try {if (d > 0) {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));} else {JSONResult error = JSONResult.errorMsg("注册失败");resp.getWriter().println(JsonUtil.javaObjectToJson(error));}} catch (Exception e) {e.printStackTrace();}}/*** 退出登录*/public void logout(HttpServletRequest req, HttpServletResponse resp) {req.getSession().removeAttribute("user");try {resp.sendRedirect("index.jsp");} catch (IOException e) {e.printStackTrace();}}/*** 检查旧密码是否正确 ,在修改密码操作时使用* @throws IOException */public void checkOldPassword(HttpServletRequest req, HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");User user = (User) req.getSession().getAttribute("user");		String oldPassword = service.getPasswordById(user.getId());System.out.println("旧密码:"+oldPassword);String password = req.getParameter("password");System.out.println("旧密码验证:"+password);try {if (!oldPassword.equals(password)) {JSONResult errorMsg = JSONResult.errorMsg("原始密码错误,请重新输入");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));} else {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}} catch (IOException e) {e.printStackTrace();}}/*** 修改密码* @throws IOException */public void modifyPassword(HttpServletRequest req, HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");String password = req.getParameter("newPassword");System.out.println("新密码:"+password);User user = (User) req.getSession().getAttribute("user");int id = user.getId();System.out.println("旧密码id"+id);int d = service.updatePasswordById(id, password);try {if (d > 0) {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));} else {JSONResult errorMsg = JSONResult.errorMsg("修改失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}} catch (Exception e) {e.printStackTrace();}}}

商品服务类:

@WebServlet("/frontstage_goodsServlet")
public class GoodsServlet extends HttpServlet{GoodsService service = new GoodsService();@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String action = req.getParameter("action");switch(action) {case "findAllGoods":findAllGoods(req,resp);break;case "findGoodsById":findGoodsById(req,resp);break;case "findGoodsByType":findGoodsByType(req,resp);break;}}/*** 获取所有商品列表* @param req* @param resp*/public void findAllGoods(HttpServletRequest req, HttpServletResponse resp) {Map<String, List<Goods>> allGoods = service.getAllGoods();try {req.setAttribute("allGoods", allGoods);req.getRequestDispatcher("/main.jsp").forward(req, resp);return;} catch (ServletException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/***根据类型获得商品列表 * @param req* @param resp*/public void findGoodsByType(HttpServletRequest req, HttpServletResponse resp) {String type = req.getParameter("type");String currentPage = req.getParameter("currentPage");PageBean pageBean = null;// 如果当前第几页currentPage 值为null,说明第一次跳转到此页面或者是要跳转到首页,则设定该值currentPage默认为1if(currentPage == null) {pageBean = service.getGoodsByType(type, 4, 1);}else {pageBean = service.getGoodsByType(type, 4, Integer.parseInt(currentPage));}try {req.setAttribute("pageBean", pageBean);req.setAttribute("type", type);req.getRequestDispatcher("/product.jsp").forward(req, resp);} catch (Exception e) {e.printStackTrace();}}/*** 获取商品的详细信息* @param req* @param resp*/public void findGoodsById(HttpServletRequest req, HttpServletResponse resp) {int id =Integer.parseInt(req.getParameter("id"));Goods goodsInfo = service.getGoodsInfoById(id);try {req.setAttribute("pro", goodsInfo);req.getRequestDispatcher("/productInfo_user.jsp").forward(req, resp);} catch (Exception e) {e.printStackTrace();}}
}

订单服务类:

@WebServlet("/backstage_ordersServlet")
public class OrdersServlet extends HttpServlet{OrdersService service = new OrdersService();@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String action = req.getParameter("action");System.out.println(action);switch(action) {case "getOrdersList":getOrdersList(req,resp);break;case "getOrdersListByName":getOrdersListByName(req,resp);break;case "deleteOrders":deleteOrders(req,resp);break;case "deleteAllOrders":deleteAllOrders(req,resp);break;case "toOrdersUpdatePage":toOrdersUpdatePage(req,resp);break;case "updateOrders":updateOrders(req,resp);break;case "fastbuy":sendOrder(req,resp);break;}}/* * 删除全部订单 */private void deleteAllOrders(HttpServletRequest req, HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");// TODO 自动生成的方法存根int d = service.deleteAllOrders();try {if(d>0) {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else {JSONResult errorMsg = JSONResult.errorMsg("删除失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}			} catch (Exception e) {e.printStackTrace();}}/*** 提交订单* @throws IOException */public void sendOrder(HttpServletRequest req, HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式User user =(User) req.getSession().getAttribute("user");Orders order = new Orders();order.setNumber(order.getRandomString(10));order.setTime(df.format(new Date()));order.setName(req.getParameter("recipients"));order.setAddress(req.getParameter("address"));order.setPhone(req.getParameter("phone"));order.setAddress_label(req.getParameter("addressLabel"));order.setSex(req.getParameter("sex"));order.setUser(user.getUserName());order.setGoods_id(Integer.parseInt(req.getParameter("id")));order.setGoods_num(Integer.parseInt(req.getParameter("num")));order.setGoods_status(1);int d = service.addOrder(order);try {if(d>0) {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else {JSONResult error = JSONResult.errorMsg("订单提交失败!");resp.getWriter().println(JsonUtil.javaObjectToJson(error));}} catch (Exception e) {e.printStackTrace();}	}/*** 向前端页面返回订单数据列表*/public void getOrdersList(HttpServletRequest req,HttpServletResponse resp) {List<Orders> allOrders = service.getAllOrders();req.setAttribute("ordersList",allOrders);try {req.getRequestDispatcher("/backstage/tgls/ordersManage/orders_list.jsp").forward(req, resp);} catch (ServletException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}	}/*** 根据订单名查询商品(注意!类别没改)* @param req* @param resp* @throws IOException */public void getOrdersListByName(HttpServletRequest req,HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");String name = req.getParameter("OrdersUser");//String type = req.getParameter("type");Map<String,String> parmas = new HashMap<>();parmas.put("name", name);//parmas.put("type", type);List<Orders> list = service.getOrdersByName(parmas);try {if(list != null) {JSONResult ok = JSONResult.ok(list);resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else {JSONResult errorMsg = JSONResult.errorMsg("未获取到任何数据,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}			} catch (Exception e) {e.printStackTrace();}}/*** 修改订单时,获取此订单的全部数据,并返回至修改页面*/public void toOrdersUpdatePage(HttpServletRequest req,HttpServletResponse resp) {int id = Integer.parseInt(req.getParameter("id"));Orders orders = service.getOrdersInfoById(id);req.setAttribute("orders", orders);try {req.getRequestDispatcher("/backstage/tgls/ordersManage/orders_update.jsp").forward(req, resp);} catch (ServletException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}	}/***  修改订单* @throws IOException */public void updateOrders(HttpServletRequest req,HttpServletResponse resp) throws IOException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");Orders orders = new Orders();orders.setId(Integer.parseInt(req.getParameter("id")));orders.setNumber(req.getParameter("number"));orders.setUser(req.getParameter("user"));orders.setTime(req.getParameter("time"));orders.setName(req.getParameter("name"));orders.setSex(req.getParameter("sex"));orders.setAddress(req.getParameter("address"));orders.setPhone(req.getParameter("phone"));orders.setAddress_label(req.getParameter("address_label"));orders.setGoods_id(Integer.parseInt(req.getParameter("goods_id")));orders.setGoods_num(Integer.parseInt(req.getParameter("goods_num")));orders.setGoods_status(Integer.parseInt(req.getParameter("goods_status")));System.out.println(orders);int d = service.updateOrdersById(orders);System.out.println(d);try {if(d>0) {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else {JSONResult errorMsg = JSONResult.errorMsg("修改失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}		} catch (Exception e) {e.printStackTrace();}}/*** 删除订单* @throws UnsupportedEncodingException */public void deleteOrders(HttpServletRequest req,HttpServletResponse resp) throws UnsupportedEncodingException {//设置请求编码格式:req.setCharacterEncoding("utf-8");//设置响应编码格式			resp.setContentType("text/html;charset=utf-8");int id = Integer.parseInt(req.getParameter("id"));int d = service.deleteOrdersById(id);try {if(d>0) {JSONResult ok = JSONResult.ok();resp.getWriter().println(JsonUtil.javaObjectToJson(ok));}else {JSONResult errorMsg = JSONResult.errorMsg("删除失败,请重试");resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));}			} catch (Exception e) {e.printStackTrace();}}
}

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

相关文章:

clock函数返回负值~ (转)

使用clock() 函数来进行计时&#xff0c;时不时的返回一个很大的负数&#xff0c;怎么检查也检查不出错误&#xff0c;现在找出错误原因&#xff0c;给大家分享一下。 来源网页&#xff1a;http://kebe-jea.blogbus.com/logs/33603387.html 跑实验的时候&#xff0c;结果时不时…

c实现面向对象编程(3)

http://blog.csdn.net/kennyrose/article/details/7564105转载于:https://www.cnblogs.com/pengkunfan/p/3486612.html

echarts - 条形图grid设置距离绘图区域的距离

在一些数据量过大的情况下&#xff0c;在一个固定的区域绘图往往需要对图表绘制区域的大小进行动态改变。这时候设置条形图距离绘图区域上下左右的距离可使用如下方式&#xff1a;表示条形图的柱子距离绘图区左边30%&#xff0c;距离右边40%&#xff0c;而距离顶部和底部分别为…

TitanDB 中使用Compaction Filter ,产生了预期之外几十倍的读I/O

Compaction过程中 产生大量读I/O 的背景 项目中因大value 需求&#xff0c;引入了PingCap 参考Wisckey 思想实现的key-value分离存储 titan&#xff0c; 使用过程中因为有用到Rocksdb本身的 CompactionFilter功能&#xff0c;所以就直接用TitanDB的option 传入了compaction fi…

Java项目:前台+后台精品图书管理系统(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能包括&#xff1a; 登录注册&#xff0c;办理借阅。借阅记录&#xff0c;预约借阅&#xff0c;借出未还, 借阅逾期&#xff0c;学生管理&#xff0c;图书管理&#xff0c;书库分类查询搜索…

消除 activity 启动时白屏、黑屏问题

默认情况下 activity 启动的时候先把屏幕刷成白色&#xff0c;再绘制界面&#xff0c;绘制界面或多或少有点延迟&#xff0c;这段时间中你看到的就是白屏&#xff0c;显然影响用户体验&#xff0c;怎么消除呢&#xff1f; 在 Activity theme 设置style 即可 1 <style na…

理解并实施:HSRP(CCNA200-120新增考点)

理解并实施:HSRP思科热备路由器协议HSRP&#xff08;HotStandby Router Protocol&#xff09;是企业级网络路由器的故障冗余服务。如图9.116所示&#xff0c;192.168.2.0/24的子网需要与目标192.168.5.2的计算机通信。192.168.2.0/24的子网有两台出口路由器&#xff0c;一台是R…

使用机智云APP控制战舰V3 (转)

源&#xff1a;使用机智云APP控制战舰V3 转载于:https://www.cnblogs.com/LittleTiger/p/10725586.html

从JoinBatchGroup 代码细节 来看Rocksdb的相比于leveldb的写入优势

文章目录1. Rocksdb写入模型2. LevelDB写入的优化点3. Rocksdb 的优化1. Busy Loop2. Short Wait -- SOMETIMES busy Loop3. Long-wait4. 测试验证4. 总结1. Rocksdb写入模型 本节讨论一下Rocksdb在写入链路上的一个优化点&#xff0c;这个优化细节可以说将Rocksdb这个存储引擎…

Java项目:嘟嘟网上商城系统(java+jdbc+jsp+mysql+ajax)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能&#xff1a; 商品的分类展示&#xff0c;用户的注册登录&#xff0c;购物车&#xff0c;订单结算&#xff0c; 购物车加减&#xff0c;后台商品管理&#xff0c;分类管理&#xff0c;订单…

SOAPUI请求及mockservice 使用

1、新建soap Project&#xff0c;输入wsdl的地址&#xff0c;运行request 2.邮件Project&#xff0c;建立mockservice&#xff0c;建立多个response&#xff0c;选在mock operation&#xff0c;选择response dispa…

空间直角坐标系与球面坐标互转

空间直角坐标系与球面坐标互转 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Text;5 6 namespace AppSurveryTools.SphericalAndCartesian7 {8 class CartesianCoord9 { 10 public double x; 11 public dou…

Ajax 的优势和不足

Ajax 的优势 1. 不需要插件支持 Ajax 不需要任何浏览器插件&#xff0c;就可以被绝大多数主流浏览器所支持&#xff0c;用户只需要允许 JavaScript 在浏览器上执行即可。 2. 优秀的用户体验 这是 Ajax 技术的最大优点&#xff0c;能在不刷新整个页面的前提下更新数据&#xff0…

BitCask 持久化hash存储引擎 原理介绍

文章目录前言引擎背景引擎原理1. 磁盘数据结构2. 内存数据结构3. 读流程4. 数据合并总结前言 最近工作中部分项目中&#xff0c;对存储引擎的需求希望高性能的写、点查&#xff0c;并不需要Range。这里看到大家总会提到BitCask这个存储引擎方案&#xff0c;并不是很了解&#…

C# Socket系列三 socket通信的封包和拆包

通过系列二 我们已经实现了socket的简单通信 接下来我们测试一下&#xff0c;在时间应用的场景下&#xff0c;我们会快速且大量的传输数据的情况&#xff01; 1 class Program2 {3 static void Main(string[] args)4 {5 TCPListener tcp n…

Java项目:CRM客户管理系统(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能包括&#xff1a; 用户管理&#xff0c;系统管理&#xff0c;客户管理&#xff0c;客户服务&#xff0c;客户关怀, 销售机会&#xff0c;统计管理等等。 二、项目运行 环境配置&#x…

Android 获取标题栏的高度

2019独角兽企业重金招聘Python工程师标准>>> 通过获取内容区域的 rect 的 top 值就是状态栏和标题栏的高度&#xff0c;也就可以得到标题栏的高度了&#xff0c; [java] view plaincopy int contentTop getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTo…

力扣—— 三维形体投影面积

在 N * N 的网格中&#xff0c;我们放置了一些与 x&#xff0c;y&#xff0c;z 三轴对齐的 1 * 1 * 1 立方体。 每个值 v grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。 现在&#xff0c;我们查看这些立方体在 xy、yz 和 zx 平面上的投影。 投影就像影子&#xff0c;将…

一图带你入门Linux 存储I/O栈

发现了一个内核大佬 的 Linux 存储I/O栈&#xff0c;很清晰&#xff01;&#xff01;&#xff01; 原地址如下&#xff1a; http://ilinuxkernel.com/?p1559 【侵删】

Java项目:在线美食网站系统(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能&#xff1a;用户的注册登录&#xff0c;美食浏览&#xff0c;美食文化&#xff0c;收藏百 科&#xff0c;趣味问答&#xff0c;食谱等等功能等等。 二、项目运行 环境配置&#xff1a;…

性能测试中传——lr理论基础(四)

转载于:https://blog.51cto.com/fuwenchao/1346435

滑动定位的三种方法,以及热启动(五)

from init_driver.Init_driver import init_driverdriver init_driver()# 坐标-->坐标&#xff0c;定位滑动 driver.swipe(309, 1353, 537, 511, duration3000)# 元素-->元素&#xff0c;定位滑动 start_ele driver.find_element_by_xpath("//*[contains(text, 通…

TitanDB GC详细实现原理 及其 引入的问题

文章目录1. 为什么要有GC2. GC的触发条件3. GC的核心逻辑1. blob file形态2. GC Prepare3. GC pick file4. GC run4. GC 引入的问题5. Titan的测试代码通过本篇&#xff0c;能够从TitanDB的源代码中看到 key/value 分离之后引入的一些复杂性&#xff0c;这个复杂性很难避免。 …

Java项目:医院住院管理系统(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能包括&#xff1a; 住院病人管理&#xff0c;住院病房管理&#xff0c;医生管理&#xff0c;药品管理&#xff0c;仪 器管理等等。 二、项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.…

1m网速是什么意思,1m带宽是什么意思

1M网速下载速度应是多少&#xff1f;我怎么才50多KB&#xff1f;&#xff1f; 建议: 一般来说是90到100算正常。最高能达到120 带究竟该有多快 揭开ADSL真正速度之谜 常常使用ADSL的用户&#xff0c;你知道ADSL的真正速度吗&#xff1f;带着这个疑问我们将问题一步一步展开。…

泛型实体类List绑定到repeater

泛型实体类List<>绑定到repeater 后台代码&#xff1a; private void bindnewslist(){long num 100L;List<Model.news> news _news.GetList(out num);this.newslist.DataSource news;this.newslist.DataBind();} 说明&#xff1a;Model.news是实体类&#xff0c…

Qt4.8.5移植

这两天搞了Qt移植 因为不小心 耽误了挺多时间 但是也比较好的掌握了 现在记录一下 准备工具&#xff1a; tslib-1.16 qt-everywhere-opensource-src-4.8.5.tar 下载路径&#xff1a; tslib-1.16下载&#xff1a; https://github.com/kergoth/tslib/releases/download/1.16/t…

Rocksdb 通过ingestfile 来支持高效的离线数据导入

文章目录前言使用方式实现原理总结前言 很多时候&#xff0c;我们使用数据库时会有离线向数据库导入数据的需求。比如大量用户在本地的一些离线数据&#xff0c;想要将这一些数据导入到已有的数据库中&#xff1b;或者说NewSQL场景中部分机器离线&#xff0c;重新上线之后的数…

Java项目:企业人事管理系统(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能介绍&#xff1a;员工管理&#xff0c;用户管理&#xff0c;部门管理&#xff0c;文档管理, 职位管理等等。 二、项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 mysql Eclispe (I…

XCODE 6.1.1 配置GLFW

最近在学习opengl的相关知识。第一件事就是配环境(好烦躁)。了解了一下os x下的OpenGL开源库&#xff0c;主要有几个&#xff1a;GLUT&#xff0c;freeglut&#xff0c;GLFW等。关于其详细的介绍可以参考opengl网站(https://www.opengl.org/wiki/Related_toolkits_and_APIs)。由…