基于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)

	 * @param loginName
	 * @param password
	 * @return
	 * 根据账号以及密码获取用户信息
	 */
	User getUserByNameAndPass(User user);

	/**
	 * @param user
	 *  //用户信息注册   
	 */
	void saveUser(User user,HttpServletRequest request) throws Exception;

	/**
	 * @param activeCode
	 * //用户信息激活  
	 */
	void activeUser(String activeCode);

	/**
	 * @param loginName
	 * @return
	 * 根据账号获取用户信息
	 */
	String getUserByLoginName(String loginName);

	

}
/**
 * 
 */

public interface UserServiceI {
		 
		 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中清除
		 session.removeAttribute(Constant.SESSION_USER);
		
		 return "user/login";
		 
	 }
	 
	 //展示用户注册页面  showRegisterPage
	 @RequestMapping("/showRegisterPage")
	 public String showRegisterPage() {
		 
		
		 return "user/register";
		 
	 }
	 
	 //用户信息注册   
	 @RequestMapping("/userRegister")
	 public String userRegister(User user,Model model,HttpServletRequest request) {
		 
		 try {
			 userService.saveUser(user,request);
            return "login";
        } else {
            //将用户信息存放在session中,直接跳转至首页
            session.setAttribute("session_user", u);
            return "redirect:/article/index";
        }
    }

    //用户退出
    @RequestMapping("/logout")
    public String logout(HttpSession session) {

        //将用户信息从session中清除
        session.removeAttribute("session_user");
        //用户退出之后重定向至  首页
        return "redirect:/article/index";

    }

    //异步校验账号是否存在
    @ResponseBody
    @RequestMapping(value = "/validLoginName", produces = {"application/text;charset=utf-8"})
    public String validLoginName(String loginName) {

        //校验账号是否存在
        String result = userService.validLoginName(loginName);
        return result;
    }

    //用户注册
    @RequestMapping(value = "/userRegister")
    public String userRegister(Model model, HttpServletRequest request, User user) {

        try {

            userService.saveUser(user, request);
            model.addAttribute("message", "注册成功!");
        } catch (Exception e) {
public class OrderServiceImpl implements OrderServiceI {
	
	@Autowired
	private OrderMapper orderMapper;
	
	@Autowired
	private OrderItemMapper orderItemMapper;

	/* (non-Javadoc)
	 * 提交订单
	 * #1_2_216.0#5_1_158.4   == >  1_2_216.0#5_1_158.4
	 */
	@Override
	public Order orderSubmit(String orderInfo) {
		// TODO Auto-generated method stub
		//创建订单对象
		Order order = new Order();
		try {
			String[]  orderInfos = orderInfo.substring(1).split("#");
			
			
			//指定下单时间
			order.setCreateDate(new Date());
			
			//获取session
			HttpSession session = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getSession();
			
			//从session中获取用户信息
			int userId = ((User)session.getAttribute("session_user")).getId();
			
			//指定订单属于哪一个用户
			order.setUserId(userId);
			
			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
			//设置订单编号
			order.setOrderCode("PO-"+sdf.format(new Date())+userId);
			
			
			//定义订单总金额
			double totalPrice = 0.0;
			
			//创建集合用于封装订单详情信息
			List<OrderItem> items = new ArrayList<>();
			for(String  info: orderInfos) {
				String[] infos =info.split("_");
				
				//获取商品id
				int articleId = Integer.valueOf(infos[0]);
				//购买数量
				int buyNum = Integer.valueOf(infos[1]);
				
				OrderItem item = new OrderItem();
				item.setArticleId(articleId);
				item.setOrderNum(buyNum);
			order.setAmount(totalPrice);
			
			//保存订单信息 ,保存完订单信息之后,需要获取订单的id,因为需要将订单的id存放在订单详情中
			orderMapper.saveOrder(order);
			
			//获取订单主键的值
			int orderId = order.getId();
			for(OrderItem item : items) {
				item.setOrderId(orderId);
				//保存订单明细
				orderItemMapper.saveItem(item);
			}
			
			
			/*****************************生成支付二维码*******************************/
			DataJoinUtils dataJoinUtils = new DataJoinUtils();

			Map<String, String> result =  dataJoinUtils.wxPay("http://localhost:8080/ecShop/article/index", order.getOrderCode(), "1", "127.0.0.1", "化妆品");
			//将二维码地址封装至order对象中
			order.setImgUrl(result.get("code_url"));
		
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		

       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) {
			 
		 }
		 
		 //添加商品  
		 @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();
				 }
				 
				 //获取当前上传的文件的名字   a.jpg
			     String imageName = file.getOriginalFilename();
			     //重新生成新的文件名
			     String  newFileName = UUID.randomUUID().toString() + imageName.substring(imageName.lastIndexOf("."), imageName.length());
			     System.out.println("文件路径:"+(realPath+File.separator+newFileName));
			     //构建输出流
			     OutputStream out = new FileOutputStream(realPath+File.separator+newFileName);
			     
			     byte[] data = new byte[1024];
			     
			     int len = 0;
			     
			     while((len = input.read(data)) != -1) {
			    	 out.write(data, 0, len);
			    	 out.flush();
			     }
			     
			     out.close();
			     input.close();
			     
			     //指定商品类型
			     article.setTypeCode(code);
		//2、创建Authenticator的实例,实现账户、密码的鉴权。
        Authenticator auth = new Authenticator(){
            protected PasswordAuthentication getPasswordAuthentication()
            {
                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)
	 * 根据账号获取用户信息
	 */
		//从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);
		
        //校验账号是否存在
        String result = userService.validLoginName(loginName);
        return result;
    }

    //用户注册
    @RequestMapping(value = "/userRegister")
    public String userRegister(Model model, HttpServletRequest request, User user) {

        try {

            userService.saveUser(user, request);
            model.addAttribute("message", "注册成功!");
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
            model.addAttribute("message", "注册失败!");
        }

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

    }

}
/**
 * 
 */

@Controller
@RequestMapping("/user_manager")
public class ManagerUserController {
	
	@Autowired
@Transactional
public class ShopCarServiceImpl implements ShopCarServiceI {
	
	@Autowired
	private ShopcarMapper shopcarMapper;

	/* (non-Javadoc)
	 * 将商品信息加入至购物车
	 */
	@Override
	public void addArticleToShopCar(HttpSession session, int id, int number) {
		// TODO Auto-generated method stub
		
		//从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();
			    	 out.flush();
			     }
			     
			     out.close();
			     input.close();
			     
			     //指定商品类型
			     article.setTypeCode(code);
			     
			     article.setImage(newFileName);
			     
			     //保存商品信息
			     articleService.saveArticle(article);
			     request.setAttribute("tip", "商品添加成功!");
			 
			 } catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			     request.setAttribute("tip", "商品添加失败:"+e.getMessage());
			}
			 
			 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 {
				
			 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中清除
		 session.removeAttribute(Constant.SESSION_USER);
		
		 return "user/login";
		 
	 }
	 
	 //展示用户注册页面  showRegisterPage
	 @RequestMapping("/showRegisterPage")
	 public String showRegisterPage() {
		 
		
		 return "user/register";
		 
	 }
	 
	 //用户信息注册   
	 @RequestMapping("/userRegister")
	 public String userRegister(User user,Model model,HttpServletRequest request) {
		 
		 try {
			 userService.saveUser(user,request);
			 model.addAttribute("tip", "注册成功!");
		} catch (Exception e) {
	 public String showRegisterPage() {
		 
		
		 return "user/register";
		 
	 }
	 
	 //用户信息注册   
	 @RequestMapping("/userRegister")
	 public String userRegister(User user,Model model,HttpServletRequest request) {
		 
		 try {
			 userService.saveUser(user,request);
			 model.addAttribute("tip", "注册成功!");
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
			 model.addAttribute("tip", "注册失败:"+e.getMessage());
		}
		
		 return "user/login";
		 
	 }
	 
	 //异步校验账号是否存在
	 @ResponseBody
	 @RequestMapping("/validName")
	 public String validName(String loginName) {
		 
		 String  tip = userService.getUserByLoginName(loginName);
		
		 return tip;
		 
	 }
}
/**
 * 
 */

        }

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

    }

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

        String message = articleTypeService.deleteType(code);
        return "redirect:/articleType_manager/getAll.action?message=delete success";

    }
}
/**
 * 
 */

