一、项目简述(附带IW文档)
功能: 前台: * 用户模块 * 分类模块 * 图书模块 * 购物车模块 * 订单模块
后台: * 管理员模块 * 分类管理模块 * 图书管理模块 * 订单模块
二、项目运行
环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
项目技术: JSP + C3P0+ Servlert + html+ css + JavaScript + JQuery + Ajax + Fileupload等等。
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
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";
}
} else {
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
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
private IOrderService orderService;
@Autowired
private ICartService cartService;
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 {
//登录成功
@Controller
@RequestMapping("/cart")
public class CartController {
@Autowired
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,
}
用户信息控制层:
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService userService;
@Autowired
private IMailService mailService;
@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,
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 = "/";
if (savedRequest != null) {
url = savedRequest.getRequestUrl();
if(url.contains(request.getContextPath())){
url = url.replace(request.getContextPath(),"");
}
}
if(StringUtils.isEmpty(url) || url.equals("/favicon.ico")){
url = "/";
}
return "redirect:" + url;
* @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
public BSResult checkACartItem(int bookId,HttpServletRequest request){
Cart cart = (Cart)request.getSession().getAttribute("cart");
return cartService.checkedOrNot(cart, bookId);
}
}
用户信息控制层:
@Controller
@Autowired
private IMailService mailService;
@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";
}
//未认证的用户
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;
//返回购物差页面
@GetMapping("/items")
public String showCart() {
return "cart";
}
/**
if(StringUtils.isEmpty(oldPassword) || StringUtils.isEmpty(newPassword)){
return BSResultUtil.build(400, "密码不能为空");
}
return userService.compareAndChange(userId,oldPassword,newPassword);
}
}
订单信息控制层:
@Controller
@RequestMapping("/order")
public class OrderController {
@Autowired
private IOrderService orderService;
@Autowired
private ICartService cartService;
@Autowired