基于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等等
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: 首页商品展示模块控制器
User users =userService.selectByUserId(userId);
if(users!=null)
return new ResultVO(ResultCode.SUCCESS,users);
else
return new ResultVO(ResultCode.USER_NOT_FOUND,null);
}*/
/* 原来
@PostMapping("/update1")
public ResultVO updateUser( User record) {
int users =userService.updateByUserId(record);
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);
}
}
@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 {
/**
* 拦截请求判断是否已经登录
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
int users =userService.insert(record);
return new ResultVO(ResultCode.SUCCESS,null);
}
*/
/* @GetMapping("/search")
public ResultVO searchUserById(Integer userId) {
User users =userService.selectByUserId(userId);
if(users!=null)
return new ResultVO(ResultCode.SUCCESS,users);
else
return new ResultVO(ResultCode.USER_NOT_FOUND,null);
}*/
/* 原来
@PostMapping("/update1")
public ResultVO updateUser( User record) {
int users =userService.updateByUserId(record);
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);
}
}
if(orders.size()!=0)
{
return new ResultVO(ResultCode.SUCCESS,orders);
}
else
return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
}*/
@GetMapping("/list/{orderId}")
public ResultVO getOrderByOrderId(@PathVariable("orderId") Integer orderId) {
Order orders = orderService.selectByOrderId(orderId);
if(orders!=null)
return new ResultVO(ResultCode.SUCCESS,orders);
else
return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
}
/**
* 多条件搜索订单 ---- by guozongchao
* @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);
}
}
@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);
}
}
/**
* @Description: 全局异常处理
*/
@RestControllerAdvice
public class GlobalExceptionHandler {
private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
/**
* 自定义异常处理
* @param e
* @return
*/
@ExceptionHandler(CustomizeException.class)
public ResultVO customizeExceptionHandler(CustomizeException e){
log.error(e.getMessage());
return new ResultVO(e.getCode(),e.getMsg(),null);
order.setUserId(user.getUserId());
orderHandleService.createOrder(order);
return new ResultVO(ResultCode.SUCCESS,"/"+user.getUserName()+"/orders");
}
/**
* 更新订单信息,比如审核通过
* @param order
* @return
*/
@PutMapping("/list/{orderId}")
public ResultVO updateOrder(@PathVariable("orderId") Integer orderId,@RequestBody Order order) {
Order orders1 = orderService.selectByOrderId(orderId);
if(orders1!=null)
{
order.setOrderId(orderId);
int orders = orderService.updateByOrderId(order);
return new ResultVO(ResultCode.SUCCESS,null);
}
else
return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
}
/**
* 删除指定orderId的订单
* @param orderId
* @return
*/
@DeleteMapping("/list/{orderId}")
public ResultVO deleteOrder(@PathVariable("orderId") Integer orderId) {
int orders = orderService.deleteByOrderId(orderId);
return new ResultVO(ResultCode.SUCCESS,null);
}
/* @GetMapping("/list/user_order/{userId}")
public ResultVO getOrderByUserId(@PathVariable("userId") Integer userId) {
List<Order> orders = orderService.selectByUserId(userId);
if(orders.size()!=0)
{
return new ResultVO(ResultCode.SUCCESS,orders);
}
else
return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
}*/
/**
* @Description: 登录注册模块实现类
*/
@Service
public class LoginRegisterServiceImpl implements LoginRegisterService {
@Resource
private UserMapper userMapper;
/**
* 用户登录处理
* @param record
* @param session
*/
@Override
public void userLogin(User record, HttpSession session) {
User user=userMapper.selectByUserName(record.getUserName());
if(user==null){
//用户不存在
throw new CustomizeException(ResultCode.USER_NOT_FOUND);
}
if(!user.getPassword().equals(record.getPassword())){
//密码错误
throw new CustomizeException(ResultCode.PASSWORD_ERROR);
}
session.setAttribute("user",user);
}
/**
* 更新订单信息,比如审核通过
* @param order
* @return
*/
@PutMapping("/list/{orderId}")
public ResultVO updateOrder(@PathVariable("orderId") Integer orderId,@RequestBody Order order) {
Order orders1 = orderService.selectByOrderId(orderId);
if(orders1!=null)
{
order.setOrderId(orderId);
int orders = orderService.updateByOrderId(order);
return new ResultVO(ResultCode.SUCCESS,null);
}
else
return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
}
/**
* 删除指定orderId的订单
* @param orderId
* @return
*/
@DeleteMapping("/list/{orderId}")
public ResultVO deleteOrder(@PathVariable("orderId") Integer orderId) {
int orders = orderService.deleteByOrderId(orderId);
return new ResultVO(ResultCode.SUCCESS,null);
}
/* @GetMapping("/list/user_order/{userId}")
public ResultVO getOrderByUserId(@PathVariable("userId") Integer userId) {
List<Order> orders = orderService.selectByUserId(userId);
if(orders.size()!=0)
{
return new ResultVO(ResultCode.SUCCESS,orders);
}
else
return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
}*/
@GetMapping("/list/{orderId}")
* @return
*/
@PostMapping("/user/register")
@ResponseBody
public ResultVO userRegisterHandler(@RequestBody @Valid User user) {
loginRegisterService.userRegister(user);
return new ResultVO(ResultCode.SUCCESS,"/login");
}
/**
* 管理员登录请求处理
* @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
public ResultVO checkUserIsLoggedIn(HttpSession session) {
if (session.getAttribute("user") == null) {
throw new CustomizeException(ResultCode.USER_NOT_LOGGED_IN);
*/
@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)
{
/**
* @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");
}
/**
*/
@ExceptionHandler(Exception.class)
public ResultVO ExceptionHandler(Exception e){
log.error(e.getMessage());
return new ResultVO(ResultCode.UNKNOWN_ERROR,e.getMessage());
}
}
/**
* @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";
}
//跳转注册页面
}
//已登录,放行请求
return true;
}
}
/**
* @Description: 管理员访问拦截器
*/
public class AdminInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
if (session.getAttribute("admin")==null) {
//用户未登录,抛出异常
throw new CustomizeException(ResultCode.USER_NOT_LOGGED_IN);
}
Admin admin = (Admin) session.getAttribute("admin");
//已登录,放行请求
return true;
}
}
/**
* @Description: 登录注册模块业务接口
*/
public interface LoginRegisterService {
/**
* 用户登录
//添加验证注解
@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);
}
}
/* @GetMapping("/list/user_order/{userId}")
public ResultVO getOrderByUserId(@PathVariable("userId") Integer userId) {
List<Order> orders = orderService.selectByUserId(userId);
if(orders.size()!=0)
{
return new ResultVO(ResultCode.SUCCESS,orders);
}
else
return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
}*/
@GetMapping("/list/{orderId}")
public ResultVO getOrderByOrderId(@PathVariable("orderId") Integer orderId) {
Order orders = orderService.selectByOrderId(orderId);
if(orders!=null)
return new ResultVO(ResultCode.SUCCESS,orders);
else
return new ResultVO(ResultCode.RECORD_NOT_FOUND,null);
}
/**
* 多条件搜索订单 ---- by guozongchao
* @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);
}
}
}
//添加验证
@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);
}
}
/**
* @Description: 管理员访问拦截器
*/
public class AdminInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
if (session.getAttribute("admin")==null) {
//用户未登录,抛出异常
throw new CustomizeException(ResultCode.USER_NOT_LOGGED_IN);
}
Admin admin = (Admin) session.getAttribute("admin");
//已登录,放行请求
return true;
}
}
/**
* @Description: 登录注册模块业务接口
*/
public interface LoginRegisterService {
/**
* 用户登录
* @param record