基于javaweb+jsp的网上书城在线书店管理系统(java+jsp+servlert+mysql+ajax)
一、项目简述(附带IW文档)
功能: 前台: * 用户模块 * 分类模块 * 图书模块 * 购物车模块 * 订单模块
后台: * 管理员模块 * 分类管理模块 * 图书管理模块 * 订单模块
二、项目运行
环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
项目技术: JSP + C3P0+ Servlert + html+ css + JavaScript + JQuery + Ajax + Fileupload等等。
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
//数据库里没有这本书,或库存不足
request.setAttribute("bookInfo", null);
}
return "addcart";
}
@GetMapping("/clear")
public String clearCart(HttpServletRequest request) {
cartService.clearCart(request,"cart");
return "cart";
}
@GetMapping("/deletion/{bookId}")
public String deleteCartItem(@PathVariable("bookId") int bookId,HttpServletRequest request){
cartService.deleteCartItem(bookId, request);
return "redirect:/cart/items";
}
}
@RequestMapping("/active")
public String activeUser(String activeCode, Model model) {
BSResult bsResult = userService.activeUser(activeCode);
if (!StringUtils.isEmpty(bsResult.getData())) {
model.addAttribute("username", bsResult.getData());
return "active_success";
} else {
model.addAttribute("failMessage", bsResult.getMessage());
return "fail";
}
}
BookInfo bookInfo = bookInfoService.findById(bookId);
if (bookInfo != null) {
BSResult bsResult = cartService.addToCart(bookInfo, null, buyNum);
request.getSession().setAttribute("buyNowCart", bsResult.getData());
request.setAttribute("cart", bsResult.getData());
return "order_info";
} else {
request.setAttribute("exception", "不好意思,书籍库存不足或不存在了!");
return "exception";
}
}
//没有点立即购买,购物车中的总金额大于0才让填写订单信息
Cart cart = (Cart) request.getSession().getAttribute("cart");
if (cart != null && cart.getTotal() > 0) {
return "order_info";
} else {
return "cart";
}
private IBookInfoService bookInfoService;
@Autowired
private ICartService cartService;
//返回购物差页面
@GetMapping("/items")
public String showCart() {
return "cart";
}
/**
* 加入购物车
*
* @param bookId
* @param request
* @return
*/
@RequestMapping("/addition")
public String addToCart(@RequestParam(value = "bookId",defaultValue = "0") int bookId,
@RequestParam(required = false,defaultValue = "0") int buyNum,
HttpServletRequest request) {
Cart cart = (Cart) request.getSession().getAttribute("cart");
//根据要加入购物车的bookId查询bookInfo
return userService.compareAndChange(userId,oldPassword,newPassword);
}
}
订单信息控制层:
@Controller
@RequestMapping("/order")
public class OrderController {
@Autowired
private IOrderService orderService;
@Autowired
private ICartService cartService;
@Autowired
private IBookInfoService bookInfoService;
/**
* 填写订单信息页面
*
* @param bookId
* @param buyNum
* @param request
* @return
*/
model.addAttribute("loginMsg", bsResult.getMessage());
return "login";
}
//登录校验成功,重定向到首页
User user = bsResult.getData();
//置密码为空
user.setPassword("");
request.getSession().setAttribute("user", user);
return "redirect:/";
}
*/
//shiro框架帮我们注销
@RequestMapping("/logout")
@CacheEvict(cacheNames="authorizationCache",allEntries = true)
public String logout() {
SecurityUtils.getSubject().logout();
return "redirect:/page/login";
}
/**
/**
* 注册 检验用户名是否存在
*
* @param username
* @return
*/
@RequestMapping("/checkUserExist")
@ResponseBody
public BSResult checkUserExist(String username) {
if (StringUtils.isEmpty(username)) {
return BSResultUtil.build(200, USERNAME_CANNOT_NULL, false);
request.setAttribute("exception", bsResult.getMessage());
return "exception";
}
} else {
request.setAttribute("exception", "购物车为空!");
return "exception";
}
}
/**
* 确认收货
*
* @param orderId
* @return
*/
@RequestMapping("/confirm/{orderId}")
public String confirmReceiving(@PathVariable("orderId") String orderId, Model model) {
BSResult bsResult = orderService.confirmReceiving(orderId);
if (bsResult.getCode() == 200) {
return "redirect:/order/list";
} else {
model.addAttribute("exception", bsResult.getMessage());
return "exception";
if (bsResult.getCode() == 200) {
return "redirect:/order/list";
} else {
model.addAttribute("exception", bsResult.getMessage());
return "exception";
}
}
}
购物车控制层:
@Controller
@RequestMapping("/cart")
public class CartController {
@Autowired
private IBookInfoService bookInfoService;
@Autowired
private ICartService cartService;
//返回购物差页面
@Autowired
private IStoreService storeService;
@Value("${mail.fromMail.addr}")
private String from;
@Value("${my.ip}")
private String ip;
private final String USERNAME_PASSWORD_NOT_MATCH = "用户名或密码错误";
private final String USERNAME_CANNOT_NULL = "用户名不能为空";
@RequestMapping("/login")
public String login(@RequestParam(value = "username", required = false) String username,
@RequestParam(value = "password", required = false) String password,
HttpServletRequest request, Model model) {
if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
return "login";
}
//未认证的用户
Subject userSubject = SecurityUtils.getSubject();
if (!userSubject.isAuthenticated()) {
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
token.setRememberMe(false);//禁止记住我功能
try {
//登录成功
userSubject.login(token);
private final String USERNAME_PASSWORD_NOT_MATCH = "用户名或密码错误";
private final String USERNAME_CANNOT_NULL = "用户名不能为空";
@RequestMapping("/login")
public String login(@RequestParam(value = "username", required = false) String username,
@RequestParam(value = "password", required = false) String password,
HttpServletRequest request, Model model) {
if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
return "login";
}
//未认证的用户
Subject userSubject = SecurityUtils.getSubject();
if (!userSubject.isAuthenticated()) {
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
token.setRememberMe(false);//禁止记住我功能
try {
//登录成功
userSubject.login(token);
User loginUser = (User) userSubject.getPrincipal();
request.getSession().setAttribute("loginUser", loginUser);
Store store = storeService.findStoreByUserId(loginUser.getUserId());
request.getSession().setAttribute("loginStore", store);
@RequestMapping("/logout")
@CacheEvict(cacheNames="authorizationCache",allEntries = true)
public String logout() {
SecurityUtils.getSubject().logout();
return "redirect:/page/login";
}
/**
* 注册 检验用户名是否存在
*
* @param username
* @return
*/
@RequestMapping("/checkUserExist")
@ResponseBody
public BSResult checkUserExist(String username) {
if (StringUtils.isEmpty(username)) {
return BSResultUtil.build(200, USERNAME_CANNOT_NULL, false);
}
return userService.checkUserExistByUsername(username);
}
/**
private final String USERNAME_CANNOT_NULL = "用户名不能为空";
@RequestMapping("/login")
public String login(@RequestParam(value = "username", required = false) String username,
@RequestParam(value = "password", required = false) String password,
HttpServletRequest request, Model model) {
if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {
return "login";
}
//未认证的用户
Subject userSubject = SecurityUtils.getSubject();
if (!userSubject.isAuthenticated()) {
UsernamePasswordToken token = new UsernamePasswordToken(username, password);
token.setRememberMe(false);//禁止记住我功能
try {
//登录成功
userSubject.login(token);
User loginUser = (User) userSubject.getPrincipal();
request.getSession().setAttribute("loginUser", loginUser);
Store store = storeService.findStoreByUserId(loginUser.getUserId());
request.getSession().setAttribute("loginStore", store);
SavedRequest savedRequest = WebUtils.getSavedRequest(request);
String url = "/";
loginUser.setIdentity(user.getIdentity());
loginUser.setPhone(user.getPhone());
BSResult bsResult = userService.updateUser(loginUser);
session.setAttribute("loginUser", loginUser);
return bsResult;
}
@RequestMapping("/password/{userId}")
@ResponseBody
public BSResult changePassword(@PathVariable("userId") int userId,String oldPassword,String newPassword){
if(StringUtils.isEmpty(oldPassword) || StringUtils.isEmpty(newPassword)){
return BSResultUtil.build(400, "密码不能为空");
}
return userService.compareAndChange(userId,oldPassword,newPassword);
}
}
订单信息控制层:
@Controller
@RequestMapping("/order")
public class OrderController {
@Autowired
*
* @return
*/
@PostMapping("/creation")
public String createOrder(User userDTO, String express, int payMethod, HttpServletRequest request) {
//立即购买,优先创建订单
Cart buyNowCart = (Cart) request.getSession().getAttribute("buyNowCart");
User loginUser = (User) request.getSession().getAttribute("loginUser");
userDTO.setUserId(loginUser.getUserId());
userDTO.setZipCode(loginUser.getZipCode());
if (buyNowCart != null) {
BSResult bsResult = orderService.createOrder(buyNowCart, userDTO, express, payMethod);
if (bsResult.getCode() == 200) {
request.setAttribute("order", bsResult.getData());
cartService.clearCart(request, "buyNowCart");
return "payment";
} else {
if (buyNowCart != null) {
BSResult bsResult = orderService.createOrder(buyNowCart, userDTO, express, payMethod);
if (bsResult.getCode() == 200) {
request.setAttribute("order", bsResult.getData());
cartService.clearCart(request, "buyNowCart");
return "payment";
} else {
request.setAttribute("exception", bsResult.getMessage());
return "exception";
}
}
//普通购物车
Cart cart = (Cart) request.getSession().getAttribute("cart");
if (cart != null) {
BSResult bsResult = orderService.createOrder(cart, userDTO, express, payMethod);
if (bsResult.getCode() == 200) {
request.setAttribute("order", bsResult.getData());
cartService.clearCart(request, "cart");
return "payment";
} else {
request.setAttribute("exception", bsResult.getMessage());
return "exception";
return "active_success";
} else {
model.addAttribute("failMessage", bsResult.getMessage());
return "fail";
}
}
@RequestMapping("/update")
@ResponseBody
public BSResult updateUser(User user, HttpSession session){
User loginUser = (User) session.getAttribute("loginUser");
loginUser.setNickname(user.getNickname());
loginUser.setLocation(user.getLocation());
loginUser.setDetailAddress(user.getDetailAddress());
loginUser.setGender(user.getGender());
loginUser.setUpdated(new Date());
loginUser.setPhone(user.getPhone());
loginUser.setIdentity(user.getIdentity());
loginUser.setPhone(user.getPhone());
BSResult bsResult = userService.updateUser(loginUser);
session.setAttribute("loginUser", loginUser);
return bsResult;
}
@RequestMapping("/password/{userId}")
@ResponseBody
return "redirect:/";
}
*/
//shiro框架帮我们注销
@RequestMapping("/logout")
@CacheEvict(cacheNames="authorizationCache",allEntries = true)
public String logout() {
SecurityUtils.getSubject().logout();
return "redirect:/page/login";
}
/**
* 注册 检验用户名是否存在
*
* @param username
* @return
*/
@RequestMapping("/checkUserExist")
@ResponseBody
public BSResult checkUserExist(String username) {
if (StringUtils.isEmpty(username)) {
return BSResultUtil.build(200, USERNAME_CANNOT_NULL, false);
}
return userService.checkUserExistByUsername(username);
* @param newNum
* @param request
* @return
*/
@PostMapping("/buy/num/update")
@ResponseBody
public BSResult updateBuyNum(int bookId, int newNum, HttpServletRequest request){
return cartService.updateBuyNum(bookId, newNum, request);
}
@PostMapping("/checkOne")
@ResponseBody
return "exception";
}
}
//普通购物车
Cart cart = (Cart) request.getSession().getAttribute("cart");
if (cart != null) {
BSResult bsResult = orderService.createOrder(cart, userDTO, express, payMethod);
if (bsResult.getCode() == 200) {
request.setAttribute("order", bsResult.getData());
cartService.clearCart(request, "cart");
return "payment";
} else {
request.setAttribute("exception", bsResult.getMessage());
return "exception";
}
} else {
return userService.compareAndChange(userId,oldPassword,newPassword);
}
}
订单信息控制层:
@Controller
@RequestMapping("/order")
public class OrderController {
@Autowired
private IOrderService orderService;
@Autowired
private ICartService cartService;
@Autowired
private IBookInfoService bookInfoService;
}
return "exception";
}
@RequestMapping("/deletion/{orderId}")
public String deletion(@PathVariable("orderId") String orderId) {
BSResult bsResult = orderService.deleteOrder(orderId);
if (bsResult.getCode() == 200) {
return "redirect:/order/list";
}
return "exception";
}
/**
* 订单列表
*
* @return
*/
return "login";
} catch (LockedAccountException lae) {
model.addAttribute("loginMsg", "账户已被冻结!");
return "login";
} catch (AuthenticationException ae) {
model.addAttribute("loginMsg", "登录失败!");
return "login";
}
} else {
//用户已经登录
return "redirect:/index";
}
}
@RequestMapping("/info")
public String personInfo(){
return "user_info";
}
/* @RequestMapping("/login1")
public String login1(@RequestParam(value = "username", required = false) String username,
@RequestParam(value = "password", required = false) String password,
Model model, HttpServletRequest request) {
public String orderInfo(@RequestParam(required = false, defaultValue = "0") int bookId,
@RequestParam(required = false, defaultValue = "0") int buyNum,
HttpServletRequest request) throws BSException {
if (bookId != 0) {
//点了立即购买,放到request域中,也session的立即购买域中以区分购物车中的书籍
BookInfo bookInfo = bookInfoService.findById(bookId);
if (bookInfo != null) {
BSResult bsResult = cartService.addToCart(bookInfo, null, buyNum);
request.getSession().setAttribute("buyNowCart", bsResult.getData());
request.setAttribute("cart", bsResult.getData());
return "order_info";
} else {
request.setAttribute("exception", "不好意思,书籍库存不足或不存在了!");
return "exception";
return "payment";
} else {
request.setAttribute("exception", bsResult.getMessage());
return "exception";
}
} else {
request.setAttribute("exception", "购物车为空!");
return "exception";
}
}
/**
* 确认收货
*
* @param orderId
* @return
*/
@RequestMapping("/confirm/{orderId}")
public String confirmReceiving(@PathVariable("orderId") String orderId, Model model) {
BSResult bsResult = orderService.confirmReceiving(orderId);
if (bsResult.getCode() == 200) {