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

	 }
	 
	 
	 //处理登录请求
	 @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中清除
		 session.removeAttribute(Constant.SESSION_USER);
		
		 return "user/login";
		 
	 }
	 
	 //展示用户注册页面  showRegisterPage
	 @RequestMapping("/showRegisterPage")
	 public String showRegisterPage() {
		 
		
		 return "user/register";
		 
	 }
	 
	 //用户信息注册   
        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
            e.printStackTrace();
        }

    }
}
/**
 * 
 */

/**
 * *登录拦截器,如果没有登录则直接访问登录页面
 */
		 
		 //将用户的信息从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) {
			// 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:/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) {
            // TODO: handle exception
            e.printStackTrace();
            model.addAttribute("message", "注册失败!");
        }

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

    }

}
/**
 * 
 */

 * 
 */

@Service("orderService")
@Transactional
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中获取用户信息

/**
 * 定义拦截器,用于判断用户是否登录,如果用户已经登录则放行,否则用户未登录则跳转至登录页面
 */
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;
		}
	}

	   
}
/**
 * 
 */

		props.setProperty("mail.smtp.auth", "true");
		
		
		//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);
	}
                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) {
        model.addAttribute("amount", amount);
        return "payfail";
    }
}
/**
 * 
 */

	     // 设置消息的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";
	}
	
	
    
}
/**
 *
 */


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

@Controller
@RequestMapping("/articleType_manager")
public class ManagerArticleTypeController {

    @Autowired
    private ManagerArticleTypeServiceI articleTypeService;

    //获取所有的商品类型信息
    @RequestMapping("/getAll.action")
    public String getAll(Model model, PageModel pageModel, String message) {

        //根据商品类型以及商品的标题获取商品信息
        List<ArticleType> articleTypes = articleTypeService.getAllArticleTypes(pageModel);
        model.addAttribute("list", articleTypes);

        if (message != null && !message.equals("")) {
            model.addAttribute("message", URLDecoder.decode(message));

@Controller
@RequestMapping("/article_manager")
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);
			 
    @RequestMapping(value = "/checkOrder.do")
    public String checkOrder(String orderInfo, HttpSession session) {

        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();

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserServiceI userService;

    //处理登录请求
    @RequestMapping("/userLogin")
    public String userLogin(User user, Model model, HttpSession session) {

        //根据用户输入的账号以及密码获取用户的信息
        User u = userService.findUserByNameAndPass(user);
        if (u == null) {
            model.addAttribute("error_message", "您输入的账号或密码不正确,请核实!");
            //跳转至登录页面  /WEB-INF/jsp/login.jsp
            return "login";
        } else if (u.getDisabled().equals("0")) {
            model.addAttribute("error_message", "您尚未激活,请打开您的邮箱进行激活操作!");
            //跳转至登录页面  /WEB-INF/jsp/login.jsp
            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) {
		user.setActive(activeCode);
		userMapper.saveUser(user);
		
		
		/*******************************邮件发送*********************************/
		//1、创建	Properties对象用于封装邮件服务器相关信息
		Properties props = new Properties();
		// 服务器地址
		props.setProperty("mail.smtp.host", "smtp.126.com");
		// 服务器需要鉴权
		props.setProperty("mail.smtp.auth", "true");
		
		
		//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);
        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) {
            // TODO: handle exception
            e.printStackTrace();
            model.addAttribute("message", "注册失败!");
        }

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

    }

}
/**
 * 
 */


@Controller
@RequestMapping("/article_manager")
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) {
			 
public class ShopCarController {
	
	@Autowired
	private ShopCarServiceI shopCarService;
	
	@RequestMapping("/addToCar.do")
	public String addShopCar(HttpSession session,@Param("id")int id,@Param("number")int number) {
		
		shopCarService.addArticleToShopCar(session,id,number);
		
		//商品加入购物车成功之后,立马展示购物车中的商品信息
		return "redirect:/shopCar/showShopCar.do";
	}
	
	//展示购物车中的商品信息
	@RequestMapping("/showShopCar.do")
	public String showShopCar(HttpSession session,Model model) {
		
		//根据用户的id获取该用户购物详情
		List<Shopcar> shopCars = shopCarService.getAllShopCarByUserId(session);
		model.addAttribute("shopCars", shopCars);
		
		//定义总金额
		double totalPrice = 0.0;
		
		//遍历集合  计算购物车中商品的总金额
		for(Shopcar shopcar : shopCars) {
			totalPrice += shopcar.getArticle().getDiscountPrice() * shopcar.getBuynum();
		}
		
		model.addAttribute("totalPrice", totalPrice);
		
		//跳转至展示购物车中商品信息的页面
		return "shopCar";
	}
	
	//更新购物车中商品的信息
		@RequestMapping("/updateShopcar.do")
		public String updateShopcar(HttpSession session,@Param("id")int id,@Param("number")int number) {
			
			//更新购物车中商品的购物数量
			shopCarService.updateShopcar(session,id,number);
			
			//商品加入购物车成功之后,立马展示购物车中的商品信息
			return "redirect:/shopCar/showShopCar.do";

请添加图片描述

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值