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

Java项目:仿天猫网上商城项目(java+jsp+servlet+mysql+ajax)

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

一、项目简述

功能:

前台:

* 用户模块

* 分类模块

* 商品模块

* 购物车模块

* 订单模块

后台:

* 管理员模块

* 分类管理模块

* 商品管理模块

* 订单模块

二、项目运行

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

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

用户服务类:

public class UserServlet extends BaseBackServlet {@Overridepublic String add(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了 UserServlet add方法");return null;}@Overridepublic String delete(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了 UserServlet delete方法");int id = Integer.parseInt(request.getParameter("id"));userDAO.delete(id);return "@admin_user_list";}@Overridepublic String update(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了 UserServlet update方法");Map<String, String> params = new HashMap<>();InputStream is = super.parseUpload(request, params);System.out.println(params);int id = Integer.parseInt(params.get("id"));String password = params.get("password");User user = userDAO.get(id);user.setPassword(password);userDAO.update(user);return "@admin_user_list";}@Overridepublic String edit(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了 UserServlet edit方法");int id = Integer.parseInt(request.getParameter("id"));User u = userDAO.get(id);request.setAttribute("u", u);return "admin/editUser.jsp";}@Overridepublic String list(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了 UserServlet list方法");List<User> us = userDAO.list(page.getStart(), page.getCount());int total = userDAO.getTotal();page.setTotal(total);request.setAttribute("us", us);request.setAttribute("page", page);return "admin/listUser.jsp";}
}

订单服务类:

public class OrderServlet extends BaseBackServlet {@Overridepublic String add(HttpServletRequest request, HttpServletResponse response, Page page) {return null;}@Overridepublic String delete(HttpServletRequest request, HttpServletResponse response, Page page) {return null;}@Overridepublic String update(HttpServletRequest request, HttpServletResponse response, Page page) {return null;}@Overridepublic String edit(HttpServletRequest request, HttpServletResponse response, Page page) {return null;}public String delivery(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了 OrderServlet delivery方法");int id = Integer.parseInt(request.getParameter("id"));Order o = orderDAO.get(id);o.setDeliveryDate(new Date());o.setStatus(OrderDAO.waitConfirm);orderDAO.update(o);return "@admin_order_list";}@Overridepublic String list(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了 OrderServlet list方法");// 对订单对应的订单项进行初始化List<Order> os = orderDAO.list(page.getStart(), page.getCount());orderItemDAO.fill(os);int total = orderDAO.getTotal();page.setTotal(total);request.setAttribute("os", os);request.setAttribute("page", page);return "admin/listOrder.jsp";}
}

品类服务类:

public class CategoryServlet extends BaseBackServlet {@Overridepublic String add(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了category add方法");Map<String,String> params = new HashMap<>();InputStream is = super.parseUpload(request, params);System.out.println(params);String name = params.get("name");Category c = new Category();c.setName(name);categoryDAO.add(c);File imageFolder = new File(request.getSession().getServletContext().getRealPath("img/category"));File file = new File(imageFolder, c.getId() + ".jpg");try{if(null != is && 0 != is.available()){try(FileOutputStream fos = new FileOutputStream(file);){byte[] b = new byte[1024 * 1024];int length = 0;while(-1 != (length = is.read(b))){fos.write(b, 0, length);}fos.flush();//通过以下代码,将文件保存为jsp格式BufferedImage img = ImageUtil.change2jpg(file);ImageIO.write(img, "jpg", file);}}} catch (IOException e) {e.printStackTrace();}return "@admin_category_list";}@Overridepublic String delete(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了category delete方法");int id = Integer.parseInt(request.getParameter("id"));categoryDAO.delete(id);return "@admin_category_list";}@Overridepublic String update(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了category update方法");Map<String,String> params = new HashMap<>();InputStream is = super.parseUpload(request, params);System.out.println(params);String name = params.get("name");int id = Integer.parseInt(params.get("id"));Category c = new Category();c.setName(name);c.setId(id);categoryDAO.update(c);File imageFolder = new File(request.getSession().getServletContext().getRealPath("img/category"));File file = new File(imageFolder, c.getId() + ".jpg");try{if(null != is && 0 != is.available()){try(FileOutputStream fos = new FileOutputStream(file);){byte[] b = new byte[1024 * 1024];int length = 0;while(-1 != (length = is.read(b))){fos.write(b, 0, length);}fos.flush();//通过以下代码,将文件保存为jsp格式BufferedImage img = ImageUtil.change2jpg(file);ImageIO.write(img, "jpg", file);}}} catch (IOException e) {e.printStackTrace();}return "@admin_category_list";}@Overridepublic String edit(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了category edit方法");int id = Integer.parseInt(request.getParameter("id"));Category category = categoryDAO.get(id);request.setAttribute("c", category);return "admin/editCategory.jsp";}@Overridepublic String list(HttpServletRequest request, HttpServletResponse response, Page page) {List<Category> cs = categoryDAO.list(page.getStart(), page.getCount());int total = categoryDAO.getTotal();page.setTotal(total);request.setAttribute("thecs", cs);request.setAttribute("page", page);return "admin/listCategory.jsp";}
}

