Java项目:体育用品商城(java+SpringBoot+jsp+html+maven+mysql)

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

项目介绍

本项目为前后台管理系统,包括管理员与普通用户两种角色;
管理员角色包含以下功能:
管理员登录,用户管理,商品类型管理,商品管理,订单信息管理,用户留言管理,资讯管理等功能。

用户角色包含以下功能:
用户首页,用户登录,商品推荐,资讯信息,留言板,查看商品,提交订单,查看订单信息,个人资料管理等功能。

ps:推荐模块用了协同过滤推荐算法,下订单模块用的是百度地图api。本商城可以修改为任意商城不止是体育商城。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;

5.数据库:MySql 5.7版本;

6.是否Maven项目:是;

技术栈

1. 后端:SpringBoot

2. 前端:HTML+JSP+CSS+JavaScript+jQuery

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中application.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,在浏览器中输入http://localhost:8110/ 登录
管理员账号/密码:admin/admin
用户账号/密码: user/123456

 

 

 

 

 

用户相关接口:

/**
 * 用户相关接口
 */
@Controller
@RequestMapping("/index")
public class UserController{
	
	@Resource
	private UserService userService;
	@Resource
	private GoodService goodService;
	@Resource
	private OrderService orderService;
	@Resource
	private CartService cartService;

	
	/**
	 * 用户注册
	 * @return
	 */
	@GetMapping("/register")
	public String reg() {
		return "/index/register.jsp";
	}
	
	/**
	 * 用户注册
	 * @return
	 */
	@PostMapping("/register")
	public String register(Users user, HttpServletRequest request){
		if (user.getUsername().isEmpty()) {
			request.setAttribute("msg", "用户名不能为空!");
		}else if (Objects.nonNull(userService.getByUsername(user.getUsername()))) {
			request.setAttribute("msg", "用户名已存在!");
		}else {
			userService.add(user);
			request.setAttribute("msg", "注册成功 可以去登录了!");
			return "/index/login.jsp";
		}
		return "/index/register.jsp";
	}
	
	/**
	 * 用户登录
	 * @return
	 */
	@GetMapping("/login")
	public String log() {
		return "/index/login.jsp";
	}
	
	/**
	 * 用户登录
	 * @return
	 */
	@PostMapping("/login")
	public String login(Users user, HttpServletRequest request, HttpSession session) {
		Users loginUser = userService.getByUsernameAndPassword(user.getUsername(), user.getPassword());
		if (Objects.isNull(loginUser)) {
			request.setAttribute("msg", "用户名或密码错误");
			return "/index/login.jsp";
		}
		session.setAttribute("user", loginUser);
		// 还原购物车
		session.setAttribute("cartCount", cartService.getCount(loginUser.getId()));
		String referer = request.getHeader("referer"); // 来源页面
		System.out.println(referer); //TODO
		return "redirect:index";
	}

	/**
	 * 注销登录
	 * @return
	 */
	@GetMapping("/logout")
	public String logout(HttpSession session) {
		session.removeAttribute("user");
		session.removeAttribute("cartCount");
		return "/index/login.jsp";
	}

	/**
	 * 查看积分
	 */
	@GetMapping("/mypoint")
	public String mypoint() {
		return "/index/mypoint.jsp";
	}

	//积分充值
	@RequestMapping("/addPoint")
	public String addPoint(double point,HttpSession session,HttpServletRequest request){
		Users users = (Users)session.getAttribute("user");
		BigDecimal bigDecimal = new BigDecimal(Double.toString(point)).add(new BigDecimal(Double.toString(users.getPoint())));
		users.setPoint(bigDecimal.doubleValue());
		int count = userService.updatePoint(users);
		if(count > 0){
			session.setAttribute("user",users);
			request.setAttribute("msg","充值成功!");
		}else{
			request.setAttribute("msg","充值失败!");
		}
		return "/index/mypoint.jsp";
	}

	/**
	 * 查看购物车
	 * @return
	 */
	@GetMapping("/cart")
	public String cart(HttpServletRequest request, HttpSession session) {
		Users user = (Users) session.getAttribute("user");
		request.setAttribute("cartList", cartService.getList(user.getId()));
		request.setAttribute("cartCount", cartService.getCount(user.getId()));
		request.setAttribute("cartTotal", cartService.getTotal(user.getId()));
		return "/index/cart.jsp";
	}
	
