基于javaweb+mysql的ssm在线商城购物商城美妆商城(前台、后台)(java+jsp+ssm+javabean+mysql+tomcat)

基于javaweb+mysql的ssm在线商城购物商城美妆商城(前台、后台)(java+jsp+ssm+javabean+mysql+tomcat)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

前台:

首页展示商品信息,注册,登录,查询商品,看商品详情,添加商品至购物车,更新、删除购物车中商品信息,下订单、订单查看等操作

后台:登录,商品上架下架、商品信息修改、添加,订单查看,类型管理:商品类型新增删除以及修改查询等

前台:

后台:

技术框架

JavaBean MVC JSP SSM(Spring SpringMVC MyBatis) MySQL Bootstrap JavaScript

基于javaweb+mysql的SSM在线商城购物商城美妆商城(前台、后台)(java+jsp+ssm+javabean+mysql+tomcat)

			 return "redirect:/article_manager/getAll.action";
			 
		 }
		 
		 //跳转至修改商品信息页面   
		 @RequestMapping("/showUpdate.action")
		 public String showUpdate(Model model,Integer id) {
			 
			 
			  //根据商品id获取商品信息
			  Article article = articleService.getArticleById(id);
			  model.addAttribute("article", article);
			  
			  //获取所有的一级商品类型
			  List<ArticleType> articleTypes = articleTypeService.findAllFirstArticleType();
			  model.addAttribute("types", articleTypes);
			 
			 return "article/updateArticle";
			 
		 }
		 
		 
		 //更新商品信息  
		 @RequestMapping("/updateArticle.action")
		 public String updateArticle(MultipartFile file,String code,Article article,HttpServletRequest request) {
			 
			
			 try {
				
				 InputStream input = file.getInputStream();
				 
				 //获取项目部署路径
				 String realPath =  request.getServletContext().getRealPath("/image/article");
				 
				 //如果上传所指定的目录不存在则创建目录
				 File f = new File(realPath);
				 if(!f.exists()) {
					 f.mkdirs();
				 }
				 
				 //获取当前上传的文件的名字   a.jpg
			     String imageName = file.getOriginalFilename();
			     if(imageName!=null && !imageName.equals("")) {

@Controller
@RequestMapping("/user_manager")
public class ManagerUserController {
	
	@Autowired
	private ManagerUserServiceI userService;
	
	
	 //跳转至登录页面	
	 @RequestMapping("/showLoginPage")
	 public String showLoginPage() {
		 
		
		 return "user/login";
		 
	 }
	 
	 
	 //处理登录请求
	 @RequestMapping("/userLogin")
	 public String userLogin(User user,Model model,HttpSession session) {
		 
		 User u = userService.getUserByNameAndPass(user);
		 if(u == null) {
			 //账号或密码不正确,给用户提示信息,并跳转至登录页面
			 model.addAttribute("tip", "您输入的账号或密码不正确请核实!");
			 
			 return "user/login";
		 }else if("0".equals(u.getDisabled())){
			 model.addAttribute("tip", "您尚未激活,请激活后再进行相关操作!");
			 return "user/login";
		 }else {
			 //跳转至首页,并将用户的信息保存至session中
			 session.setAttribute(Constant.SESSION_USER, u);
			 return "redirect:/article_manager/getAll.action";
			 
		 }
		

	 }
	 
	 //用户退出   
	 @RequestMapping("/logout")
	 public String logout(HttpSession session) {
		 
		 //将用户的信息从session中清除

        try {

            int num = 0;
            DataJoinUtils dataJoinUtils = new DataJoinUtils();

            while (true) {
                //查询订单的支付状态
                Map<String, String> map = dataJoinUtils.wxOrderQuery(orderNo);

                if (map == null) {
                    tip = "支付发生错误";
                    break;
                }

                if (map.get("trade_state").equals("SUCCESS")) {
                    tip = "ok";
                    //支付成功,应该修改数据库中订单状态,改成已支付
                    orderServiceI.updateOrderPayOrderNo(orderNo);
                    break;
                }

                Thread.sleep(3000);

                num++;

                if (num >= 1000) {
                    tip = "支付超时";
                    break;
                }
            }

        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

        return tip;
    }

    //跳转至支付成功页面
    @RequestMapping("/paySuccess")
    public String paySuccess(double amount, Model model) {
        model.addAttribute("amount", amount);
        return "paysuccess";
    }

    //跳转至支付失败页面
    @RequestMapping("/payfail")
    public String payfail(double amount, Model model) {

        try {
            //将订单相关信息保存至session中
            session.setAttribute("orderInfo", orderInfo);

        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

        //跳转至确认订单信息页面
        return "checkOrderInfo";
    }

    //提交订单
    @RequestMapping(value = "/orderSubmit.do")
    public String orderSubmit(HttpSession session, Model model) {

        try {

            String orderInfo = (String) session.getAttribute("orderInfo");
            System.out.println("orderInfo:" + orderInfo);
            //将订单信息保存至数据库
            Order order = orderServiceI.orderSubmit(orderInfo);
            model.addAttribute("order", order);
            String amount = "" + order.getAmount();
            model.addAttribute("amount", amount.length() > 5 ? amount.substring(0, 5) : amount);
            return "paysuccess";
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

        //展示支付页面
        return "pay";

    }

    //查询当前用户所有的订单信息
    @RequestMapping(value = "/showOrder.do")
    public String showOrder(Model model) {

        try {

            //根据当前用户的id查询,该用户所有的订单信息
            List<Order> orders = orderServiceI.getOrdersByUserId();
            model.addAttribute("orders", orders);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

		
		//删除购物车中商品的信息
		@RequestMapping("/deleteShopCar.do")
		public String deleteShopCar(HttpSession session,@Param("id")int id) {
			
			//删除购物车中商品的购物数量
			shopCarService.deleteShopcar(session,id);
			
			//商品加入购物车成功之后,立马展示购物车中的商品信息
			return "redirect:/shopCar/showShopCar.do";
		}

	
}
/**
 * 
 */

@Controller
@RequestMapping("/article")
public class ArticleController {
	
	@Autowired
	private ArticleServiceI articleService;
		
	
	@RequestMapping("/index")
	public String  articleIndex(Model model,String typeCode,String keyword,PageModel pageModel) {
	
		//获取所有的一级物品类型
		List<ArticleType>  articleTypes = articleService.findAllFirstArticleType();
		model.addAttribute("articleTypes", articleTypes);
		model.addAttribute("typeCode", typeCode);
		model.addAttribute("keyword", keyword);
		System.out.println("typeCode:"+typeCode);
		//如果 typecode不为空,则根据typeCode查询二级物品类型
		}else {
			return true;
		}
	}

}
/**
 * 
 */

@Controller
@RequestMapping("/order_manager")
public class ManagerOrderController {
	
	@Autowired
	private ManagerOrderServiceI orderService;
	
	
	     //订单分页查询
		 @RequestMapping("/getAll.action")
		 public String getAll(PageModel pageModel,Model model) {
			 
			 List<Order> orders = orderService.getAll(pageModel);
			 model.addAttribute("orders", orders);
			 return "order/list";
			 
		 }
		 
		 
		}
		

       return order;
		
	}

	/* (non-Javadoc)
	 * @see com.demo.shop.service.OrderServiceI#getOrdersByUserId()
	 * 根据当前用户的id查询,该用户所有的订单信息
	 */
	@Override
	public List<Order> getOrdersByUserId() {
		// TODO Auto-generated method stub
		//获取当前用户的信息
		//获取session
		HttpSession session = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getSession();
		
		//从session中获取用户信息
		int userId = ((User)session.getAttribute("session_user")).getId();
		
		
		return orderMapper.getOrdersByUserId(userId);
	}

	//修改订单状态
	@Override
	public void updateOrderPayOrderNo(String orderNo) {
		// TODO Auto-generated method stub
		orderMapper.updateOrderPayOrderNo(orderNo);
	}
	
	
	
	
}
/**
 *
 */

			 model.addAttribute("title", title);
			 model.addAttribute("typeCode", typeCode);
			 
			 
			 //获取所有的一级商品类型
			 List<ArticleType> articleTypes = articleTypeService.findAllFirstArticleType();
			 model.addAttribute("firstArticleTypes", articleTypes);
			 
			 return "article/list";
			 
		 }
		 
		 //展示商品明细信息	
		 @RequestMapping("/preArticle.action")
		 public String preArticle(Model model,Integer id) {
			 
			 //根据商品的id获取商品信息
			 Article article = articleService.getArticleById(id);
			 
			 model.addAttribute("article", article);
			 
			 return "article/preArticle";
			 
		 }
		 
		 //商品信息下架	
		 @RequestMapping("/removeArticle.action")
		 public String removeArticle(Model model,Integer id) {
			 
			 articleService.removeArticleById(id);
			 
			 return "redirect:/article_manager/getAll.action";
			 
		 }
		 
		 //添加商品  
		 @RequestMapping("/addArticle.action")
		 public String addArticle(MultipartFile file,String code,Article article,HttpServletRequest request) {
			 
			
			 try {
				
				 InputStream input = file.getInputStream();
				 
				 //获取项目部署路径
				 String realPath =  request.getServletContext().getRealPath("/image/article");
				 
				 //如果上传所指定的目录不存在则创建目录
				 File f = new File(realPath);
				 if(!f.exists()) {
					 f.mkdirs();
				 }
				 
		//从session中获取用户信息
		User user = (User)session.getAttribute("session_user");
		
		//获取用户的id
		int userId = user.getId();
		//根据用户id以及商品id从购物车表中获取相关信息
		Shopcar shopCar = shopcarMapper.getShopCarByUserIdAndArticleId(userId,id);
	
		if(shopCar!=null) {
			//该商品已经存在于当前用户的购车中,则进行商品数量的叠加
			shopcarMapper.updateShopCar(userId,id,number);
		}else {
			//该商品不存在与当前用户的购物车中
			shopcarMapper.addShopCar(userId,id,number);
		}
		
	}

	/* (non-Javadoc)
	 * @see com.demo.shop.service.ShopCarServiceI#getAllShopCarByUserId(javax.servlet.http.HttpSession)
	 */
	@Override
	public List<Shopcar> getAllShopCarByUserId(HttpSession session) {
		// TODO Auto-generated method stub
		//从session中获取用户信息
		User user = (User)session.getAttribute("session_user");
		
		//获取用户的id
		int userId = user.getId();
		
		//获取用户的购物详情信息
		List<Shopcar> shopcars = shopcarMapper.getAllShopCarByUserId(userId);
		return shopcars;
	}

	/* (non-Javadoc)
	 * //更新购物车中商品的购物数量
	 */
	@Override
	public void updateShopcar(HttpSession session, int id, int number) {
		// TODO Auto-generated method stub
		//从session中获取用户信息
		User user = (User)session.getAttribute("session_user");
		
		//获取用户的id
		int userId = user.getId();
		
		shopcarMapper.updateShopcar(userId,id,number);
		
	}

    }

    //加载添加商品类型页面
    @RequestMapping("/showAdd.action")
    public String showAdd() {

        return "articleType/view";

    }

    //通过异步请求的方式获取所有一级商品类型
    @ResponseBody
    @RequestMapping(value = "/loadFirstArticleType.action", produces = {"application/json;charset=utf-8"})
    public String loadFirstArticleType() {

        List<ArticleType> types = articleTypeService.findAllFirstArticleType();
        System.out.println("types:" + JSONArray.fromObject(types).toString());
        return JSONArray.fromObject(types).toString();

    }

    //商品类型的添加或者修改操作
    @RequestMapping("/addOrUpdate.action")
    public String addOrUpdate(ArticleType type, String parentCode) {

        if (type.getCode() != null && !type.getCode().equals("")) {
            //进行更新商品类型操作
            articleTypeService.updateArticleType(type);

        } else {
            //进行添加商品类型操作
            articleTypeService.saveArticleType(type, parentCode);
        }

        return "redirect:/articleType_manager/getAll.action";

    }

    //删除商品类型
    @RequestMapping("/deleteType.action")
    public String deleteType(@Param("code") String code) {
 * 
 */

@Controller
@RequestMapping("/user_manager")
public class ManagerUserController {
	
	@Autowired
	private ManagerUserServiceI userService;
	
	
	 //跳转至登录页面	
	 @RequestMapping("/showLoginPage")
	 public String showLoginPage() {
		 
		
		 return "user/login";
		 
	 }
	 
	 
	 //处理登录请求
	 @RequestMapping("/userLogin")
	 public String userLogin(User user,Model model,HttpSession session) {
		 
		 User u = userService.getUserByNameAndPass(user);
		 if(u == null) {
			 //账号或密码不正确,给用户提示信息,并跳转至登录页面
			 model.addAttribute("tip", "您输入的账号或密码不正确请核实!");
			 
	}
	
	
	//根据商品id获取商品详情信息
	@RequestMapping("/detail")
	public String articleDetail(Integer id,Model model) {
		//根据商品id获取商品信息
		Article article = articleService.getArticleById(id);
		model.addAttribute("article", article);
		
		// /WEB-INF/jsp/articleDetail.jsp
		return "articleDetail";
	}

}
/**
 *
 */

@Service("userService")
@Transactional
public class UserServiceImpl implements UserServiceI {

    @Autowired
    private UserMapper userMapper;

    /* (non-Javadoc)
     * //根据用户输入的账号以及密码获取用户的信息
     */
    @Override
    public User findUserByNameAndPass(User user) {
            e.printStackTrace();
            model.addAttribute("message", "注册失败!");
        }

        //返回注册页面
        return "register";

    }

}
/**
 * 
 */

@Controller
@RequestMapping("/user_manager")
public class ManagerUserController {
	
	@Autowired
	private ManagerUserServiceI userService;
	
	
	 //跳转至登录页面	
	 @RequestMapping("/showLoginPage")
	 public String showLoginPage() {
		 
		
		 return "user/login";
		 
public class ManagerArticleController {
	
	 @Autowired   
	 private ManagerArticleServiceI articleService;
	 
	 @Autowired   
	 private ManagerArticleTypeServiceI articleTypeService;
	
	
	     //展示首页商品信息	
		 @RequestMapping("/getAll.action")
		 public String getAllArticles(Model model,String typeCode,String title,PageModel pageModel) {
			 
			 //根据商品类型以及商品的标题获取商品信息
			 List<Article> articles = articleService.getAllArticles(typeCode,title,pageModel);
			 model.addAttribute("articles", articles);
			 
			 model.addAttribute("pageModel", pageModel);
			 
			 
			 model.addAttribute("title", title);
			 model.addAttribute("typeCode", typeCode);
			 
			 
			 //获取所有的一级商品类型
			 List<ArticleType> articleTypes = articleTypeService.findAllFirstArticleType();
			 model.addAttribute("firstArticleTypes", articleTypes);
			 
			 return "article/list";
			 
		 }
		 
		 //展示商品明细信息	
		 @RequestMapping("/preArticle.action")
		 public String preArticle(Model model,Integer id) {
			 
			 //根据商品的id获取商品信息
			 Article article = articleService.getArticleById(id);
			 
			 model.addAttribute("article", article);
			 
			 return "article/preArticle";
			 
		 }
		 
		 //商品信息下架	
		 @RequestMapping("/removeArticle.action")
		 public String removeArticle(Model model,Integer id) {
			 
			 articleService.removeArticleById(id);
                return new PasswordAuthentication("luochunlong666@126.com", "luochunlong123");
            }
        };
        
        //3).获得Session实例
        Session mailSession = Session.getInstance(props, auth);
        
        //4).创建SMTPMessage,要提供session
        SMTPMessage msg = new SMTPMessage(mailSession);
        
       // 5).设置Message的内容,包括发送者、接收者、消息体
	     // 设置邮件标题,没有标题的邮件几乎都会被认为是垃圾邮件被系统退回。
	     msg.setSubject("用户注册激活邮件,请勿回复,按照指引激活");
	     // 设置消息的HTML格式的内容
	     msg.setContent("<a href='http://127.0.0.1:8080/"+request.getContextPath()+"/user/active?activeCode="+user.getActive()+"' target='_blank'>恭喜您注册成功,点击该链接进行激活,此邮件无需回复!</a>","text/html;charset=UTF-8");
	     // 设置发送人
		msg.setFrom(new InternetAddress("luochunlong666@126.com"));
	     // 设置接收者
	     // 接收者类型由:TO(收件人)、CC(抄送)、BCC(密送)
		msg.setRecipient(RecipientType.TO,new InternetAddress(user.getEmail()));
    
        // 发送邮件
		Transport.send(msg);
		
	}
	
	
	

	/* (non-Javadoc)
	 * @see com.demo.shop.service.UserServiceI#activeUser(java.lang.String)
	 * //用户信息激活  
	 */
	@Override
	public void activeUser(String activeCode) {
		// TODO Auto-generated method stub
		userMapper.activeUser(activeCode);
	}

	/* (non-Javadoc)
	 * 根据账号获取用户信息
	 */
	@Override
	public String getUserByLoginName(String loginName) {
		// TODO Auto-generated method stub
		User user = userMapper.getUserByLoginName(loginName);
		return user == null ? "not" : "exist";
	}
	
	
    
}
                    orderServiceI.updateOrderPayOrderNo(orderNo);
                    break;
                }

                Thread.sleep(3000);

                num++;

                if (num >= 1000) {
                    tip = "支付超时";
                    break;
                }
            }

        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }

        return tip;
    }

    //跳转至支付成功页面
    @RequestMapping("/paySuccess")
    public String paySuccess(double amount, Model model) {
        model.addAttribute("amount", amount);
        return "paysuccess";
    }

    //跳转至支付失败页面
    @RequestMapping("/payfail")
    public String payfail(double amount, Model model) {
        model.addAttribute("amount", amount);
        return "payfail";
    }
}
/**
 * 
 */

public class LoginFilter extends HandlerInterceptorAdapter {

	
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		 
		//从session中获取用户信息
		User user = (User)request.getSession().getAttribute("session_user");
		
		if(user == null) {
			request.setAttribute("error_message", "您尚未登录,请登录后再进行相关操作!");
			//跳转至登录页面
			request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
		    return false;
		}else {
			return true;
		}
	}

	   
}
/**
 * 
 */

public interface ShopCarServiceI {

	/**
	 * @param session
	 * @param id
	 * @param number
	 * 将商品信息加入至购物车
	 */
	void addArticleToShopCar(HttpSession session, int id, int number);

	/**
	 * @param session
	 * @return
	 * 展示购物车中的商品信息
	 */
	List<Shopcar> getAllShopCarByUserId(HttpSession session);

	/**
	 * @param session

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值