基于javaweb+mysql的springboot前台展示+后台管理结合的在线购书系统(java+springboot+ssm+mysql+maven)

基于javaweb+mysql的springboot前台展示+后台管理结合的在线购书系统(java+springboot+ssm+mysql+maven)

运行环境

Java≥8、MySQL≥5.7

开发工具

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

适用

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

功能说明

基于javaweb+mysql的SpringBoot前台展示+后台管理结合的在线购书系统(java+springboot+ssm+mysql+maven)

一、项目简述

功能:一个基于JavaWeb的网上书店的设计与实现,归纳 出了几个模块,首先是登录注册模块,图书查找模块,购物车模块,订单模块,个人中心模块,用户管理模块,图 书管理模块等。 该项目是javaJeb技术的实战操作,采用了MVC设计模 式,包括基本的entity, jscript, servlet,以及ajax异步请 求,查询分页,持久化层方法的封装等等,对javaweb技 术的巩固很有帮助,为J2EE的学习打下基础,适用于课程 设计,毕业设计。

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: JSP +Springboot+ SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + maven等等


/**
 * @Description: 登录注册模块的控制器
 */

@Controller
public class LoginRegisterController {

    @Autowired
    private LoginRegisterService loginRegisterService;

    /**
     * 用户登录请求处理
     * @param user
     * @return
     */
    @PostMapping("/user/login")
    @ResponseBody
    public ResultVO userLoginHandler(@RequestBody @Valid User user, HttpSession session) {
        loginRegisterService.userLogin(user,session);
        return new ResultVO(ResultCode.SUCCESS,"/");
    }

    /**
     * 用户注册请求处理
     * @param user
     * @return
     */
    @PostMapping("/user/register")
    @ResponseBody
    public ResultVO userRegisterHandler(@RequestBody @Valid User user) {
        loginRegisterService.userRegister(user);
        return new ResultVO(ResultCode.SUCCESS,"/login");
    }

    /**
     * 管理员登录请求处理
     * @param admin
     * @return
     */

/**
 * @Description: 书籍管理模块控制器
 */
@RestController
@RequestMapping("/book")
public class BookController {

    @Autowired
    private BookService bookService;

    @GetMapping("/searchid")
    public ResultVO bookSearchByBookId(Integer bookId) {
        // Book books=bookMapper.selectByBookId(bookIde);
        Book books = bookService.bookSearchById(bookId);
        if (books != null)
            return new ResultVO(ResultCode.SUCCESS,books);
        else
            return new ResultVO(ResultCode.RECORD_NOT_FOUND, null);
    }

    @PostMapping("/delete")
    public ResultVO bookDelete(Integer bookId) {
        int books = bookService.bookDeleteSearchById(bookId);
        return new ResultVO(ResultCode.SUCCESS, null);
    }

    //添加验证注解
    @PostMapping("/insert")
    public ResultVO bookInsert(@Valid Book record) {
        int books = bookService.bookInsert(record);
        return new ResultVO(ResultCode.SUCCESS, null);
    }