	/**
	 * 购物车总金额
	 * @return
	 */
	@GetMapping("/cartTotal")
	public @ResponseBody int cartTotal(HttpSession session){
		Users user = (Users) session.getAttribute("user");
		return cartService.getTotal(user.getId());
	}
	
	/**
	 * 加入购物车
	 * @return
	 */
	@PostMapping("/cartBuy")
	public @ResponseBody boolean cartBuy(int goodId, HttpSession session){
		Users user = (Users) session.getAttribute("user");
		return cartService.save(goodId, user.getId());
	}
	
	/**
	 * 添加数量
	 */
	@PostMapping("/cartAdd")
	public @ResponseBody boolean cartAdd(int id){
		return cartService.add(id);
	}
	
	/**
	 * 减少数量
	 */
	@PostMapping("/cartLess")
	public @ResponseBody boolean cartLess(int id){
		return cartService.less(id);
	}
	
	/**
	 * 删除
	 */
	@PostMapping("/cartDelete")
	public @ResponseBody boolean cartDelete(int id){
		return cartService.delete(id);
	}

	
	/**
	 * 查看订单
	 * @return
	 * @throws UnsupportedEncodingException 
	 */
	@GetMapping("/order")
	public String order(HttpServletRequest request, HttpSession session,
			@RequestParam(required=false, defaultValue="1")int page, 
			@RequestParam(required=false, defaultValue="6")int size) throws UnsupportedEncodingException{
		Users user = (Users) session.getAttribute("user");
		request.setAttribute("orderList", orderService.getListByUserid(user.getId(), page, size));
		request.setAttribute("pageHtml", PageUtil.getPageHtml(request, orderService.getCountByUserid(user.getId()), page, size));
		return "/index/order.jsp";
	}
	
	/**
	 * 直接购买
	 * @return
	 * @throws MyException 
	 */
	@PostMapping("/orderAdd")
	public String orderAdd(int goodId, HttpSession session) throws MyException{
		Users user = (Users) session.getAttribute("user");
		int orderId = orderService.add(goodId, user.getId());
		return "redirect:orderPay?id="+orderId; // 跳转支付
	}
	
	/**
	 * 购物车结算
	 * @return
	 * @throws MyException 
	 */
	@GetMapping("/orderSave")
	public String orderSave(ServletRequest request, HttpSession session) throws MyException{
		Users user = (Users) session.getAttribute("user");
		int orderId = orderService.save(user.getId());
		session.removeAttribute("cartCount"); // 清理购物车session
		return "redirect:orderPay?id="+orderId; // 跳转支付
	}
	
	/**
	 * 支付页面
	 * @return
	 */
	@GetMapping("/orderPay")
	public String orderPay(int id, ServletRequest request) {
		request.setAttribute("order", orderService.get(id));
		return "/index/pay.jsp";
	}
	
	/**
	 * 支付(模拟)
	 * @return
	 */
	@PostMapping("/orderPay")
	@ResponseBody
	public int orderPay(Orders order,HttpSession session) {
		Users users = (Users) session.getAttribute("user");
		BigDecimal bigDecimal = new BigDecimal(0);
		if(order.getPaytype() == Orders.PAYTYPE_OFFLINE){//为积分支付时
			double d1 = order.getTotal();//商品总价
			if(users.getPoint().compareTo(d1) < 0){
				return -1;
			}else{
				//总积分 = 用户积分 - 抵扣积分
				bigDecimal = new BigDecimal(Double.toString(users.getPoint())).subtract(new BigDecimal(Double.toString(d1)));
			}
		}else{
			double d2 = order.getTotal()/100;//购买商品获取的积分
			//总积分 = 用户积分 + 获取的
			bigDecimal = new BigDecimal(Double.toString(users.getPoint())).add(new BigDecimal(Double.toString(d2)));
		}
		users.setPoint(bigDecimal.doubleValue());//保存积分
		int count = userService.updatePoint(users);
		if(count > 0){
			session.setAttribute("user",users);//更新用户积分
		}
		orderService.pay(order);
		return 1;
	}
	
	
	/**
	 * 收货地址
	 * @return
	 */
	@GetMapping("/address")
	public String address(){ // 使用session中的数据
		return "/index/address.jsp";
	}
	