产品服务类:

public class ProductServlet extends BaseBackServlet {@Overridepublic String add(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了Product add方法");Map<String, String> params = new HashMap<>();InputStream inputStream = super.parseUpload(request, params);System.out.println(params);int cid = Integer.parseInt(params.get("cid"));Category c = categoryDAO.get(cid);String name = params.get("name");String subTitle = params.get("subTitle");float originalPrice = Float.parseFloat(params.get("originalPrice"));float promotePrice = Float.parseFloat(params.get("promotePrice"));int stock = Integer.parseInt(params.get("stock"));Product p = new Product();p.setCategory(c);p.setName(name);p.setSubTitle(subTitle);p.setOriginalPrice(originalPrice);p.setPromotePrice(promotePrice);p.setStock(stock);p.setCreateDate(new Date());productDAO.add(p);return "@admin_product_list?cid=" + cid;}@Overridepublic String delete(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了Product delete方法");int id = Integer.parseInt(request.getParameter("id"));Product p = productDAO.get(id);productDAO.delete(id);return "@admin_product_list?cid=" + p.getCategory().getId();}@Overridepublic String update(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了Product update方法");Map<String, String> params = new HashMap<>();InputStream inputStream = super.parseUpload(request, params);int cid = Integer.parseInt(params.get("cid"));Category c = categoryDAO.get(cid);int id = Integer.parseInt(params.get("id"));String name = params.get("name");String subTitle = params.get("subTitle");float originalPrice = Float.parseFloat(params.get("originalPrice"));float promotePrice = Float.parseFloat(params.get("promotePrice"));int stock = Integer.parseInt(params.get("stock"));Product p = new Product();p.setId(id);p.setName(name);p.setSubTitle(subTitle);p.setOriginalPrice(originalPrice);p.setPromotePrice(promotePrice);p.setStock(stock);p.setCategory(c);p.setCreateDate(new Date());productDAO.update(p);return "@admin_product_list?cid=" + p.getCategory().getId();}@Overridepublic String edit(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了Product edit方法");int id =Integer.parseInt(request.getParameter("id"));Product p = productDAO.get(id);request.setAttribute("p",p);return "admin/editProduct.jsp";}public String updatePropertyValue(HttpServletRequest request, HttpServletResponse response, Page page){System.out.println("调用了Product updatePropertyValue方法");int  pvid = Integer.parseInt(request.getParameter("pvid"));String value = request.getParameter("value");PropertyValue pv = propertyValueDAO.get(pvid);pv.setValue(value);propertyValueDAO.update(pv);return "%success";}public String editPropertyValue(HttpServletRequest request, HttpServletResponse response, Page page){System.out.println("调用了Product editPropertyValue方法");int id = Integer.parseInt(request.getParameter("id"));Product p = productDAO.get(id);request.setAttribute("p", p);// 初始化属性,将产品对应的属性全部propertyValueDAO.init(p);List<PropertyValue> pvs = propertyValueDAO.list(p.getId());request.setAttribute("pvs", pvs);return "admin/editPropertyValue.jsp";}@Overridepublic String list(HttpServletRequest request, HttpServletResponse response, Page page) {System.out.println("调用了Product list方法");int cid = Integer.parseInt(request.getParameter("cid"));Category c = categoryDAO.get(cid);List<Product> ps = productDAO.list(cid, page.getStart(), page.getCount());int total = productDAO.getTotal(cid);page.setTotal(total);page.setParam("&cid=" + c.getId());request.setAttribute("ps", ps);request.setAttribute("c", c);request.setAttribute("page", page);return "admin/listProduct.jsp";}
}

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

