项目编号:BS-SC-001
本项目基于JSP+SERVLET+Durid连接池进行开发实现,数据库采用MYSQL数据库,开发工具为IDEA或ECLIPSE,前端用采用BootStrap开发实现。系统采用三层架构设计,MVC设计模式。系统功能完整,页面简洁大方,维护方便,适合做毕业设计使用。
具体系统功能展示如下:
前台页面功能:
分类显示
餐品详情
添加购物车
个人订单管理
个人资料修改
系统留言
最近浏览功能
后台管理功能:
管理员登陆: admin / admin
用户管理
分类管理
餐品管理
订单管理
留言管理
新闻管理
本系统是一款优秀的毕业设计系统,完美的实现了基于餐饮业务的网上订餐流程,功能强大,运行稳定,结构清晰,便于修改,适合做毕业设计使用。
部分核心代码:
package cn.jbit.easybuy.web;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import cn.jbit.easybuy.biz.FacilityService;
import cn.jbit.easybuy.biz.OrderService;
import cn.jbit.easybuy.biz.ProductService;
import cn.jbit.easybuy.biz.impl.FacilityServiceImpl;
import cn.jbit.easybuy.biz.impl.OrderServiceImpl;
import cn.jbit.easybuy.biz.impl.ProductServiceImpl;
import cn.jbit.easybuy.entity.News;
import cn.jbit.easybuy.entity.Pager;
import cn.jbit.easybuy.entity.Product;
import cn.jbit.easybuy.entity.ProductCategory;
import cn.jbit.easybuy.entity.ShoppingCart;
import cn.jbit.easybuy.entity.User;
import cn.jbit.easybuy.util.ActionResult;
import cn.jbit.easybuy.util.Validator;
public class CartServlet extends HttpServlet {
protected Map<String, ActionResult> viewMapping = new HashMap<String, ActionResult>();
private ProductService productService;
private FacilityService facilityService;
private OrderService orderService;
public void init() throws ServletException {
productService = new ProductServiceImpl();
facilityService = new FacilityServiceImpl();
orderService = new OrderServiceImpl();
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
createViewMapping();
String actionIndicator = req.getParameter("action");
String result = "";
if (actionIndicator == null)
actionIndicator = "list";
if ("list".endsWith(actionIndicator)) {
result = list(req);
} else if ("add".endsWith(actionIndicator)) {
result = add(req);
} else if ("mod".endsWith(actionIndicator)) {
result = mod(req);
} else if ("remove".endsWith(actionIndicator)) {
result = remove(req);
} else if ("pay".endsWith(actionIndicator)) {
result = pay(req);
}
toView(req, resp, result);
}
private String pay(HttpServletRequest request) {
ShoppingCart cart = getCartFromSession(request);
User user = getUserFromSession(request);
if(user==null)
return "login";
orderService.payShoppingCart(cart, user);
removeCartFromSession(request);
return "paySuccess";
}
private void removeCartFromSession(HttpServletRequest request) {
request.getSession().removeAttribute("cart");
}
private User getUserFromSession(HttpServletRequest request) {
HttpSession session = request.getSession();
return (User) session.getAttribute("loginUser");
}
private String add(HttpServletRequest request) {
String id = request.getParameter("entityId");
String quantityStr = request.getParameter("quantity");
long quantity = 1;
if (!Validator.isEmpty(quantityStr))
quantity = Long.parseLong(quantityStr);
Product product = productService.findById(id);
ShoppingCart cart = getCartFromSession(request);
cart.addItem(product, quantity);
return "addSuccess";
}
private String mod(HttpServletRequest request) {
String id = request.getParameter("entityId");
String quantityStr = request.getParameter("quantity");
long quantity = 1;
if (!Validator.isEmpty(quantityStr))
quantity = Long.parseLong(quantityStr);
String indexStr = request.getParameter("index");
ShoppingCart cart = getCartFromSession(request);
cart.modifyQuantity(Integer.parseInt(indexStr), quantity);
return "modSuccess";
}
private String remove(HttpServletRequest request) {
String id = request.getParameter("entityId");
String quantityStr = request.getParameter("quantity");
long quantity = 1;
if (!Validator.isEmpty(quantityStr))
quantity = Long.parseLong(quantityStr);
String indexStr = request.getParameter("index");
ShoppingCart cart = getCartFromSession(request);
cart.getItems().remove(Integer.parseInt(indexStr));
return "removeSuccess";
}
private ShoppingCart getCartFromSession(HttpServletRequest request) {
HttpSession session = request.getSession();
ShoppingCart cart = (ShoppingCart) session.getAttribute("cart");
if (cart == null) {
cart = new ShoppingCart();
session.setAttribute("cart", cart);
}
//取出当前用户的订单列表
return cart;
}
private String list(HttpServletRequest request) {
getCartFromSession(request);
return "listSuccess";
}
private void prepareCategories(HttpServletRequest request) {
List<ProductCategory> categories = productService
.getProductCategories(null);
request.setAttribute("categories", categories);
}
private void prepareNews(HttpServletRequest request) {
List<News> allNews = facilityService.getAllNews(new Pager(10, 1));
request.setAttribute("allNews", allNews);
}
protected void createViewMapping() {
this.addMapping("listSuccess", "shopping.jsp");
this.addMapping("paySuccess", "shopping-result.jsp");
this.addMapping("addSuccess", "Cart", true);
this.addMapping("removeSuccess", "Cart", true);
this.addMapping("modSuccess", "Cart", true);
this.addMapping("login", "login.jsp");
}
private void toView(HttpServletRequest req, HttpServletResponse resp,
String result) throws IOException, ServletException {
ActionResult dest = this.viewMapping.get(result);
if (dest.isRedirect()) {
resp.sendRedirect(dest.getViewName());
} else {
req.getRequestDispatcher(dest.getViewName()).forward(req, resp);
}
}
protected void addMapping(String viewName, String url) {
this.viewMapping.put(viewName, new ActionResult(url));
}
protected void addMapping(String viewName, String url, boolean isDirect) {
this.viewMapping.put(viewName, new ActionResult(url, isDirect));
}
}
package cn.jbit.easybuy.web;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.jbit.easybuy.biz.ProductService;
import cn.jbit.easybuy.biz.impl.ProductServiceImpl;
import cn.jbit.easybuy.entity.ProductCategory;
import cn.jbit.easybuy.util.ActionResult;
import cn.jbit.easybuy.util.Validator;
public class CategoryServlet extends HttpServlet {
private ProductService productService;
public void init() throws ServletException {
productService = new ProductServiceImpl();
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String actionIndicator = req.getParameter("action");
ActionResult result = new ActionResult("error");
Validator validator = new Validator(Validator.toSingleParameters(req));
if (actionIndicator == null)
actionIndicator = "list";
if ("read".endsWith(actionIndicator)) {
result = read(req, validator);
} else if ("list".endsWith(actionIndicator)) {
result = list(req, validator);
} else if ("create".endsWith(actionIndicator)) {
result = create(req, validator);
} else if ("delete".endsWith(actionIndicator)) {
result = delete(req, validator);
} else if ("save".endsWith(actionIndicator)) {
boolean isEdit = true;
String editIndicator = req.getParameter("entityId");
if (Validator.isEmpty(editIndicator))
isEdit = false;
result = save(req, validator, isEdit);
}
if (!validator.hasErrors() && result.isRedirect()) {
resp.sendRedirect(result.getViewName());
} else {
req.setAttribute("errors", validator.getErrors());
req.getRequestDispatcher(result.getViewName()).forward(req, resp);
}
}
public ActionResult read(HttpServletRequest request, Validator validator) {
ProductCategory category = productService.findCategoryById(request
.getParameter("entityId"));
pupulateRequest(request, category);
List<ProductCategory> categories = productService.getRootCategories();
request.setAttribute("categories", categories);
return new ActionResult("productClass-modify.jsp");
}
public ActionResult save(HttpServletRequest request, Validator validator,
boolean isEdit) {
String entityId = request.getParameter("entityId");
checkInputErrors(request, validator);
saveToDatabase(request, validator, isEdit);
return new ActionResult("Category", true);
}
public ActionResult create(HttpServletRequest request, Validator validator) {
List<ProductCategory> categories = productService.getRootCategories();
request.setAttribute("categories", categories);
request.setAttribute("parentId", 0);
return new ActionResult("productClass-modify.jsp");
}
public ActionResult delete(HttpServletRequest request, Validator validator) {
productService.deleteCategory(request.getParameter("entityId"));
return new ActionResult("Category", true);
}
public ActionResult list(HttpServletRequest request, Validator validator) {
List<ProductCategory> categories = productService
.getProductCategories(null);
request.setAttribute("categories", categories);
return new ActionResult("productClass.jsp");
}
private void saveToDatabase(HttpServletRequest request,
Validator validator, boolean isEdit) {
if (!validator.hasErrors()) {
ProductCategory productCategory;
if (!isEdit) {
productCategory = new ProductCategory();
populateEntity(request, productCategory);
productCategory.setParentId(Long.parseLong(request
.getParameter("parentId")));
productService.saveCategory(productCategory);
} else {
productCategory = productService.findCategoryById(request
.getParameter("entityId"));
Long parentId = Long
.parseLong(request.getParameter("parentId"));
populateEntity(request, productCategory);
if (parentId == 0) {
if (productCategory.getId().equals(
productCategory.getParentId())) {
// 说明是一级分类,父分类不能修改,只能改名字
productService.updateCategoryName(productCategory);
} else {
// 二级分类修改为一级分类了,需要额外更新:
// Product原先属于该二级分类的,全部更新一级为它,二级为空
productCategory.setParentId(productCategory.getId());
productService.updateCategory(productCategory,
"Level2To1");
}
} else {
if (!parentId.equals(productCategory.getParentId())) {
// 二级分类修改了父分类,需要额外更新:
// Product原先属于该二级分类的,全部更新一级为新的父分类
productCategory.setParentId(parentId);
productService.updateCategory(productCategory,
"ModifyParent");
} else {
// 二级分类修改了名字
productService.updateCategoryName(productCategory);
}
}
}
}
}
private void pupulateRequest(HttpServletRequest request,
ProductCategory productCategory) {
request
.setAttribute("entityId", Long
.toString(productCategory.getId()));
request.setAttribute("name", productCategory.getName());
request.setAttribute("parentId", (productCategory.getParentId()
.equals(productCategory.getId())) ? 0 : productCategory
.getParentId());
}
private void checkInputErrors(HttpServletRequest request,
Validator validator) {
validator.checkRequiredError(new String[] { "name" });
}
private void populateEntity(HttpServletRequest request,
ProductCategory productCategory) {
productCategory.setName(request.getParameter("name"));
}
}
package cn.jbit.easybuy.web;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.jbit.easybuy.biz.FacilityService;
import cn.jbit.easybuy.biz.ProductService;
import cn.jbit.easybuy.biz.impl.FacilityServiceImpl;
import cn.jbit.easybuy.biz.impl.ProductServiceImpl;
import cn.jbit.easybuy.entity.Comment;
import cn.jbit.easybuy.entity.Pager;
import cn.jbit.easybuy.entity.ProductCategory;
import cn.jbit.easybuy.util.ActionResult;
import cn.jbit.easybuy.util.Validator;
public class CommentServlet extends HttpServlet {
private FacilityService facilityService;
private ProductService productService;
public void init() throws ServletException {
this.facilityService = new FacilityServiceImpl();
this.productService = new ProductServiceImpl();
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String actionIndicator = req.getParameter("action");
ActionResult result = new ActionResult("error");
Validator validator = new Validator(Validator.toSingleParameters(req));
if (actionIndicator == null)
actionIndicator = "list";
if ("read".endsWith(actionIndicator)) {
result = read(req, validator);
} else if ("list".endsWith(actionIndicator)) {
result = list(req, validator);
} else if ("delete".endsWith(actionIndicator)) {
result = delete(req, validator);
} else if ("save".endsWith(actionIndicator)) {
boolean isEdit = true;
String editIndicator = req.getParameter("entityId");
if (Validator.isEmpty(editIndicator))
isEdit = false;
result = save(req, validator, isEdit);
}
if (!validator.hasErrors() && result.isRedirect()) {
resp.sendRedirect(result.getViewName());
} else {
req.setAttribute("errors", validator.getErrors());
req.getRequestDispatcher(result.getViewName()).forward(req, resp);
}
}
public ActionResult read(HttpServletRequest request, Validator validator) {
Comment comment = facilityService.findCommentById(request
.getParameter("entityId"));
pupulateRequest(request, comment);
return new ActionResult("guestbook-modify.jsp");
}
public ActionResult save(HttpServletRequest request, Validator validator,
boolean isEdit) {
checkInputErrors(request, validator);
saveToDatabase(request, validator, isEdit);
return new ActionResult("GuestBook", true);
}
public ActionResult delete(HttpServletRequest request, Validator validator) {
facilityService.deleteComment(request.getParameter("entityId"));
return new ActionResult("GuestBook", true);
}
public ActionResult list(HttpServletRequest request, Validator validator) {
String page = request.getParameter("page");
int pageNo = 1;
if (!Validator.isEmpty(page))
pageNo = Integer.parseInt(page);
long rowCount = facilityService.getCommentRowCount();
Pager pager = new Pager(rowCount, pageNo);
List<Comment> comments = facilityService.getComments(pager);
List<ProductCategory> categories = productService
.getProductCategories(null);
request.setAttribute("categories", categories);
request.setAttribute("comments", comments);
request.setAttribute("pager", pager);
request.setAttribute("pageNo", pageNo);
return new ActionResult("guestbook.jsp");
}
private void pupulateRequest(HttpServletRequest request, Comment comment) {
request.setAttribute("entityId", Long.toString(comment.getId()));
request.setAttribute("reply", comment.getReply());
request.setAttribute("content", comment.getContent());
request.setAttribute("nickName", comment.getNickName());
request.setAttribute("replayTime", Validator.dateToString(comment
.getReplyTime()));
}
private void saveToDatabase(HttpServletRequest request,
Validator validator, boolean isEdit) {
if (!validator.hasErrors()) {
Comment comment;
if (!isEdit) {
comment = new Comment();
comment.setCreateTime(new Date());
populateEntity(request, comment);
facilityService.saveComment(comment);
} else {
comment = facilityService.findCommentById(request
.getParameter("entityId"));
if (!Validator.isEmpty(request.getParameter("reply"))) {
comment.setReply(request.getParameter("reply"));
comment.setReplyTime(new Date());
}
facilityService.updateComment(comment);
}
}
}
private void checkInputErrors(HttpServletRequest request,
Validator validator) {
validator.checkRequiredError(new String[] { "content", "nickName" });
}
private void populateEntity(HttpServletRequest request, Comment comment) {
comment.setContent(request.getParameter("content"));
comment.setNickName(request.getParameter("nickName"));
}
}