	/**
	 * 修改信息
	 * @return
	 */
	@PostMapping("/addressUpdate")
	public String addressUpdate(String name, String phone, String address, HttpServletRequest request, HttpSession session){
		Users user = (Users) session.getAttribute("user");
		userService.update(user.getId(), name, phone, address);  // 更新数据库
		session.setAttribute("user", userService.get(user.getId())); // 更新session
		request.setAttribute("msg", "信息修改成功!");
		return "/index/address.jsp";
	}
	
	/**
	 * 收货地址
	 * @return
	 */
	@GetMapping("/password")
	public String password(){ // 使用session中的数据
		return "/index/password.jsp";
	}
	
	/**
	 * 修改密码
	 * @return
	 */
	@PostMapping("/passwordUpdate")
	public String passwordUpdate(String password, String passwordNew, HttpServletRequest request, HttpSession session){
		Users user = (Users) session.getAttribute("user");
		user = userService.get(user.getId());
		if(!user.getPassword().equals(SafeUtil.encode(password))) {
			request.setAttribute("msg", "原密码错误!");
		}else {
			userService.updatePassword(user.getId(), passwordNew);
			request.setAttribute("msg", "密码修改成功!");
		}
		return "/index/password.jsp";
	}
	
	/*
	 * 用戶確認收貨
	 */
	@RequestMapping("/userfinish")
	public String userFinish(int id, byte status,
			@RequestParam(required=false, defaultValue="1") int page) {
		orderService.finish(id);
		return "redirect:order?page="+page;
	}
}

后台管理接口:

/**
 * 后台管理接口
 */
@Controller
@RequestMapping("/admin")
public class AdminController {

	@Autowired
	private AdminService adminService;
	@Autowired
	private OrderService orderService;
	@Autowired
	private UserService userService;
	@Autowired
	private GoodService goodService;
	@Autowired
	private TopService topService;
	@Autowired
	private TypeService typeService;

	/**
	 * 管理员登录 (逻辑判断)
	 * @return
	 */
	@GetMapping("/login")
	public String log() {
		return "/admin/login.jsp";
	}
	
	/**
	 * 管理员登录
	 * @return
	 */
	@PostMapping("/login")
	public String login(String username, String password, 
			HttpServletRequest request, HttpSession session) {
		Admins admin = adminService.getByUsernameAndPassword(username, password);
		if (Objects.nonNull(admin)) {
			session.setAttribute("admin", admin);
			return "redirect:index";
		}
		request.setAttribute("msg", "用户名或密码错误!");
		return "/admin/login.jsp";
	}

	/**
	 * 退出
	 * @return
	 */
	@GetMapping("/logout")
	public String logout(HttpSession session) {
		session.removeAttribute("admin");
		return "/admin/login.jsp";
	}
	
	/**
	 * 后台首页
	 * @return
	 */
	@GetMapping("/index")
	public String index(HttpServletRequest request) {
		request.setAttribute("msg", "恭喜你! 登录成功了");
		return "/admin/index.jsp";
	}

	/**
	 * 类目列表
	 * @return
	 */
	@GetMapping("/typeList")
	public String typeList(HttpServletRequest request) {
		request.setAttribute("flag", 1);
		request.setAttribute("typeList", typeService.getList());
		return "/admin/type_list.jsp";
	}

	/**
	 * 类目添加
	 * @return
	 */
	@GetMapping("/typeAdd")
	public String typeAdd(HttpServletRequest request) {
		request.setAttribute("flag", 1);
		return "/admin/type_add.jsp";
	}
	
	/**
	 * 类目添加
	 * @return
	 * @throws Exception 
	 */
	@PostMapping("/typeSave")
	public String typeSave(Types type) throws Exception {
		typeService.add(type);
		return "redirect:typeList?flag=1";
	}

	/**
	 * 类目更新
	 * @return
	 */
	@GetMapping("/typeEdit")
	public String typeEdit(int id, HttpServletRequest request) {
		request.setAttribute("flag", 1);
		request.setAttribute("type", typeService.get(id));
		return "/admin/type_edit.jsp";
	}