相关文章:

转--Android如何在java代码中设置margin

3 在Java代码里设置button的margin(外边距)&#xff1f; 1、获取按钮的LayoutParams LinearLayout.LayoutParams layoutParams (LinearLayout.LayoutParams)button.getLayoutParams(); 2、在LayoutParams中设置margin layoutParams.setMargins(100,20,10,5);//4个参数按顺序分…

poj12月其他题解(未完)

最近编程的时间比较少啊…… poj3253 就是个合并果子&#xff0c;各种优先队列即可&#xff08;显然单调队列最优&#xff09; poj3263 线段树统计每个点被覆盖了多少次即可&#xff0c;注意要去重 poj3625 最小生成树 poj3626 bfs poj3624 01背包 poj3615 floyd即可 poj3278 简…

0409-0416的笔记

1 获取前几天&#xff0c;近几个月的时间 function getDay(day) {var today new Date();var targetday_milliseconds today.getTime() 1000 * 60 * 60 * 24 * day;today.setTime(targetday_milliseconds); //注意&#xff0c;这行是关键代码var tYear today.getFullYear();…

Linux NUMA 架构 :基础软件工程师需要知道一些知识

文章目录前言从物理CPU、core到HT(hyper-threading)UMA&#xff08;Uniform memory access&#xff09;NUMA架构NUMA下的内存分配策略1. MPOL_DEFAULT2. MPOL_BIND3. MPOL_INTERLEAVE4. MPOL_PREFERRED5. 一些NUMA架构下的内核配置总结参考前言 NUMA&#xff08;Non-Uniform m…

Java项目:网上书城+后台管理系统(java+jsp+servlert+mysql+ajax)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述(附带IW文档) 功能&#xff1a; 前台&#xff1a; * 用户模块 * 分类模块 * 图书模块 * 购物车模块 * 订单模块 后台&#xff1a; * 管理员模块 * 分类管理模块 * 图书管理模块 * 订单模块 …

java.util.concurrent包API学习笔记

newFixedThreadPool 创建一个固定大小的线程池。 shutdown()&#xff1a;用于关闭启动线程&#xff0c;如果不调用该语句&#xff0c;jvm不会关闭。 awaitTermination()&#xff1a;用于等待子线程结束&#xff0c;再继续执行下面的代码。该例中我设置一直等着子线程结束。Java…

oracle读书记录

很久没有关注自己怕博客了&#xff0c;差不多有两年了。虽然这两年来一直关注51CTO,每天上班打开电脑或者周末在家开启电脑的时候都会浏览一下&#xff0c;这已经是习惯了&#xff0c;但是把自己的blog给忘了。今天&#xff0c;周末&#xff0c;2013年12月21日&#xff0c;同往…

输入、方法的运用

/ /猜数游戏,编写一个功能,完成猜数游戏,产生一个1~10之间的随机数 //与输入的数对对比,返回结果 猜中和没猜中 import java.util.Scanner; //引入&#xff08;输入&#xff09;的util包Scanner public class HelloWorld { public static void main(String[] args) {System…

Rocksdb 利用recycle_log_file_num 重用wal-log文件

recycle_log_file_num 复用wal文件信息&#xff0c; 优化wal文件的空间分配&#xff0c;减少pagecache中文件元信息的更新开销。 为同事提供了一组rocksdb写优化参数之后有一个疑惑的现象被问到&#xff0c;发现之前的一些代码细节有遗忘情况&#xff0c;同时也发现了这个参数…

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

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述&#xff08;需求文档PPT&#xff09; 功能&#xff1a; 主页显示热销商品&#xff1b;所有商品展示&#xff0c;可进行商品搜索&#xff1b;点 击商品进入商品详情页&#xff0c;显示库存&…

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;…