@Service("shopCarServiceI")
@Transactional
public class ShopCarServiceImpl implements ShopCarServiceI {
	
	@Autowired
	private ShopcarMapper shopcarMapper;

	/* (non-Javadoc)
		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
	 * @param id
	 * @param number
	 * 更新购物车中商品的购物数量
	 */

@Service(value="muserService")
@Transactional
public class ManagerUserServicempl implements ManagerUserServiceI {
	
	@Autowired
	private ManagerUserMapper userMapper;

	/* (non-Javadoc)
	 *  根据账号以及密码获取用户信息
	 */
	@Override
	public User getUserByNameAndPass(User user) {
		// TODO Auto-generated method stub
		return userMapper.getUserByNameAndPass(user);
	}

	/* (non-Javadoc)
	 * //用户信息注册   
	 */
	@Override
	public void saveUser(User user,HttpServletRequest request) throws Exception {
                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";
	}
	

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

    @Autowired
    private UserMapper userMapper;

    /* (non-Javadoc)
     * //根据用户输入的账号以及密码获取用户的信息
     */
    @Override
    public User findUserByNameAndPass(User user) {
        // TODO Auto-generated method stub
        User u = userMapper.findUserByNameAndPass(user);
        return u;
    }

    /* (non-Javadoc)
     * //异步校验账号是否存在
     */
    @Override
    public String validLoginName(String loginName) {
        // TODO Auto-generated method stub

        User user = userMapper.validLoginName(loginName);
        if (user != null) {
            return "您输入的账号已经存在!";
        }
        return "";
    }

    /* (non-Javadoc)
     * @see com.demo.shop.service.UserServiceI#saveUser(com.demo.shop.bean.User)
     *  //用户注册
     */
    @Override
    public void saveUser(User user, HttpServletRequest request) {
        // TODO Auto-generated method stub
        try {
            user.setCreateDate(new Date());
            user.setDisabled("1");
            userMapper.saveUser(user);
        } catch (Exception e) {
            // TODO: handle exception

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值