	/**
	 * 类目更新
	 * @return
	 * @throws Exception 
	 */
	@PostMapping("/typeUpdate")
	public String typeUpdate(Types type) throws Exception {
		typeService.update(type);
		return "redirect:typeList?flag=1";
	}

	/**
	 * 类目删除
	 * @return
	 */
	@GetMapping("/typeDelete")
	public String typeDelete(int id) {
		typeService.delete(id);
		return "redirect:typeList?flag=1";
	}

	/**
	 * 产品列表
	 * @return
	 */
	@GetMapping("/goodList")
	public String goodList(HttpServletRequest request, 
			@RequestParam(required=false, defaultValue="0") byte type,
			@RequestParam(required=false, defaultValue="1") int page,
			@RequestParam(required=false, defaultValue="10") int size) {
		request.setAttribute("flag", 2);
		request.setAttribute("page", page);
		request.setAttribute("type", type);
		if(type > 0) {
			String goodIds = topService.getGoodIdsByType(type);
			request.setAttribute("goodList", goodService.getListByIds(goodIds, page, size));
			request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getCountByIds(goodIds), page, size));
		}else {
			request.setAttribute("goodList", goodService.getList(page, size));
			request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getCount(), page, size));
		}
		return "/admin/good_list.jsp";
	}

	/**
	 * 产品添加
	 * @return
	 */
	@GetMapping("/goodAdd")
	public String goodAdd(HttpServletRequest request) {
		request.setAttribute("flag", 2);
		request.setAttribute("typeList", typeService.getList());
		return "/admin/good_add.jsp";
	}

	/**
	 * 产品添加
	 * @return
	 * @throws Exception 
	 */
	@PostMapping("/goodSave")
	public String goodSave(Goods good, MultipartFile file,
			@RequestParam(required=false, defaultValue="1") int page) throws Exception {
		good.setCover(UploadUtil.upload(file));
		goodService.add(good);
		return "redirect:goodList?flag=2&page="+page;
	}

	/**
	 * 产品更新
	 * @return
	 */
	@GetMapping("/goodEdit")
	public String goodEdit(int id, HttpServletRequest request) {
		request.setAttribute("flag", 2);
		request.setAttribute("typeList", typeService.getList());
		request.setAttribute("good", goodService.get(id));
		return "/admin/good_edit.jsp";
	}

	/**
	 * 产品更新
	 * @return
	 * @throws Exception 
	 */
	@PostMapping("/goodUpdate")
	public String goodUpdate(Goods good, MultipartFile file, 
			@RequestParam(required=false, defaultValue="1") int page) throws Exception {
		if (Objects.nonNull(file) && !file.isEmpty()) {
			good.setCover(UploadUtil.upload(file));
		}
		goodService.update(good);
		return "redirect:goodList?flag=2&page="+page;
	}

	/**
	 * 产品删除
	 * @return
	 */
	@GetMapping("/goodDelete")
	public String goodDelete(int id, 
			@RequestParam(required=false, defaultValue="1") int page) {
		goodService.delete(id);
		return "redirect:goodList?flag=2&page="+page;
	}
	
	/**
	 * 添加推荐
	 * @return
	 */
	@PostMapping("/topSave")
	public @ResponseBody String topSave(int goodId, byte type) {
		return topService.add(goodId, type) ? "ok" : null;
	}
	
	/**
	 * 删除推荐
	 * @return
	 */
	@PostMapping("/topDelete")
	public @ResponseBody String topDelete(int goodId, byte type) {
		return topService.delete(goodId, type) ? "ok" : null;
	}

	/**
	 * 订单列表
	 * @return
	 */
	@GetMapping("/orderList")
	public String orderList(HttpServletRequest request,
			@RequestParam(required=false, defaultValue="0")byte status, 
			@RequestParam(required=false, defaultValue="1") int page, 
			@RequestParam(required=false, defaultValue="10") int size) {
		request.setAttribute("flag", 3);
		request.setAttribute("status", status);
		request.setAttribute("orderList", orderService.getList(status, page, size));
		request.setAttribute("pageTool", PageUtil.getPageTool(request, orderService.getCount(status), page, size));
		return "/admin/order_list.jsp";
	}

	/**
	 * 订单发货
	 * @return
	 */
	@GetMapping("/orderSend")
	public String orderSend(int id, byte status,
			@RequestParam(required=false, defaultValue="1") int page) {
		orderService.send(id);
		return "redirect:orderList?flag=3&status="+status+"&page="+page;
	}
	
	/**
	 * 订单完成
	 * @return
	 */
	@GetMapping("/orderFinish")
	public String orderFinish(int id, byte status,
			@RequestParam(required=false, defaultValue="1") int page) {
		orderService.finish(id);
		return "redirect:orderList?flag=3&status="+status+"&page="+page;
	}

	/**
	 * 订单删除
	 * @return
	 */
	@GetMapping("/orderDelete")
	public String orderDelete(int id, byte status,
			@RequestParam(required=false, defaultValue="1") int page) {
		orderService.delete(id);
		return "redirect:orderList?flag=3&status="+status+"&page="+page;
	}

	/**
	 * 顾客管理
	 * @return
	 */
	@GetMapping("/userList")
	public String userList(HttpServletRequest request,
			@RequestParam(required=false, defaultValue="1") int page, 
			@RequestParam(required=false, defaultValue="10") int size) {
		request.setAttribute("flag", 4);
		request.setAttribute("userList", userService.getList(page, size));
		request.setAttribute("pageTool", PageUtil.getPageTool(request, userService.getCount(), page, size));
		return "/admin/user_list.jsp";
	}

	/**
	 * 顾客添加
	 * @return
	 */
	@GetMapping("/userAdd")
	public String userAdd(HttpServletRequest request) {
		request.setAttribute("flag", 4);
		return "/admin/user_add.jsp";
	}

	/**
	 * 顾客添加
	 * @return
	 */
	@PostMapping("/userSave")
	public String userSave(Users user, HttpServletRequest request, 
			@RequestParam(required=false, defaultValue="1") int page) {
		if (Objects.nonNull(userService.getByUsername(user.getUsername()))) {
			request.setAttribute("msg", "用户名已存在!");
			return "/admin/user_add.jsp";
		}
		userService.add(user);
		return "redirect:userList?flag=4&page="+page;
	}

	/**
	 * 顾客密码重置页面
	 * @return
	 */
	@GetMapping("/userRe")
	public String userRe(int id, HttpServletRequest request) {
		request.setAttribute("flag", 4);
		request.setAttribute("user", userService.get(id));
		return "/admin/user_reset.jsp";
	}

	/**
	 * 顾客密码重置
	 * @return
	 */
	@PostMapping("/userReset")
	public String userReset(int id, String password, 
			@RequestParam(required=false, defaultValue="1") int page) {
		userService.updatePassword(id, password);
		return "redirect:userList?page="+page;
	}

	/**
	 * 顾客更新
	 * @return
	 */
	@GetMapping("/userEdit")
	public String userEdit(int id, HttpServletRequest request) {
		request.setAttribute("flag", 4);
		request.setAttribute("user", userService.get(id));
		return "/admin/user_edit.jsp";
	}

	/**
	 * 顾客更新
	 * @return
	 */
	@PostMapping("/userUpdate")
	public String userUpdate(int id, String name, String phone, String address, 
			@RequestParam(required=false, defaultValue="1") int page) {
		userService.update(id, name, phone, address);
		return "redirect:userList?flag=4&page="+page;
	}

	/**
	 * 顾客删除
	 * @return
	 */
	@GetMapping("/userDelete")
	public String userDelete(int id, 
			@RequestParam(required=false, defaultValue="1") int page) {
		userService.delete(id);
		return "redirect:userList?flag=4&page="+page;
	}

	/**
	 * 管理员列表
	 * @return
	 */
	@GetMapping("/adminList")
	public String adminList(HttpServletRequest request, 
			@RequestParam(required=false, defaultValue="1") int page, 
			@RequestParam(required=false, defaultValue="10") int size) {
		request.setAttribute("flag", 5);
		request.setAttribute("adminList", adminService.getList(page, size));
		request.setAttribute("pageTool", PageUtil.getPageTool(request, adminService.getCount(), page, size));
		return "/admin/admin_list.jsp";
	}

	/**
	 * 管理员添加
	 * @return
	 */
	@GetMapping("/adminAdd")
	public String adminAdd(HttpServletRequest request) {
		request.setAttribute("flag", 5);
		return "/admin/admin_add.jsp";
	}
	
	/**
	 * 管理员密码重置
	 * @return
	 */
	@GetMapping("/adminRe")
	public String adminRe(int id, HttpServletRequest request) {
		request.setAttribute("flag", 5);
		request.setAttribute("admin", adminService.get(id));
		return "/admin/admin_reset.jsp";
	}

	/**
	 * 管理员密码重置
	 * @return
	 */
	@PostMapping("/adminReset")
	public String adminReset(int id, String password, HttpServletRequest request,
			@RequestParam(required=false, defaultValue="1") int page) {
		adminService.update(id, password);
		return "redirect:adminList?page="+page;
	}

	/**
	 * 管理员添加
	 * @return
	 */
	@PostMapping("/adminSave")
	public String adminSave(Admins admin, HttpServletRequest request, 
			@RequestParam(required=false, defaultValue="1") int page) {
		if (Objects.nonNull(adminService.getByUsername(admin.getUsername()))) {
			request.setAttribute("msg", "用户名已存在!");
			return "/admin/admin_add.jsp";
		}
		adminService.add(admin);
		return "redirect:adminList?flag=5&page="+page;
	}

	/**
	 * 管理员删除
	 * @return
	 */
	@GetMapping("/adminDelete")
	public String adminDelete(int id, 
			@RequestParam(required=false, defaultValue="1") int page) {
		adminService.delete(id);
		return "redirect:adminList?flag=5&page="+page;
	}
	
    /**
     * 图片上传
     * @throws Exception 
     */
    @PostMapping("upload")
    public @ResponseBody Map<String, Object> upload(MultipartFile imgFile) throws Exception {
    	Map<String, Object> map = new HashMap<>();
    	if (Objects.nonNull(imgFile) && !imgFile.isEmpty()) {
    		map.put("error", 0);
    		map.put("url", UploadUtil.upload(imgFile));
    		return map;
		}else {
			map.put("error", 1);
			map.put("message", "上传出错啦");
		}
    	return map;
    }

	/**
	 * 订单导出
	 */
	@RequestMapping("orderExportExcel")
	public void orderExportExcel(HttpServletResponse response){
		//导出所有订单
		List<Orders> orderList = orderService.getAllList();
		for(Orders orders : orderList){
			if(orders.getAddress() != null && !"".equals(orders.getAddress())){
				StringBuffer buf=new StringBuffer();
				buf.append(orders.getName()+"\n"+orders.getPhone()+"\n"+orders.getAddress());
				orders.setAddress(buf.toString());
			}
			if(orders.getStatus() == Orders.STATUS_UNPAY){
				orders.setName("未付款");
			}else if(orders.getStatus() == Orders.STATUS_PAYED){
				orders.setName("已付款");
			}else if(orders.getStatus() == Orders.PAYTYPE_OFFLINE){
				orders.setName("配送中");
			}else{
				orders.setName("已完成");
			}
			if(orders.getPaytype() == Orders.PAYTYPE_WECHAT){
				orders.setPhone("微信");
			}else if(orders.getPaytype() == Orders.PAYTYPE_ALIPAY){
				orders.setPhone("支付宝");
			}else{
				orders.setPhone("积分");
			}
			StringBuffer buf1=new StringBuffer();
			orders.setUsername(orders.getUser().getName());
			for(Items items : orders.getItemList()){
				buf1.append(items.getGood().getName() + " *" + items.getAmount() + "\n");
			}
			orders.setDingdanInfo(buf1.toString());
		}
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		try {
			String export="订单编号#id,订单金额#total,商品详情#dingdanInfo,收货信息#address,订单状态#name,支付方式#phone,购买用户#username";//此处为标题,excel首行的title,按照此格式即可,格式无需改动,但是可以增加或者减少项目。
			String[] excelHeader = export.split(",");
			String fileName="订单" + sdf.format(new Date()); //className:生成的excel默认文件名和sheet页
			ExcelUtils.export(response, fileName, excelHeader, orderList);//调用封装好的导出方法,具体方法在下面
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

前台相关接口: 

/**
 * 前台相关接口
 */
@Controller
@RequestMapping("/index")
public class IndexController{
	
	@Autowired
	private GoodService goodService;
	@Autowired
	private TypeService typeService;
	

	/**
	 * 首页
	 * @return
	 */
	@GetMapping("/index")
	public String index(HttpServletRequest request){
		request.setAttribute("flag", 1);
		// 今日推荐
		List<Goods> todayList = goodService.getListByTopType(Tops.TYPE_TODAY, 1, 6); // 取前6个
		request.setAttribute("todayList", todayList);
		// 热销排行
		List<Goods> hotList = goodService.getListOrderSales(1, 10); // 取前10个
		request.setAttribute("hotList", hotList);
		// 类目列表
		List<Types> typeList = typeService.getList();
		List<Map<String, Object>> dataList = new ArrayList<>();
		for(Types type : typeList) {
			Map<String, Object> map = new HashMap<>();
			map.put("type", type);
			map.put("goodList", goodService.getListByType(type.getId(), 1, 15)); // 取前15个
			dataList.add(map);
		}
		request.setAttribute("dataList", dataList);
		return "/index/index.jsp";
	}
	
	/**
	 * 商品分类
	 * @return
	 * @throws UnsupportedEncodingException 
	 */
	@GetMapping("/type")
	public String type(HttpServletRequest request, 
			@RequestParam(required=false, defaultValue="0")int id, 
			@RequestParam(required=false, defaultValue="1")int page, 
			@RequestParam(required=false, defaultValue="10")int size) throws UnsupportedEncodingException {
		request.setAttribute("type", typeService.get(id));
		request.setAttribute("goodList", goodService.getListByType(id, page, size));
		request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getCountByType(id), page, size));
		return "/index/goods.jsp";
	}
	
	/**
	 * 今日推荐
	 * @return
	 * @throws UnsupportedEncodingException 
	 */
	@GetMapping("/today")
	public String today(HttpServletRequest request, 
			@RequestParam(required=false, defaultValue="1")int page, 
			@RequestParam(required=false, defaultValue="10")int size) throws UnsupportedEncodingException {
		request.setAttribute("flag", 2);
		request.setAttribute("goodList", goodService.getListByTopType(Tops.TYPE_TODAY, page, size));
		request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getCountByTopType(Tops.TYPE_TODAY), page, size));
		return "/index/goods.jsp";
	}
	
	/**
	 * 热销推荐
	 * @return
	 * @throws UnsupportedEncodingException 
	 */
	@GetMapping("/hot")
	public String hot(HttpServletRequest request, 
			@RequestParam(required=false, defaultValue="1")int page, 
			@RequestParam(required=false, defaultValue="10")int size) throws UnsupportedEncodingException{
		request.setAttribute("flag", 3);
		request.setAttribute("goodList", goodService.getListOrderSales(page, size));
		request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getCount(), page, size));
		return "/index/goods.jsp";
	}
	
	/**
	 * 新品上市
	 * @return
	 * @throws UnsupportedEncodingException 
	 */
	@GetMapping("/new")
	public String news(HttpServletRequest request, 
			@RequestParam(required=false, defaultValue="1")int page, 
			@RequestParam(required=false, defaultValue="10")int size) throws UnsupportedEncodingException{
		request.setAttribute("flag", 4);
		request.setAttribute("goodList", goodService.getList(page, size));
		request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getCount(), page, size));
		return "/index/goods.jsp";
	}
	
	/**
	 * 搜索
	 * @return
	 */
	@GetMapping("/search")
	public String search(String search, HttpServletRequest request, 
			@RequestParam(required=false, defaultValue="1")int page, 
			@RequestParam(required=false, defaultValue="10")int size) throws UnsupportedEncodingException {
		search = new String(search.getBytes("ISO8859-1"),"utf-8");
		request.setAttribute("search", search);
		System.out.println(search);
		if (Objects.nonNull(search) && !search.trim().isEmpty()) {
			request.setAttribute("goodList", goodService.getListByName(search, page, size));
			request.setAttribute("pageHtml", PageUtil.getPageHtml(request, goodService.getTotalByName(search), page, size));
		}
		return "/index/goods.jsp";
	}
	
	/**
	 * 商品详情
	 * @return
	 */
	@GetMapping("/detail")
	public String detail(int id, HttpServletRequest request){
		request.setAttribute("good", goodService.get(id));
		// 今日推荐前两个 在详情页显示
		request.setAttribute("todayList", goodService.getListByTopType(Tops.TYPE_TODAY, 1, 2));
		return "/index/detail.jsp";
	}

}

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

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
### 回答1: Java是一种编程语言,Vue是一种前端框架,Spring Boot是一种后端框架,Maven是一种构建工具,MyBatis是一种ORM框架,MySQL是一种关系型数据库。这些技术可以一起使用来开发Web应用程序。 ### 回答2: Java、Vue、SpringBootMaven、MyBatis 和 MySQL 是现代软件开发中常见的工具和技术。Java 是一门强大的编程语言,非常适合构建企业级应用程序。Vue 是一种现代的 JavaScript 框架,用于构建可交互的单页应用程序。SpringBoot 是一种基于 Spring 框架的服务端开发解决方案,可用于构建 RESTful Web 服务或基于微服务体系结构的应用程序。Maven 是一个构建工具,可用于自动化构建和管理软件项目的依赖项。MyBatis 是一个数据持久化框架,可以方便地将 Java 应用程序连接到各种关系型数据库中。MySQL 是一个流行的、开源的关系型数据库管理系统,是许多 Web 应用程序的默认选择。 在软件开发中,Java、Vue、SpringBootMaven、MyBatis 和 MySQL 可以相互配合使用,以构建跨平台、云端部署、高效稳定的应用程序。JavaSpringBoot 可用于构建 Web 服务和 RESTful API,而 Vue 和 SpringBoot 可用于构建面向用户的 Web 应用程序。Maven 可用于管理项目依赖项和自动化构建过程,而 MyBatis 可以方便地将数据从数据库中提取并转换为对象。MySQL 可用于存储应用程序生成的数据。 总之,在软件开发中,选择适合您团队和项目需求的工具和技术非常重要。Java、Vue、SpringBootMaven、MyBatis 和 MySQL 已经得到了广泛的应用和实践验证,并且可以帮助您轻松地构建高效、可靠和安全的应用程序。 ### 回答3: Java是一种面向对象的高级编程语言,被广泛使用于开发各种应用程序,从桌面应用程序到企业级应用程序。它具有强大的编程能力、跨平台兼容性和开源社区的支持。Java中有很多库、框架和工具,可以简化编程任务并提高应用程序的性能和稳定性。 Vue是一个流行的JavaScript前端框架,用于构建用户界面。它被设计为轻量级、高效和灵活,可以用来建立单页应用程序和大型复杂应用程序。Vue提供了许多有用的工具和组件,可以帮助开发人员快速建立优秀的用户界面。 Spring Boot是一个基于Spring框架的轻量级应用程序开发框架,目的是简化企业级应用程序的开发过程。Spring Boot具有自动配置、快速启动、简单的部署和许多其他特性,可以快速构建高性能应用程序。它还具有用于构建RESTful API和微服务的功能。 Maven是一个强大的项目管理和构建工具,用于构建Java应用程序。Maven可以帮助开发人员自动化项目构建过程,并可以帮助组织项目结构和管理库依赖。Maven具有许多插件和工具,可以帮助开发人员编译、测试和打包应用程序。 MyBatis是一个流行的Java持久层框架,用于简化与关系型数据库的交互。它使用SQL映射文件将Java对象映射到数据库表中,提供了一种简单而强大的方式来处理数据库操作。MyBatis还提供了许多有用的特性,如动态SQL、事务管理和缓存。 MySQL是一个开源的关系型数据库管理系统,被广泛使用于Web应用程序和企业级应用程序。MySQL具有可靠的性能、高度可扩展性和广泛的API支持,可以处理大型数据集和高并发访问。它还拥有丰富的特性和工具,支持多种编程语言和操作系统。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq1334611189

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值