基于javaweb+mysql的jsp+servlet网上商城系统(java+jsp+servlert+mysql+ajax)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的JSP+Servlet网上商城系统(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等等。
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult error = JSONResult.errorMsg("订单提交失败!");
resp.getWriter().println(JsonUtil.javaObjectToJson(error));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 保存商品
* @throws IOException
*/
public void addGoods(HttpServletRequest req,HttpServletResponse resp) throws IOException {
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
FileUploadUtil upFile = new FileUploadUtil();
ServletContext servletContext = req.getSession().getServletContext();
List<FileItem> items= upFile.getRequsetFileItems(req,servletContext);
//保存所有用户提交的 表单数据 的map
Map<String, String> formData = new HashMap<>();
try {
//遍历
for (FileItem file : items) {
if(!file.isFormField()) {
String fileSuffix = FileUploadUtil.getFileSuffix(file).toUpperCase();
//必须是jpg或png 图片文件才能进行上传操作
if("JPG".equals(fileSuffix) || "PNG".equals(fileSuffix)) {
//生成新图片名
String imgName = FileUploadUtil.getImgNewName(fileSuffix);
resp.setContentType("text/html;charset=utf-8");
FileUploadUtil upFile = new FileUploadUtil();
ServletContext servletContext = req.getSession().getServletContext();
List<FileItem> items= upFile.getRequsetFileItems(req,servletContext);
//保存所有用户提交的 表单数据 的map
Map<String, String> formData = new HashMap<>();
try {
//遍历
for (FileItem file : items) {
if(!file.isFormField()) {
String fileSuffix = FileUploadUtil.getFileSuffix(file).toUpperCase();
//必须是jpg或png 图片文件才能进行上传操作
if("JPG".equals(fileSuffix) || "PNG".equals(fileSuffix)) {
//生成新图片名
String imgName = FileUploadUtil.getImgNewName(fileSuffix);
FileUploadUtil.saveFile(file, savePath, imgName);
formData.put("imgUrl",imgName);
}
}else {
//非文件数据存入
formData.put(file.getFieldName(), file.getString("utf-8"));
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Goods goods = new Goods();
goods.setName(formData.get("goodsName"));
goods.setNum(Integer.parseInt(formData.get("num")));
goods.setPrice(Double.parseDouble(formData.get("price")));
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
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("sjb");
order.setGoods_id(99);
order.setGoods_num(3);
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();
}
}
/**
* 保存商品
* @throws IOException
*/
public void addGoods(HttpServletRequest req,HttpServletResponse resp) throws IOException {
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
FileUploadUtil upFile = new FileUploadUtil();
ServletContext servletContext = req.getSession().getServletContext();
List<FileItem> items= upFile.getRequsetFileItems(req,servletContext);
e.printStackTrace();
}
}
/**
* 删除商品
* @throws IOException
*/
public void deleteGoods(HttpServletRequest req,HttpServletResponse resp) throws IOException {
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
int id = Integer.parseInt(req.getParameter("id"));
int d = service.deleteGoodsById(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();
}
}
}
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");
User user =(User) req.getSession().getAttribute("user");
int id = user.getId();
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();
}
}
/**
* 成功修改密码后,清除session中的数据,并且重新跳转到登录页
* @param req
* @param resp
*/
public void afterModifyPassword(HttpServletRequest req, HttpServletResponse resp) {
req.getSession().removeAttribute("user");
/**
* 退出登录
*/
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();
}
}
/**
* 修改密码
goods.setName(req.getParameter("goodsName"));
goods.setNum(Integer.parseInt(req.getParameter("num")));
goods.setPrice(Double.parseDouble(req.getParameter("price")));
goods.setType(req.getParameter("type"));
goods.setColor(req.getParameter("color"));
goods.setMemory(req.getParameter("memory"));
goods.setDescription(req.getParameter("description"));
int d = service.updateGoodsById(goods);
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 deleteGoods(HttpServletRequest req,HttpServletResponse resp) throws IOException {
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
int id = Integer.parseInt(req.getParameter("id"));
int d = service.deleteGoodsById(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();
}
}
}
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 {
String idd = req.getParameter("idd");
service.deleteCartGoods(id+"", idd);
Map<String, List<Goods>> allGoods = service.getCartGoods(id+"");
try {
req.setAttribute("cart", allGoods);
req.getRequestDispatcher("/showcart.jsp").forward(req, resp);
return;
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取所有商品列表
* @param req
* @param resp
*/
public void carChart(HttpServletRequest req, HttpServletResponse resp) {
User user = (User) req.getSession().getAttribute("user");
int id =232323;
if(user!=null) {
id = user.getId();
}
System.out.println(id+"dddddddddddddddd");
Map<String, List<Goods>> allGoods = service.getCartGoods(id+"");
try {
req.setAttribute("cart", allGoods);
req.getRequestDispatcher("/showcart.jsp").forward(req, resp);
return;
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取所有商品列表
* @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();
req.getRequestDispatcher("/productInfo_user.jsp").forward(req, resp);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取商品的详细信息
* @param reqaddCar
* @param resp
*/
public void addCar(HttpServletRequest req, HttpServletResponse resp) {
int id =Integer.parseInt(req.getParameter("id"));
User user = (User) req.getSession().getAttribute("user");
int ids =232323;
if(user!=null) {
ids = user.getId();
}
Goods goodsInfo = service.getGoodsInfoById(id);
try {
service.addCar(goodsInfo,ids+"");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(ids+"dddddddddddddddd");
Map<String, List<Goods>> allGoods = service.getCartGoods(ids+"");
try {
req.setAttribute("cart", allGoods);
req.getRequestDispatcher("/showcart.jsp").forward(req, resp);
return;
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取商品的详细信息
* @param reqaddCar
* @param resp
int length = timestamp.length();
if (length > 3) {
return Integer.valueOf(timestamp.substring(0,length-3));
} else {
return 0;
}
}
/**
* 这个函数的功能是得到新的图片名称
* @param fileSuffix 图片的后缀
* @return
*/
public static String getImgNewName(String fileSuffix) {
Date date=new Date();
int second=getSecondTimestamp(date);
String fileName=String.valueOf(second)+"."+fileSuffix;
return fileName;
}
/**
* 获取文件后缀名, 只要jpg或者png格式
* @param item
* @return 如果是jpg,则返回jpg
* 如果png,则返回png
* 否则返回null
*/
public static String getFileSuffix(FileItem item) {
String fileFullName=item.getName();
File fileInfo=new File(fileFullName);
String suffix = fileInfo.getName().substring(fileInfo.getName().lastIndexOf(".") + 1);
if(suffix.equals("jpg") ||suffix.equals("png") ) {
return suffix;
}
return null;
}
}
/**
* 删除订单
* @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();
}
}
}
@WebServlet("/frontstage_userServlet")
public class UserServlet extends HttpServlet {
UserService service = new UserService();
}
// 将上面图片输出到浏览器 ImageIO
graphics.dispose();// 释放资源
ImageIO.write(bufferedImage, "jpg", response.getOutputStream());
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
/**
* 取其某一范围的color
*
* @param fc
* int 范围参数1
* @param bc
* int 范围参数2
* @return Color
*/
private Color getRandColor(int fc, int bc) {
// 取其随机颜色
Random random = new Random();
if (fc > 255) {
fc = 255;
}
if (bc > 255) {
bc = 255;
}
int r = fc + random.nextInt(bc - fc);
int g = fc + random.nextInt(bc - fc);
int b = fc + random.nextInt(bc - fc);
return new Color(r, g, b);
}
}
/**
* 向前端页面返回商品数据列表
*/
public void getGoodsList(HttpServletRequest req,HttpServletResponse resp) {
List<Goods> allGoods = service.getAllGoods();
req.setAttribute("goodsList", allGoods);
try {
req.getRequestDispatcher("/backstage/tgls/goodsManage/goods_list.jsp").forward(req, resp);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @throws IOException
* 根据商品名查询商品
* @param req
* @param resp
* @throws
*/
public void getGoodsListByName(HttpServletRequest req,HttpServletResponse resp) throws IOException {
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
String name = req.getParameter("goodsName");
String type = req.getParameter("type");
Map<String,String> parmas = new HashMap<>();
parmas.put("name", name);
parmas.put("type", type);
List<Goods> list = service.getGoodsByName(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 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));
}
/**
* 用户名重名检测
*
* @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));
}
/**
* 成功修改密码后,清除session中的数据,并且重新跳转到登录页
* @param req
* @param resp
*/
public void afterModifyPassword(HttpServletRequest req, HttpServletResponse resp) {
req.getSession().removeAttribute("user");
try {
//使用iframe时,要避免这种直接跳转的方式
// 此时只会让内嵌的iframe跳转到登录页,并非整个页面
// resp.sendRedirect("backstage/login.jsp");
PrintWriter writer = resp.getWriter();
writer.print("<html>");
writer.print("<script>");
writer.print("window.open('"+ req.getContextPath()+"/backstage/login.jsp','_top')");
writer.print("</script>");
writer.print("</html>");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 退出登录
*/
public void logout(HttpServletRequest req, HttpServletResponse resp) {
req.getSession().removeAttribute("user");
try {
resp.sendRedirect("backstage/login.jsp");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
*修改商品信息时,如果有修改图片,先将图片进行修改
* @throws IOException
*/
public void upGoodsImage(HttpServletRequest req,HttpServletResponse resp) throws IOException {
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
FileUploadUtil upFile = new FileUploadUtil();
ServletContext servletContext = req.getSession().getServletContext();
List<FileItem> items= upFile.getRequsetFileItems(req,servletContext);
String imgName = null;
try {
//遍历
for (FileItem file : items) {
if(!file.isFormField()) {
String fileSuffix = FileUploadUtil.getFileSuffix(file);
//必须是jpg或png 图片文件才能进行上传操作
if("jpg".equals(fileSuffix) || "png".equals(fileSuffix)) {
//生成新图片名
imgName = FileUploadUtil.getImgNewName(fileSuffix);
FileUploadUtil.saveFile(file, savePath, imgName);
}
}
}
int d = service.updateGoodsImgById(imgName, Integer.parseInt(req.getParameter("id")));
if(d>0) {
JSONResult ok = JSONResult.ok(imgName);
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult errorMsg = JSONResult.errorMsg("修改失败,请重试");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 修改商品
* @throws IOException