基于javaweb+mysql的ssm在线美食分享推荐系统(java+ssm+jsp+jquery+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM在线美食分享推荐系统(java+ssm+jsp+jquery+mysql)
项目介绍
该项目为前后台项目,分为普通用户与管理员两种角色,前台普通用户登录,后台管理员登录;
管理员角色包含以下功能: 管理员登录,用户管理,一级分类管理,二级分类管理,美食管理,留言管理等功能。
用户角色包含以下功能: 用户登录,按分类查看,写留言等功能。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本; 6.是否Maven项目:否;
技术栈
- 后端:Spring+SpringMVC+Mybatis 2. 前端:JSP+jQuery+Ajax
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/ 登录
// 为定单付款
@RequestMapping("/payOrder")
public String payOrder(HttpServletRequest request,Orders orders,@RequestParam String receiveInfo,@RequestParam String phoNum,@RequestParam String accepter, Model model) throws Exception {
orders.setReceiveinfo(receiveInfo);
orders.setPhonum(phoNum);
orders.setAccepter(accepter);
orderService.payOrder(orders);
cartController.isZhe = false;
request.getSession().removeAttribute("zhe");
User loginUser = (User) request.getSession().getAttribute("loginUser");
if (loginUser == null) {
model.addAttribute("message","您还没有登录!");
return "msg";
}
List<Orders> list = ordersMapper.findOrderByUidAndPage(loginUser.getUid(),0,100);
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for(Orders tempOrders:list) {
for(Orderitem orderitem:tempOrders.getOiList()) {
if(map.get(orderitem.getPid()) == null) {
map.put(orderitem.getPid(), 1);
}else {
map.put(orderitem.getPid(), map.get(orderitem.getPid()) + 1);
}
}
}
int max = 0;
int temp =0;
int value=0;
for(int key:map.keySet()){
value = map.get(key);
if(max<value){
max = value;
temp = key;
}
}
if(map.get(temp)!=null) {
request.getSession().setAttribute("pid", temp);
}
return "redirect:myOrder.action?page=1";
}
//payOrderAganin
@RequestMapping("/payOrderAganin")
public String payOrderAganin(@RequestParam int oid,HttpServletRequest request){
Orders noPayOrder = orderService.findOrderByOid(oid);
request.getSession().setAttribute("orders", noPayOrder);
return "order";
}
// 查询myOrder
@Controller
public class cartController {
@Autowired
private ProductService productService;
@Autowired
private OrderService orderService;
@Autowired
private OrdersMapper ordersMapper;
static boolean isZhe = false;
// 添加到购物车
@RequestMapping("/addCart")
public String addCart(HttpServletRequest request,@RequestParam int pid,@RequestParam int count, Model model){
Integer youhui = 0;
try {
youhui = Integer.parseInt(String.valueOf(request.getSession().getAttribute("pid")));
} catch (NumberFormatException e) {
}
Product product = productService.finbProductByPid(pid);
// 存进一个购物项
CartItem cartItem = new CartItem();
if(pid == youhui) {
cartItem.setCount(count);
cartItem.setProduct(product);
cartItem.setSubtotle(count*product.getShopPrice());
cartItem.setSubtotle(cartItem.getSubtotle() - cartItem.getProduct().getShopPrice()*0.2);
Cart cart=getCart(request);
cart.addCart(cartItem);
isZhe = true;
request.getSession().setAttribute("zhe","您购买的"+cartItem.getProduct().getPname()+"享受折扣哦~单件美食已经为打8折哦~");
}else {
cartItem.setCount(count);
cartItem.setProduct(product);
cartItem.setSubtotle(count*product.getShopPrice());
Cart cart=getCart(request);
cart.addCart(cartItem);
}
// 存进购物车
// if(hList.size()>3)
// {
// sList = new ArrayList<Product>();
// sList.add(hList.get(0));
// sList.add(hList.get(1));
// sList.add(hList.get(2));
// model.addAttribute("sList", sList);
// }
// else
// {
// model.addAttribute("sList", hList);
// }
return "index";
}
@RequestMapping("/about")
public String about(Model model,HttpServletRequest request) throws Exception {
return "about";
}
@RequestMapping("/contact")
public String contact(Model model,HttpServletRequest request) throws Exception {
return "contact";
}
@RequestMapping("/delivery")
public String delivery(Model model,HttpServletRequest request) throws Exception {
return "delivery";
}
//
@RequestMapping("/searchProduct")
public String searchProduct(@RequestParam String condition,Model model,HttpServletRequest request) throws Exception {
//查询一级分类
List<Category> cList = categoryService.findCategory();
request.getSession().getServletContext().setAttribute("cList",cList);
//查询美食
List<Product> hList= productService.findHotProduct();
model.addAttribute("hList", hList);
//搜索美食
List<Product> srList = productService.searchProduct(condition);
model.addAttribute("srList", srList);
//滚动图片专用,最多显示3个美食
List<Product> sList;
if(map.get(orderitem.getPid()) == null) {
map.put(orderitem.getPid(), 1);
}else {
map.put(orderitem.getPid(), map.get(orderitem.getPid()) + 1);
}
}
}
int max = 0;
int temp =0;
int value=0;
for(int key:map.keySet()){
value = map.get(key);
if(max<value){
max = value;
temp = key;
}
}
if(map.get(temp) >= 2&&!isZhe) {
Map<Integer, CartItem> cartMap = cart.getCartItem();
for(int key:cartMap.keySet()){
if(key == pid) {
request.getSession().removeAttribute("zhe");
isZhe = true;
}
}
}
return "redirect:myCart.action";
}
public Cart getCart(HttpServletRequest request) {
Cart cart = (Cart) request.getSession().getAttribute("cart");
if (cart == null) {
cart = new Cart();
request.getSession().setAttribute("cart", cart);
}
return cart;
}
}
}
}
}
int max = 0;
int temp =0;
int value=0;
for(int key:map.keySet()){
value = map.get(key);
if(max<value){
max = value;
temp = key;
}
}
try {
user.setOften(productService.finbProductByPid(temp).getPname());
} catch (Exception e) {
user.setOften("您还没有购买记录哦~");
}
}
model.addAttribute("userList", userList);
model.addAttribute("msg", "!");
return "admin/user/list";
}
@RequestMapping("/admin/admin_deleteUser")
public String admin_deleteUser(Model model,HttpServletRequest request,Integer id) throws Exception {
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
User user1 = userService.findById(id);
user1.setState(0);
userService.deleteById(user1);
List<User> userList = userService.admin_findAll();
for (User user:userList) {
List<Orders> list = ordersMapper.findOrderByUidAndPage(user.getUid(),0,100);
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for(Orders orders:list) {
for(Orderitem orderitem:orders.getOiList()) {
if(map.get(orderitem.getPid()) == null) {
map.put(orderitem.getPid(), 1);
}else {
}
if(map.get(temp)!=null) {
request.getSession().setAttribute("pid", temp);
}
return "redirect:myOrder.action?page=1";
}
//payOrderAganin
@RequestMapping("/payOrderAganin")
public String payOrderAganin(@RequestParam int oid,HttpServletRequest request){
Orders noPayOrder = orderService.findOrderByOid(oid);
request.getSession().setAttribute("orders", noPayOrder);
return "order";
}
// 查询myOrder
@RequestMapping("/myOrder")
public String myOrder(@RequestParam int page, Model model,
HttpServletRequest request) throws Exception {
User loginUser = (User) request.getSession().getAttribute("loginUser");
PageBean<Orders> pageBean = orderService.findOrderByUidAndPage(page,loginUser.getUid());
model.addAttribute("pageBean", pageBean);
return "orderList";
}
// 确认收货
@RequestMapping("/updateState")
public String updateState(@RequestParam int oid ) throws Exception {
orderService.updateOrderStatus(oid, 3);
return "redirect:myOrder.action?page=1";
}
}
// admin 的二级分类的管理
@RequestMapping("/admin/adminCategorySecond_findAllByPage")
public String adminCategorySecond_findAllByPage(@RequestParam int page,Model model,HttpServletRequest request) {
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
PageBean<Categorysecond> csPageBean = categorySecondService
.adminCategorySecond_findAllByPage(page);
/*List<Categorysecond> list = csPageBean.getList();
for (Categorysecond categorysecond : list) {
System.out.println(categorysecond.getCsname());
}*/
model.addAttribute("csPageBean", csPageBean);
return "admin/categorysecond/list";
}
@RequestMapping("admin/adminCategorySecond_addPage")
public String adminCategorySecond_addPage(Model model,HttpServletRequest request) throws Exception{
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
List<Category> categoryList = categoryService.adminbFindCategory();
model.addAttribute("categoryList", categoryList);
return "admin/categorysecond/add";
}
@RequestMapping("admin/adminCategorySecond_save")
public String adminCategorySecond_save(@RequestParam String csname,@RequestParam int cid,HttpServletRequest request) throws Exception{
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
Categorysecond categorysecond = new Categorysecond();
categorysecond.setCsname(csname);
categorysecond.setCid(cid);
categorySecondService.adminCategorySecond_save(categorysecond);
return "redirect:/admin/adminCategorySecond_findAllByPage.action?page=1";
}
@RequestMapping("admin/adminCategorySecond_edit")
public String adminCategorySecond_edit(@RequestParam int csid,Model model,HttpServletRequest request) throws Exception{
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
}
//
@RequestMapping("/searchProduct")
public String searchProduct(@RequestParam String condition,Model model,HttpServletRequest request) throws Exception {
//查询一级分类
List<Category> cList = categoryService.findCategory();
request.getSession().getServletContext().setAttribute("cList",cList);
//查询美食
List<Product> hList= productService.findHotProduct();
model.addAttribute("hList", hList);
//搜索美食
List<Product> srList = productService.searchProduct(condition);
model.addAttribute("srList", srList);
//滚动图片专用,最多显示3个美食
List<Product> sList;
if(hList.size()>3)
{
sList = new ArrayList<Product>();
sList.add(hList.get(0));
sList.add(hList.get(1));
sList.add(hList.get(2));
model.addAttribute("sList", sList);
}
else
{
model.addAttribute("sList", hList);
}
return "searchProduct";
}
}
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
messageService.deleteMessage(messageid);
return "redirect:/admin/adminMessage_findAllByPage.action?page=1";
}
}
@Controller
public class loginController {
@Autowired
private UserService userService;
@Autowired
map.put(orderitem.getPid(), map.get(orderitem.getPid()) + 1);
}
}
}
int max = 0;
int temp =0;
int value=0;
for(int key:map.keySet()){
value = map.get(key);
if(max<value){
max = value;
temp = key;
}
}
if(map.get(temp)!=null) {
request.getSession().setAttribute("pid", temp);
}
request.getSession().setAttribute("loginUser", loginUser);
request.getSession().removeAttribute("message");
return "redirect:index.action";
}
// 用户退出
@RequestMapping("userLogout")
public String userLogout(HttpServletRequest request,
HttpServletResponse response, Model model) {
request.getSession().removeAttribute("loginUser");
response.setHeader("content-type", "text/html;charset=UTF-8");
response.setHeader("refresh", "5;url=/ssm_caipu_recsys/");
model.addAttribute("message", "退出成功,系统将在5秒之后跳转到首页......");
return "msg";
}
// 获取用户信息
@RequestMapping("user_editUser")
public String user_editUser(HttpServletRequest request,Integer id,
HttpServletResponse response, Model model) throws Exception {
User user = userService.findById(id);
model.addAttribute("user", user);
return "edituser";
}
// 编辑用户
@RequestMapping("user_editUserdone")
public String user_editUserdone(HttpServletRequest request,User user,
for(Orders orders:list) {
for(Orderitem orderitem:orders.getOiList()) {
if(map.get(orderitem.getPid()) == null) {
map.put(orderitem.getPid(), 1);
}else {
map.put(orderitem.getPid(), map.get(orderitem.getPid()) + 1);
}
}
}
int max = 0;
int temp =0;
int value=0;
for(int key:map.keySet()){
value = map.get(key);
if(max<value){
max = value;
temp = key;
}
}
try {
user.setOften(productService.finbProductByPid(temp).getPname());
} catch (Exception e) {
user.setOften("您还没有购买记录哦~");
}
}
model.addAttribute("userList", userList);
model.addAttribute("msg", "!");
return "admin/user/list";
}
@RequestMapping("/admin/admin_deleteUser")
public String admin_deleteUser(Model model,HttpServletRequest request,Integer id) throws Exception {
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
User user1 = userService.findById(id);
user1.setState(0);
userService.deleteById(user1);
List<User> userList = userService.admin_findAll();
for (User user:userList) {
List<Orders> list = ordersMapper.findOrderByUidAndPage(user.getUid(),0,100);
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for(Orders orders:list) {
for(Orderitem orderitem:orders.getOiList()) {
if(map.get(orderitem.getPid()) == null) {
map.put(orderitem.getPid(), 1);
}else {
map.put(orderitem.getPid(), map.get(orderitem.getPid()) + 1);
}
public Cart getCart(HttpServletRequest request) {
Cart cart = (Cart) request.getSession().getAttribute("cart");
if (cart == null) {
cart = new Cart();
request.getSession().setAttribute("cart", cart);
}
return cart;
}
}
@Controller
public class checkImgController {
@RequestMapping("checkImg")
public void checkImg(HttpServletRequest request ,HttpServletResponse response) throws IOException {
int width = 120;
int height = 30;
// 步骤一 绘制一张内存中图片
BufferedImage bufferedImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// 步骤二 图片绘制背景颜色 ---通过绘图对象
Graphics graphics = bufferedImage.getGraphics();// 得到画图对象 --- 画笔
// 绘制任何图形之前 都必须指定一个颜色
graphics.setColor(getRandColor(200, 250));
graphics.fillRect(0, 0, width, height);
// 步骤三 绘制边框
graphics.setColor(Color.WHITE);
graphics.drawRect(0, 0, width - 1, height - 1);
product.setImage("products/" + fileName);
}
System.out.println(product.getImage());
productService.adminProduct_save(product);
return "redirect:/admin/adminProduct_findAllByPage.action?page=1";
}
@RequestMapping("admin/adminProduct_deletecs")
public String adminProduct_deletecs(@RequestParam int pid,HttpServletRequest request) throws Exception{
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
productService.adminProduct_deletecs(pid);
return "redirect:/admin/adminProduct_findAllByPage.action?page=1";
}
/**
* 编辑美食
*
* @param pid
* @param model
* @param request
* @return
* @throws Exception
*/
@RequestMapping("admin/adminProduct_edit")
public String adminProduct_edit(@RequestParam int pid,Model model,HttpServletRequest request) throws Exception{
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
Product product = productService.finbProductByPid(pid);
model.addAttribute("findByPid", product);
//查询出所有的二级分类
List<Categorysecond> cslist = categorySecondService.findAll();
model.addAttribute("cslist", cslist);
return "admin/product/edit";
}
@RequestMapping("/admin/adminProduct_update")
public String adminProduct_update(Product product,HttpServletRequest request,MultipartFile file) throws Exception {
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
product.setPdate(new Date());
public void postHandle(HttpServletRequest request, HttpServletResponse response,
Object arg2, ModelAndView arg3) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
}
@Controller
public class CategorySecondController {
@Autowired
private ProductService productService;
//根据一级目录查找二级目录下面的美食(使用延迟加载但是这里不知为啥使用起来出错了)
@RequestMapping("/findCategorySecond")
public String findCategorySecond(HttpServletRequest request,@RequestParam int cid,Model model,@RequestParam int page) throws Exception {
request.getSession().setAttribute("cid",cid);
PageBean<Product> proPageBean = productService.findProductyBycid(cid,page);
model.addAttribute("pageBean",proPageBean);
return "category";
}
// 根据csid来分页查询美食
@RequestMapping("/findCategorySecond1")
public String findCategorySecond1(@RequestParam int csid,Model model,@RequestParam int page){
PageBean<Product> proPageBean = productService.finbProductByCsid(csid,page);
model.addAttribute("pageBean",proPageBean);
return "category";
}
}
Object object) throws Exception {
String uri = request.getRequestURI();
if(uri.indexOf("admin.action")>=0){
return true;
}
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin!=null){
return true ;
}
request.getRequestDispatcher("/WEB-INF/jsp/admin/index.jsp").forward(request, response);
return true;
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
}
public class golbalException implements HandlerExceptionResolver {
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
response.setHeader("content-type", "text/html;charset=UTF-8");
response.setHeader("refresh", "5;url=/ssm_caipu_recsys/index.action");
zdyException exception =null;
if(ex instanceof zdyException){
exception=(zdyException)ex;
product.setShopPrice(88.0);
productService.adminProduct_update(product);
return "redirect:/admin/adminProduct_findAllByPage.action?page=1";
}
/** 订单管理模块 **/
@RequestMapping("/admin/adminOrder_findAllByPage")
public String adminOrder_findAllByPage(@RequestParam int page, Model model,HttpServletRequest request)
throws Exception {
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
PageBean<Orders> allProPageBean = orderService.findAllOrderByStateAndPage(page);
model.addAttribute("pageBean", allProPageBean);
return "admin/order/list";
}
//adminOrder_findByState
@RequestMapping("/admin/adminOrder_findByState")
public String adminOrder_findByState(@RequestParam int page,@RequestParam int state, Model model,HttpServletRequest request)
throws Exception {
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
if(state == 0) {
PageBean<Orders> allProPageBean = orderService.findAllOrderByStateAndPage(state,page);
model.addAttribute("pageBean", allProPageBean);
return "admin/order/weifukuanlist";
}
else if(state == 1) {
PageBean<Orders> allProPageBean = orderService.findAllOrderByStateAndPage(state,page);
model.addAttribute("pageBean", allProPageBean);
return "admin/order/yijingfukuanlist";
}
else if(state == 2) {
PageBean<Orders> allProPageBean = orderService.findAllOrderByStateAndPage(state,page);
model.addAttribute("pageBean", allProPageBean);
return "admin/order/fahuolist";
}
else {
PageBean<Orders> allProPageBean = orderService.findAllOrderByStateAndPage(state,page);
model.addAttribute("pageBean", allProPageBean);
return "admin/order/wanchenglist";
}
}
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
}
public class golbalException implements HandlerExceptionResolver {
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
response.setHeader("content-type", "text/html;charset=UTF-8");
response.setHeader("refresh", "5;url=/ssm_caipu_recsys/index.action");
zdyException exception =null;
if(ex instanceof zdyException){
exception=(zdyException)ex;
}else{
exception.setMessage("发生了未知异常");
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("errorMessage",exception.getMessage()+"系统将在5秒之后跳转到首页......");
modelAndView.setViewName("error");
return modelAndView;
}
}
@Controller
public class ProductController {
@Autowired
private ProductService prodcutService;
@RequestMapping("/productFindByPid")