    @GetMapping("/searchcode")
  public ResultVO bookSerchByCategoryCode(String catrgoryCode,Integer page,Integer limit) {
      List<Book> books = bookService.bookSearchByCode(catrgoryCode,page,limit);
        PageInfo pageInfo = new PageInfo(books);
     if(books.size()!=0)
     {
      return new ResultVO(ResultCode.SUCCESS,(int)pageInfo.getTotal(), books);

/**
 * @Description: 首页商品展示模块控制器
 */
@Controller
@RequestMapping("/index")
public class BookDisplayController {

    @Autowired
    private BookDisplayService bookDisplayService;

    /**
     * 处理前台获取所有分类的请求
     * @return
     */
    @GetMapping("/category")
    @ResponseBody
    public ResultVO getCategories() {
        List<Category> categories = bookDisplayService.getAllCategories();
        return new ResultVO(ResultCode.SUCCESS,categories);
    }

    /**
     * 根据前台传来的categoryCode,响应对应的分类的书籍
     * 需要进行分页响应
     * 如果categoryCode为null,则响应所有书籍
     * @param categoryCode   分类代码
     * @param page           页码
     * @param limit          每页的数量
     * @return
     */
    @GetMapping("/books")
    @ResponseBody
    public ResultVO getBooksByCategoryCode(@RequestParam(required = false) String categoryCode, @RequestParam(required = false) Integer page, @RequestParam(required = false) Integer limit) {
        List<Book> books = bookDisplayService.getBooksByCategoryCode(page==null?1:page, limit==null?10:limit, categoryCode);
        PageInfo pageInfo = new PageInfo(books);  //获得分页信息
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(),books);
    }

    /**
     * 根据请求的bookId,返回该Id的书籍信息,响应Html视图
        }
        List<Book> books = bookService.searchBooks(book, page, limit);
        PageInfo pageInfo = new PageInfo(books);
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(), books);
    }

}

/**
 * @Description: 首页商品展示模块控制器
 */
@Controller
@RequestMapping("/index")
public class BookDisplayController {

    @Autowired
    private BookDisplayService bookDisplayService;

    /**
     * 处理前台获取所有分类的请求
     * @return
     */
    @GetMapping("/category")
    @ResponseBody
    public ResultVO getCategories() {
        List<Category> categories = bookDisplayService.getAllCategories();
        return new ResultVO(ResultCode.SUCCESS,categories);
    }

    /**
     * 根据前台传来的categoryCode,响应对应的分类的书籍
    }

    /**
     * 管理员登录请求处理
     * @param admin
     * @return
     */
    @PostMapping("/admin/login")
    @ResponseBody
    public ResultVO adminLoginHandler(@RequestBody Admin admin, HttpSession session) {
        if(!("admin".equals(admin.getAdminName())&& "123456".equals(admin.getPassword()))){
            throw new CustomizeException(ResultCode.FAILED,"管理员账户或密码错误");
        }
        session.setAttribute("admin",admin);
        return new ResultVO(ResultCode.SUCCESS,"/admin/book_manage");
    }

    /**
     * 用户退出
     * @param session
     * @return
     */
    @GetMapping("/logout")
    public String userLogout(HttpSession session){
        session.removeAttribute("user");
        return "redirect:/login";
    }

    /**
     * 后台管理退出
     * @param session
     * @return
     */
    @GetMapping("/admin/logout")
    public String adminLogout(HttpSession session){
        session.removeAttribute("admin");
        return "redirect:/";
    }

    @GetMapping("/checkLoggedIn")
    @ResponseBody
    //跳转书籍管理页面
    @GetMapping({"/","/book_manage"})
    public String toBookManage(){
        return "admin/books";
    }

    //跳转分类管理页面
    @GetMapping("/category_manage")
    public String toCategoryManage(){
        return "admin/category";
    }

    //跳转订单管理页面
    @GetMapping("/order_manage")
    public String toOrderManage(){
        return "admin/order";
    }

    //跳转添加书籍页面
    @GetMapping("/add_book")
    public String AddBook(){
        return "admin/add_book";
    }

    //跳转后台登录页面
    @GetMapping("/login")
    public String toAdminLogin(){
        return "admin/login";
    }

}

/**
 * @Description: 登录验证拦截器
 */
public class ClientLoginInterceptor implements HandlerInterceptor {
    /**

/**
 * @Description: 客户端路由控制器
 */
@Controller
public class ClientRouterController {

    //跳转首页
    @GetMapping({"/","/index"})
    public String toHomePage(){
        return "index";
    }

    //跳转登录页面
    @GetMapping("/login")
    public String toLogin(HttpSession session){
        if(session.getAttribute("user")!=null){
            return "redirect:/";
        }
        return "login";
    }

    //跳转注册页面
    @GetMapping("/register")
    public String toRegister(){
        return "register";
    }

    //跳转个人订单页面
    @GetMapping("/{userName}/orders")
    public String toOrderCenter(@PathVariable("userName") String userName,HttpSession session){
        User user= (User) session.getAttribute("user");
        if(user!=null && user.getUserName().equals(userName)){
            return "user_orders";
        }
        return "redirect:/login";
    }

    //跳转购物车页面
    @GetMapping("/{userName}/shopping_cart")
    public String toUserShoppingCart(@PathVariable("userName") String userName,HttpSession session){
        User user= (User) session.getAttribute("user");
        if(user!=null && user.getUserName().equals(userName)){
            return "shopping_cart";
        }
        return "redirect:/login";
    }

     }
     else
    	 return new ResultVO(ResultCode.RECORD_NOT_FOUND, null);

  }

    //添加验证注解
    @PostMapping("/update")
    public ResultVO bookUpdate(@Valid Book record) {
        int books = bookService.bookUpdate(record);
        return new ResultVO(ResultCode.SUCCESS, null);
    }

    /**
     * 多条件搜索   ----by guozongchao
     * @param book
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/search")
    public ResultVO searchBooks(Book book,Integer page, Integer limit) {
        if(book.getBookName().isEmpty()){
            book.setBookName(null);
        }
        if(book.getIsbn().isEmpty()){
            book.setIsbn(null);
        }
        List<Book> books = bookService.searchBooks(book, page, limit);
        PageInfo pageInfo = new PageInfo(books);
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(), books);
    }

}


/**
 * @Description: 图片上传控制器
 */
@RestController
@RequestMapping("/upload")
public class ImageUploadController {

    @PostMapping("/book_image")
    public ResultVO uploadBookImage(MultipartFile bookImage, HttpServletRequest request) {
        //获取项目上传文件夹路径
        String srcPath = "src/main/resources/static/images/book_images";
        String targetFileName = System.currentTimeMillis() + bookImage.getOriginalFilename().substring(bookImage.getOriginalFilename().lastIndexOf("."));
        //上传
        try {
            File srcFile = new File(new File(srcPath).getAbsolutePath(), targetFileName);
            bookImage.transferTo(srcFile);
            copyToTargetDir(srcFile, targetFileName);
        } catch (Exception e) {
            e.printStackTrace();
            throw new CustomizeException(ResultCode.FAILED, "上传图片失败");
        }
        return new ResultVO(ResultCode.SUCCESS, targetFileName);
    }

    private void copyToTargetDir(File srcFile, String targetFileName) throws Exception {
        String targetPath = "target/classes/static/images/book_images";
        InputStream inBuff = new BufferedInputStream(new FileInputStream(srcFile));
        OutputStream outBuff = new BufferedOutputStream(new FileOutputStream(new File(new File(targetPath).getAbsolutePath(), targetFileName)));
        byte[] b = new byte[1024 * 5 * 10];
        int len;
        while ((len = inBuff.read(b)) != -1) {
            outBuff.write(b, 0, len);
        }

    @PostMapping("/delete")
    public ResultVO bookDelete(Integer bookId) {
        int books = bookService.bookDeleteSearchById(bookId);
        return new ResultVO(ResultCode.SUCCESS, null);
    }

    //添加验证注解
    @PostMapping("/insert")
    public ResultVO bookInsert(@Valid Book record) {
        int books = bookService.bookInsert(record);
        return new ResultVO(ResultCode.SUCCESS, null);
    }

    @GetMapping("/searchcode")
  public ResultVO bookSerchByCategoryCode(String catrgoryCode,Integer page,Integer limit) {
      List<Book> books = bookService.bookSearchByCode(catrgoryCode,page,limit);
        PageInfo pageInfo = new PageInfo(books);
     if(books.size()!=0)
     {
      return new ResultVO(ResultCode.SUCCESS,(int)pageInfo.getTotal(), books);
     }
     else
    	 return new ResultVO(ResultCode.RECORD_NOT_FOUND, null);

  }

    //添加验证注解
    @PostMapping("/update")
    public ResultVO bookUpdate(@Valid Book record) {
        int books = bookService.bookUpdate(record);
        return new ResultVO(ResultCode.SUCCESS, null);
    }

    /**
     * 多条件搜索   ----by guozongchao
     * @param book
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/search")
    public ResultVO searchBooks(Book book,Integer page, Integer limit) {
    public String toLogin(HttpSession session){
        if(session.getAttribute("user")!=null){
            return "redirect:/";
        }
        return "login";
    }

    //跳转注册页面
    @GetMapping("/register")
    public String toRegister(){
        return "register";
    }

    //跳转个人订单页面
    @GetMapping("/{userName}/orders")
    public String toOrderCenter(@PathVariable("userName") String userName,HttpSession session){
        User user= (User) session.getAttribute("user");
        if(user!=null && user.getUserName().equals(userName)){
            return "user_orders";
        }
        return "redirect:/login";
    }

    //跳转购物车页面
    @GetMapping("/{userName}/shopping_cart")
    public String toUserShoppingCart(@PathVariable("userName") String userName,HttpSession session){
        User user= (User) session.getAttribute("user");
        if(user!=null && user.getUserName().equals(userName)){
            return "shopping_cart";
        }
        return "redirect:/login";
    }

}

/**
 * @Description: 登录注册模块实现类

/**
 * @Description: 用户管理模块控制器
 */
@RestController
@RequestMapping("/user")
public class UserController {
   @Autowired
   private UserService userService;
    /**
     * 分页获取用户列表
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/list")
    public ResultVO getUserList(@RequestParam(required = false) Integer page, @RequestParam(required = false) Integer limit) {
        List<User> users=  userService.selectAll(page,limit);
        PageInfo pageInfo = new PageInfo(users);
        return new ResultVO(ResultCode.SUCCESS,(int)pageInfo.getTotal(),users);
    }

    /**
     * 删除指定用户ID
     * @param userId
     * @return
     */
     * @param order
     * @param page
     * @param limit
     * @return
     */
    @GetMapping("/search")
    public ResultVO searchOrders(Order order, Integer page, Integer limit) {
        if (order.getConsigneeName().isEmpty()) {
            order.setConsigneeName(null);
        }
        List<Order> orders = orderService.searchOrders(order, page, limit);
        PageInfo pageInfo = new PageInfo(orders);
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(), orders);
    }

}

/**
 * @Description: 购物城模块控制器
 */
@RestController
@RequestMapping("/cart")
public class ShoppingCartController {

    @Autowired
    private ShoppingCartService shoppingCartService;
    /**
     * 根据用户ID获取该用户的购物车
     * @param session
     * @return
        if (order.getConsigneeName().isEmpty()) {
            order.setConsigneeName(null);
        }
        List<Order> orders = orderService.searchOrders(order, page, limit);
        PageInfo pageInfo = new PageInfo(orders);
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(), orders);
    }

}

/**
 * @Description: 购物城模块控制器
 */
@RestController
@RequestMapping("/cart")
public class ShoppingCartController {

    @Autowired
    private ShoppingCartService shoppingCartService;
    /**
     * 根据用户ID获取该用户的购物车
     * @param session
     * @return
     */
    @GetMapping("/list")
    public ResultVO getCartByUserId(HttpSession session) {
        User user = (User) session.getAttribute("user");
        List<ShoppingCart> carts = shoppingCartService.getShoppingCartsByUserId(user.getUserId());
        return new ResultVO(ResultCode.SUCCESS, carts);
    }

    /**
        return new ResultVO(ResultCode.SUCCESS,null);
    }*/

    /**
     * 修改    添加验证注解和RequestBody注解    --By guozongchao
     * @param record
     * @return
     */
    @PostMapping("/update")
    public ResultVO updateUser(@RequestBody @Valid User record) {
        int users =userService.updateByUserId(record);
        return new ResultVO(ResultCode.SUCCESS,null);
    }

    @GetMapping("/search")
    public ResultVO searchUsers(User user, Integer page, Integer limit) {
        if (user.getUserName().isEmpty()) {
            user.setUserName(null);
        }
        if (user.getEmail().isEmpty()) {
            user.setEmail(null);
        }
        List<User> users = userService.searchUsers(user, page, limit);
        PageInfo pageInfo = new PageInfo(users);
        return new ResultVO(ResultCode.SUCCESS, (int) pageInfo.getTotal(), users);
    }

}

/**
 * @Description: 书籍管理模块控制器
 */
@RestController
@RequestMapping("/book")
        if (session.getAttribute("user") == null) {
            throw new CustomizeException(ResultCode.USER_NOT_LOGGED_IN);
        }
        return new ResultVO(ResultCode.SUCCESS);
    }
}

/**
 * @Description: 图片上传控制器
 */
@RestController
@RequestMapping("/upload")
public class ImageUploadController {

    @PostMapping("/book_image")
    public ResultVO uploadBookImage(MultipartFile bookImage, HttpServletRequest request) {
        //获取项目上传文件夹路径
        String srcPath = "src/main/resources/static/images/book_images";
        String targetFileName = System.currentTimeMillis() + bookImage.getOriginalFilename().substring(bookImage.getOriginalFilename().lastIndexOf("."));
        //上传
        try {
            File srcFile = new File(new File(srcPath).getAbsolutePath(), targetFileName);
            bookImage.transferTo(srcFile);
            copyToTargetDir(srcFile, targetFileName);
        } catch (Exception e) {
            e.printStackTrace();
            throw new CustomizeException(ResultCode.FAILED, "上传图片失败");
        }
        return new ResultVO(ResultCode.SUCCESS, targetFileName);
    }
	}
	@PostMapping("/delete")
	public ResultVO categoryDelete(String categoryCode)
	{
		int categories = categoryService.deleteByByCategoryCode(categoryCode);
		return new ResultVO(ResultCode.SUCCESS,null);
	}

	//添加验证
	@PostMapping("/insert")
	public ResultVO categoryInsert(@Valid Category record)
	{
		
		int categories = categoryService.insert(record);
		return new ResultVO(ResultCode.SUCCESS,null);
	}

	//添加验证
	@PostMapping("/update")
	public  ResultVO categoryUpdate(@Valid Category record)
	{
		int categories = categoryService.updateByCategoryCode(record);
		return new ResultVO(ResultCode.SUCCESS,null);
	}

	//添加分页
	@GetMapping("/searchall")
	public  ResultVO categorySearchAll(Integer page,Integer limit)
	{
		List<Category> categories = categoryService.selectAll(page==null?0:page,limit==null?10:limit);
		if(categories.size()!=0)
			return new ResultVO(ResultCode.SUCCESS,categories);
		else
			return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
	}	
}

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值