关于添加菜品会重复添加的问题

关于添加菜品会重复添加的问题

package foodServlet;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import utils.FoodDaoImpl;
import utils.UploadUtils;

/*
 * 菜品添加的servlet
 */
@WebServlet("/FoodAddServlet")
public class FoodAddServlet extends HttpServlet {

 protected void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  Map map;
  try {
   map = UploadUtils.UploadFile(request, "/upload");
   // 判断菜品ID是否存在
   for (Map<String, Object> food : FoodDaoImpl.getDb()) {
    if (food.get("id").equals(map.get("id"))) {
     request.setAttribute("msg", "该菜品已经存在,请重新添加");
     request.getRequestDispatcher("/myFile.jsp/addFood.jsp").forward(request, response);

    }

   }
   FoodDaoImpl.addFood(map);
  } catch (FileUploadException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

  // 添加成功,跳转到展示页面
  response.sendRedirect(request.getContextPath() + "/myFile.jsp/showFoodList.jsp");
 }

 protected void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  doGet(request, response);
 }

}

http://img1.sycdn.imooc.com//climg/5b1de0e80001c7f305040086.jpghttp://img1.sycdn.imooc.com//climg/5b1de1080001c63709480338.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
提问者 liqihang 2018-06-11 13:46:16
  • 建议你可以在第43行的后边添加 return;使其转发后跳出方法。
    2018-06-11 14:28:03
好帮手慕阿莹 2018-06-11 12:28:32

建议你在if (food.get("id").equals(map.get("id")))里边,request.setAttribute("msg", "该菜品已经存在,请重新添加");的上边写个输出语句,比如“ System.out.println("测试是否找到该id");”,再重启服务器运行一下,看看是否控制台有该输出,用来验证一下,是否进入到了该if判断里,或者打断点测试一下,是否进入到了该if判断里。因为你的代码只贴了一部分,无法帮你判断具体原因,你可以先按上边的方法测试一下。祝学习愉快

  • 提问者 liqihang #1
    可以显示,能进入if判断,但是有异常,我贴图出来在上边老师看下。
    2018-06-11 13:46:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10204    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码