基于javaweb+mysql的ssm甜品冰淇淋奶茶店网上订餐系统(前台、后台)(java+jsp+ssm+javabean+mysql+tomcat)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
分为前台和后台管理
前台用户可以注册、登录、查看商品列表与商品详情、加入购物车、下单购买等
后台管理员可以管理用户、商品、分类、订单等
前台
后台
技术框架
JavaBean MVC JSP SSM(Spring SpringMVC MyBatis) MySQL jQuery Bootstrap JavaScript CSS
基于javaweb+mysql的SSM甜品冰淇淋奶茶店网上订餐系统(前台、后台)(java+jsp+ssm+javabean+mysql+tomcat)
* @return
*/
@RequestMapping("/goodList")
public String goodList(@RequestParam(required=false, defaultValue="0")byte status, HttpServletRequest request,
@RequestParam(required=false, defaultValue="1") int page) {
request.setAttribute("flag", 3);
request.setAttribute("page", page);
request.setAttribute("status", status);
request.setAttribute("goodList", goodService.getList(status, page, rows));
request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getTotal(status), page, rows));
return "/admin/good_list.jsp";
}
/**
* 产品添加
*
* @return
*/
@RequestMapping("/goodAdd")
public String goodAdd(HttpServletRequest request) {
request.setAttribute("flag", 3);
request.setAttribute("typeList", typeService.getList());
return "/admin/good_add.jsp";
}
/**
* 产品添加
*
* @return
* @throws Exception
*/
@RequestMapping("/goodSave")
public String goodSave(String name, int price, String intro, int stock, int typeId,
MultipartFile cover, MultipartFile image1, MultipartFile image2,
@RequestParam(required=false, defaultValue="1") int page) throws Exception {
Goods good = new Goods();
good.setName(name);
good.setPrice(price);
good.setIntro(intro);
good.setStock(stock);
good.setTypeId(typeId);
good.setCover(UploadUtil.fileUpload(cover));
good.setImage1(UploadUtil.fileUpload(image1));
session.setAttribute(INDENT_KEY, orderService.addOrderItem(order, goods));
}
return "ok";
}
/**
* 减少
*/
@RequestMapping("/lessen")
public @ResponseBody String lessen(int goodid, HttpSession session){
Orders order = (Orders) session.getAttribute(INDENT_KEY);
if (order != null) {
session.setAttribute(INDENT_KEY, orderService.lessenIndentItem(order, goodService.get(goodid)));
}
return "ok";
}
/**
* 删除
*/
@RequestMapping("/delete")
public @ResponseBody String delete(int goodid, HttpSession session){
Orders order = (Orders) session.getAttribute(INDENT_KEY);
if (order != null) {
session.setAttribute(INDENT_KEY, orderService.deleteIndentItem(order, goodService.get(goodid)));
}
return "ok";
}
/**
* 提交订单
* @return
*/
@RequestMapping("/save")
public String save(ServletRequest request, HttpSession session, Model model){
model.addAttribute("typeList", typeService.getList());
Users user = (Users) session.getAttribute("user");
if (user == null) {
request.setAttribute("msg", "请登录后提交订单!");
return "/index/login.jsp";
}
Orders sessionOrder = (Orders) session.getAttribute(INDENT_KEY);
if (sessionOrder != null) {
if (sessionOrder != null) {
for(Items item : sessionOrder.getItemList()){ // 检测商品库存(防止库存不足)
Goods product = goodService.get(item.getGoodId());
if(item.getAmount() > product.getStock()){
request.setAttribute("msg", "商品 ["+product.getName()+"] 库存不足! 当前库存数量: "+product.getStock());
return "/index/cart.jsp";
@RequestMapping("/orderDispose")
public String orderDispose(int id, byte status,
@RequestParam(required=false, defaultValue="1") int page) {
orderService.dispose(id);
return "redirect:orderList?flag=1&status="+status+"&page="+page;
}
/**
* 订单完成
*
* @return
*/
@RequestMapping("/orderFinish")
public String orderFinish(int id, byte status,
@RequestParam(required=false, defaultValue="1") int page) {
orderService.finish(id);
return "redirect:orderList?flag=1&status="+status+"&page="+page;
}
/**
* 订单删除
*
* @return
*/
@RequestMapping("/orderDelete")
public String orderDelete(int id, byte status,
@RequestParam(required=false, defaultValue="1") int page) {
orderService.delete(id);
return "redirect:orderList?flag=1&status="+status+"&page="+page;
}
/**
* 顾客管理
*
* @return
*/
@RequestMapping("/userList")
public String userList(HttpServletRequest request,
@RequestParam(required=false, defaultValue="1") int page) {
request.setAttribute("flag", 2);
request.setAttribute("userList", userService.getList(page, rows));
request.setAttribute("pageTool", PageUtil.getPageTool(request, userService.getTotal(), page, rows));
return "/admin/user_list.jsp";
}
/**
* 顾客添加
*
* @return
*/
@RequestMapping("/userAdd")
public String userAdd(HttpServletRequest request) {
*
* @return
*/
@RequestMapping("/typeDelete")
public String typeDelete(Types type,
@RequestParam(required=false, defaultValue="1") int page) {
typeService.delete(type);
return "redirect:typeList?flag=4&page="+page;
}
/**
* 管理员列表
*
* @return
*/
@RequestMapping("/adminList")
public String adminList(HttpServletRequest request,
@RequestParam(required=false, defaultValue="1") int page) {
request.setAttribute("flag", 5);
request.setAttribute("adminList", adminService.getList(page, rows));
request.setAttribute("pageTool", PageUtil.getPageTool(request, adminService.getTotal(), page, rows));
return "/admin/admin_list.jsp";
}
/**
* 管理员修改自己密码
*
* @return
*/
@RequestMapping("/adminRe")
public String adminRe(HttpServletRequest request, HttpSession session) {
request.setAttribute("flag", 5);
request.setAttribute("admin", adminService.getByUsername(String.valueOf(session.getAttribute("username"))));
return "/admin/admin_reset.jsp";
}
/**
* 管理员修改自己密码
*
* @return
*/
@RequestMapping("/adminReset")
public String adminReset(Admins admin, HttpServletRequest request) {
request.setAttribute("flag", 5);
if (adminService.get(admin.getId()).getPassword().equals(SafeUtil.encode(admin.getPassword()))) {
admin.setPassword(SafeUtil.encode(admin.getPasswordNew()));
adminService.update(admin);
request.setAttribute("admin", admin);
request.setAttribute("msg", "修改成功!");
}else {
request.setAttribute("msg", "原密码错误!");
}
return "/admin/admin_reset.jsp";
/**
* 首页
* @return
*/
@RequestMapping("/index")
public String index(HttpServletRequest request){
request.setAttribute("flag", 1);
request.setAttribute("typeList", typeService.getList());
request.setAttribute("top1List", topService.getList(Tops.TYPE_SCROLL, 1, 1));
request.setAttribute("top2List", topService.getList(Tops.TYPE_LARGE, 1, 6));
request.setAttribute("top3List", topService.getList(Tops.TYPE_SMALL, 1, 8));
return "/index/index.jsp";
}
/**
* 推荐列表
* @return
*/
@RequestMapping("/top")
public String tops(int typeid, @RequestParam(required=false, defaultValue="1")int page, HttpServletRequest request) {
request.setAttribute("flag", typeid==2 ? 7 : 8);
request.setAttribute("typeList", typeService.getList());
request.setAttribute("goodList", goodService.getList(typeid, page, rows));
request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getTotal(typeid), page, rows));
return "/index/goods.jsp";
}
/**
* 商品列表
* @return
*/
@RequestMapping("/goods")
public String goods(int typeid, @RequestParam(required=false, defaultValue="1")int page, HttpServletRequest request){
request.setAttribute("flag", 2);
if (typeid > 0) {
request.setAttribute("type", typeService.get(typeid));
}
request.setAttribute("typeList", typeService.getList());
request.setAttribute("goodList", goodService.getListByType(typeid, page, rows));
request.setAttribute("pageTool", PageUtil.getPageTool(request, goodService.getTotalByType(typeid), page, rows));
return "/index/goods.jsp";
}
/**
* 商品详情
* @return
*/
@RequestMapping("/detail")
public String detail(int goodid, HttpServletRequest request){
request.setAttribute("good", goodService.get(goodid));
request.setAttribute("typeList", typeService.getList());
return "/index/detail.jsp";
}
* @return
*/
@RequestMapping("/typeUpdate")
public String typeUpdate(Types type,
@RequestParam(required=false, defaultValue="1") int page) {
typeService.update(type);
return "redirect:typeList?flag=4&page="+page;
}
/**
* 类目删除
*
* @return
*/
@RequestMapping("/typeDelete")
public String typeDelete(Types type,
@RequestParam(required=false, defaultValue="1") int page) {
typeService.delete(type);
return "redirect:typeList?flag=4&page="+page;
}
/**
* 管理员列表
*
* @return
*/
@RequestMapping("/adminList")
public String adminList(HttpServletRequest request,
@RequestParam(required=false, defaultValue="1") int page) {
request.setAttribute("flag", 5);
request.setAttribute("adminList", adminService.getList(page, rows));
request.setAttribute("pageTool", PageUtil.getPageTool(request, adminService.getTotal(), page, rows));
return "/admin/admin_list.jsp";
}
/**
* 管理员修改自己密码
*
* @return
*/
@RequestMapping("/adminRe")
public String adminRe(HttpServletRequest request, HttpSession session) {
request.setAttribute("flag", 5);
request.setAttribute("admin", adminService.getByUsername(String.valueOf(session.getAttribute("username"))));
return "/admin/admin_reset.jsp";
}
/**
* 订单列表
*
* @return
*/
@RequestMapping("/orderList")
public String orderList(@RequestParam(required=false, defaultValue="0")byte status, HttpServletRequest request,
@RequestParam(required=false, defaultValue="1") int page) {
request.setAttribute("flag", 1);
request.setAttribute("status", status);
request.setAttribute("orderList", orderService.getList(status, page, rows));
request.setAttribute("pageTool", PageUtil.getPageTool(request, orderService.getTotal(status), page, rows));
return "/admin/order_list.jsp";
}
/**
* 订单发货
*
* @return
*/
@RequestMapping("/orderDispose")
public String orderDispose(int id, byte status,
@RequestParam(required=false, defaultValue="1") int page) {
orderService.dispose(id);
return "redirect:orderList?flag=1&status="+status+"&page="+page;
}
/**
* 订单完成
*
* @return
*/
@RequestMapping("/orderFinish")
public String orderFinish(int id, byte status,
@RequestParam(required=false, defaultValue="1") int page) {
orderService.finish(id);
return "redirect:orderList?flag=1&status="+status+"&page="+page;
}
/**
* 订单删除
*
* @return
*/
@RequestMapping("/orderDelete")
public String orderDelete(int id, byte status,
@RequestParam(required=false, defaultValue="1") int page) {
orderService.delete(id);
return "redirect:orderList?flag=1&status="+status+"&page="+page;
}
/**
buf.append("<a class='btn btn-info' href='").append(url).append("?page=").append(page>1 ? page-1 : 1).append(queryString).append("'>上一页</a>\n");
}
buf.append("<h2 style='display:inline;'>[").append(page).append("/").append(pages).append("]</h2>\n");
buf.append("<h2 style='display:inline;'>[").append(total).append("]</h2>\n");
if (page >= pages) {
buf.append("<a class='btn btn-info' disabled >下一页</a>\n");
}else {
buf.append("<a class='btn btn-info' href='").append(url).append("?page=").append(page<pages ? page+1 : pages).append(queryString).append("'>下一页</a>\n");
}
if (page >= pages) {
buf.append("<a class='btn btn-info' disabled >尾页</a>\n");
}else {
buf.append("<a class='btn btn-info' href='").append(url).append("?page=").append(pages).append(queryString).append("'>尾页</a>\n");
}
buf.append("<input type='text' class='form-control' style='display:inline;width:60px;' value=''/>");
buf.append("<a class='btn btn-info' href='javascript:void(0);' onclick='location.href=\"").append(url).append("?page=").append("\"+(this.previousSibling.value)+\"").append(queryString).append("\"'>GO</a>\n");
buf.append("</div>\n");
return buf.toString();
}
}
/**
* 后台登录验证拦截器
*/
public class AdminInterceptor extends HandlerInterceptorAdapter{
/**
* 检测登录状态
*/
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
String uri = request.getRequestURI();
if(uri.contains("css/") || uri.contains("js/") || uri.contains("img/")
|| uri.contains("login") || uri.contains("logout")) {
return true; // 不拦截路径
}
Object username = request.getSession().getAttribute("username");
if (Objects.nonNull(username) && !username.toString().trim().isEmpty()) {
return true; // 登录验证通过
}
response.sendRedirect("login.jsp");
return false; // 其他情况一律拦截
}
model.addAttribute("msg", "用户名不能为空!");
return "/index/register.jsp";
}else if (userService.isExist(user.getUsername())) {
model.addAttribute("msg", "用户名已存在!");
return "/index/register.jsp";
}else {
String password = user.getPassword();
userService.add(user);
user.setPassword(password);
return "redirect:login?flag=-1"; // 注册成功后转去登录
}
}
/**
* 用户登录
* @return
*/
@RequestMapping("/login")
public String login(@RequestParam(required=false, defaultValue="0")int flag, Users user, HttpSession session, Model model) {
model.addAttribute("typeList", typeService.getList());
if(flag==-1) {
flag = 6; // 登录页面
return "/index/login.jsp";
}
if(userService.checkUser(user.getUsername(), user.getPassword())){
session.setAttribute("user", userService.get(user.getUsername()));
return "redirect:index";
} else {
model.addAttribute("msg", "用户名或密码错误!");
return "/index/login.jsp";
}
}
/**
* 注销登录
* @return
*/
@RequestMapping("/logout")
public String logout(HttpSession session) {
session.removeAttribute("user");
session.removeAttribute("order");
return "/index/login.jsp";
}
/**
* 查看购物车
* @return
*/
/**
* 管理员添加
*
* @return
*/
@RequestMapping("/adminSave")
public String adminSave(Admins admin, HttpServletRequest request,
@RequestParam(required=false, defaultValue="1") int page) {
if (adminService.isExist(admin.getUsername())) {
request.setAttribute("msg", "用户名已存在!");
return "/admin/admin_add.jsp";
}
adminService.add(admin);
return "redirect:adminList?flag=5&page="+page;
}
/**
* 管理员修改
*
* @return
*/
@RequestMapping("/adminEdit")
public String adminEdit(int id, HttpServletRequest request) {
request.setAttribute("flag", 5);
request.setAttribute("admin", adminService.get(id));
return "/admin/admin_edit.jsp";
}
/**
* 管理员更新
*
* @return
*/
@RequestMapping("/adminUpdate")
public String adminUpdate(Admins admin,
@RequestParam(required=false, defaultValue="1") int page) {
admin.setPassword(SafeUtil.encode(admin.getPassword()));
adminService.update(admin);
return "redirect:adminList?flag=5&page="+page;
}
/**
* 管理员删除
}
return "ok";
}
/**
* 删除
*/
@RequestMapping("/delete")
public @ResponseBody String delete(int goodid, HttpSession session){
Orders order = (Orders) session.getAttribute(INDENT_KEY);
if (order != null) {
session.setAttribute(INDENT_KEY, orderService.deleteIndentItem(order, goodService.get(goodid)));
}
return "ok";
}
/**
* 提交订单
* @return
*/
@RequestMapping("/save")
public String save(ServletRequest request, HttpSession session, Model model){
model.addAttribute("typeList", typeService.getList());
Users user = (Users) session.getAttribute("user");
if (user == null) {
request.setAttribute("msg", "请登录后提交订单!");
return "/index/login.jsp";
}
Orders sessionOrder = (Orders) session.getAttribute(INDENT_KEY);
if (sessionOrder != null) {
if (sessionOrder != null) {
for(Items item : sessionOrder.getItemList()){ // 检测商品库存(防止库存不足)
Goods product = goodService.get(item.getGoodId());
if(item.getAmount() > product.getStock()){
request.setAttribute("msg", "商品 ["+product.getName()+"] 库存不足! 当前库存数量: "+product.getStock());
return "/index/cart.jsp";
}
}
}
sessionOrder.setUserId(user.getId());
sessionOrder.setUser(userService.get(user.getId()));
int orderid = orderService.save(sessionOrder); // 保存订单
session.removeAttribute(INDENT_KEY); // 清除购物车
return "redirect:topay?orderid="+orderid;
}
/**
* 管理员添加
*
* @return
*/
@RequestMapping("/adminSave")
public String adminSave(Admins admin, HttpServletRequest request,
@RequestParam(required=false, defaultValue="1") int page) {
if (adminService.isExist(admin.getUsername())) {
request.setAttribute("msg", "用户名已存在!");
return "/admin/admin_add.jsp";
}
adminService.add(admin);
return "redirect:adminList?flag=5&page="+page;
}
/**
* 管理员修改
*
* @return
*/
@RequestMapping("/adminEdit")
public String adminEdit(int id, HttpServletRequest request) {
request.setAttribute("flag", 5);
request.setAttribute("admin", adminService.get(id));
return "/admin/admin_edit.jsp";
}
/**
* 管理员更新
*
* @return
*/
@RequestMapping("/adminUpdate")
public String adminUpdate(Admins admin,
@RequestParam(required=false, defaultValue="1") int page) {
admin.setPassword(SafeUtil.encode(admin.getPassword()));
adminService.update(admin);
return "redirect:adminList?flag=5&page="+page;
}
* 类目删除
*
* @return
*/
@RequestMapping("/typeDelete")
public String typeDelete(Types type,
@RequestParam(required=false, defaultValue="1") int page) {
typeService.delete(type);
return "redirect:typeList?flag=4&page="+page;
}
/**
* 管理员列表
*
* @return
*/
@RequestMapping("/adminList")
public String adminList(HttpServletRequest request,
@RequestParam(required=false, defaultValue="1") int page) {
request.setAttribute("flag", 5);
request.setAttribute("adminList", adminService.getList(page, rows));
request.setAttribute("pageTool", PageUtil.getPageTool(request, adminService.getTotal(), page, rows));
return "/admin/admin_list.jsp";
}
/**
* 管理员修改自己密码
*
* @return
*/
@RequestMapping("/adminRe")
public String adminRe(HttpServletRequest request, HttpSession session) {
request.setAttribute("flag", 5);
request.setAttribute("admin", adminService.getByUsername(String.valueOf(session.getAttribute("username"))));
return "/admin/admin_reset.jsp";
}
/**
* 管理员修改自己密码
*
* @return
*/
@RequestMapping("/adminReset")
*
* @return
*/
@RequestMapping("/userSave")
public String userSave(Users user, HttpServletRequest request,
@RequestParam(required=false, defaultValue="1") int page) {
if (userService.isExist(user.getUsername())) {
request.setAttribute("msg", "用户名已存在!");
return "/admin/user_add.jsp";
}
userService.add(user);
return "redirect:userList?flag=2&page="+page;
}
/**
* 顾客密码重置页面
*
* @return
*/
@RequestMapping("/userRe")
public String userRe(int id, HttpServletRequest request) {
request.setAttribute("flag", 2);
request.setAttribute("user", userService.get(id));
return "/admin/user_reset.jsp";
}
/**
* 顾客密码重置
*
* @return
*/
@RequestMapping("/userReset")
public String userReset(Users user,
@RequestParam(required=false, defaultValue="1") int page) {
String password = SafeUtil.encode(user.getPassword());
user = userService.get(user.getId());
user.setPassword(password);
userService.update(user);
return "redirect:userList?flag=2&page="+page;
}
/**
* 顾客更新
*
* @return
*/
@RequestMapping("/userEdit")
/**
* 分页工具类
*/
public class PageUtil {
/**
* 获取分页代码
* @param total 总记录数
* @param page 当前页面
* @param size 每页数量
* @return
*/
public static String getPageTool(HttpServletRequest request, long total, int page, int size){
long pages = total % size ==0 ? total/size : total /size + 1;
pages = pages==0 ? 1 : pages;
String url = request.getRequestURL().toString();
StringBuilder queryString = new StringBuilder();
Enumeration<String> enumeration = request.getParameterNames();
try { // 拼装请求参数
while (enumeration.hasMoreElements()) {
String element = (String) enumeration.nextElement();
if(!element.contains("page")) { // 跳过page参数
queryString.append("&").append(element).append("=").append(java.net.URLEncoder.encode(request.getParameter(element),"UTF-8"));
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
// 拼装分页代码
StringBuilder buf = new StringBuilder();
buf.append("<div style='text-align:center;'>\n");
if (page <= 1) {
buf.append("<a class='btn btn-info' disabled >首页</a>\n");
}else{
buf.append("<a class='btn btn-info' href='").append(url).append("?page=").append(1).append(queryString).append("'>首页</a>\n");
}
if (page <= 1) {
buf.append("<a class='btn btn-info' disabled >上一页</a>\n");
}else {
buf.append("<a class='btn btn-info' href='").append(url).append("?page=").append(page>1 ? page-1 : 1).append(queryString).append("'>上一页</a>\n");
public String save(ServletRequest request, HttpSession session, Model model){
model.addAttribute("typeList", typeService.getList());
Users user = (Users) session.getAttribute("user");
if (user == null) {
request.setAttribute("msg", "请登录后提交订单!");
return "/index/login.jsp";
}
Orders sessionOrder = (Orders) session.getAttribute(INDENT_KEY);
if (sessionOrder != null) {
if (sessionOrder != null) {
for(Items item : sessionOrder.getItemList()){ // 检测商品库存(防止库存不足)
Goods product = goodService.get(item.getGoodId());
if(item.getAmount() > product.getStock()){
request.setAttribute("msg", "商品 ["+product.getName()+"] 库存不足! 当前库存数量: "+product.getStock());
return "/index/cart.jsp";
}
}
}
sessionOrder.setUserId(user.getId());
sessionOrder.setUser(userService.get(user.getId()));
int orderid = orderService.save(sessionOrder); // 保存订单
session.removeAttribute(INDENT_KEY); // 清除购物车
return "redirect:topay?orderid="+orderid;
}
request.setAttribute("msg", "处理失败!");
return "/index/cart.jsp";
}
/**
* 支付页面
* @return
*/
@RequestMapping("/topay")
public String topay(int orderid, ServletRequest request, Model model) {
model.addAttribute("typeList", typeService.getList());
request.setAttribute("order", orderService.get(orderid));
return "/index/pay.jsp";
}
/**
* 支付(模拟)
if (userLogin == null) {
model.addAttribute("msg", "请先登录!");
return "/index/login.jsp";
}
// 进入个人中心
if (Objects.isNull(user) || Objects.isNull(user.getId())) {
return "/index/my.jsp";
}
Users u = userService.get(user.getId());
// 修改资料
u.setName(user.getName());
u.setPhone(user.getPhone());
u.setAddress(user.getAddress());
userService.update(u); // 更新数据库
session.setAttribute("user", u); // 更新session
model.addAttribute("msg", "信息修改成功!");
// 修改密码
if(user.getPasswordNew()!=null && !user.getPasswordNew().trim().isEmpty()) {
if (user.getPassword()!=null && !user.getPassword().trim().isEmpty()
&& SafeUtil.encode(user.getPassword()).equals(u.getPassword())) {
if (user.getPasswordNew()!=null && !user.getPasswordNew().trim().isEmpty()) {
u.setPassword(SafeUtil.encode(user.getPasswordNew()));
}
userService.update(u); // 更新数据库
session.setAttribute("user", u); // 更新session
model.addAttribute("msg", "密码修改成功!");
}else {
model.addAttribute("msg", "原密码错误!");
}
}
return "/index/my.jsp";
}
}