菜品添加功能实现了,修改删除和查询有问题

菜品添加功能实现了,修改删除和查询有问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
1.老师我接收数据的方法写在一个java类里,这样有什么问题吗?
2.菜品修改功能点击修改之后,页面跳转到一个白页,是是因为共用这个接收数据的方法有问题吗?还是FoodDaolpml这个类里面的bd集合不是同一个,所以修改的时候里面没有所以出现白页?或者是其他什么原因?
3.点击删除和根据菜品名称查询,页面重定向都不成功,跳转到一个白页
package com.imooc.food.utiles;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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 com.imooc.food.Food;
public class UploadFileData {
 /**
  * 文件的数据接收类
  * @throws IOException 
  */
 public static Food UploadFile(HttpServletRequest request) throws IOException{
  String url=null;
  //定义一个Map集合用于保存接收到的数据
  Map<String ,String>map =new HashMap<String ,String>();
  //创建一个磁盘文件项工厂对象
  DiskFileItemFactory diskFileItemFactory =new DiskFileItemFactory();
  //创建一个核心解析类
  ServletFileUpload servletFileUpload =new ServletFileUpload(diskFileItemFactory);
  //解析request请求,返回的是List集合,集合中存放的是FileItem对象
  List<FileItem> list;
  try {
   list = servletFileUpload.parseRequest(request);
   //遍历集合,获得每个FileItem,判断是表单项还是文件上传项
   for (FileItem fileItem : list) {
    if (fileItem.isFormField()) {
     String name=fileItem.getFieldName();
     String value =fileItem.getString("UTF-8");
     System.out.println(name +"    " +value);
     map.put(name,value);
    }else{
     //文件上传项
     //文件上传功能
     //获得上传文件的名称
     String FileName =fileItem.getName();
     //通过工具类获得唯一文件名
     String uuidFileName = UploadUtils.getUUIDFileName(FileName);
     //获得文件上传数据
     InputStream is = fileItem.getInputStream();
     //获得文件上传的路径
     String path =request.getServletContext().getRealPath("/upload");
     //将输入流对接到输出流
     url =path + "\\"  + uuidFileName;
      
     OutputStream os = new FileOutputStream(url);
      
     int len = 0;
     byte[] b = new byte[1024];
     while((len = is.read(b))!= -1){
      os.write(b, 0, len);
     }
     is.close();
     os.close();
    }
   }
  catch (FileUploadException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  System.out.println(map);
  Food food=new Food();
  food.setId(map.get("id"));
  food.setName(map.get("foodName"));
  food.setPrice(map.get("price"));
  food.setDescribe(map.get("describe"));
  food.setTaste(map.get("taste"));
  food.setFoodAdress(url);
  return food;
  }
}
  
 
package com.imooc.food.servlet;
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 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 com.imooc.food.Food;
import com.imooc.food.FoodDaolmpl;
import com.imooc.food.utiles.UploadFileData;
import com.imooc.food.utiles.UploadUtils;
/**
 * 菜品添加的Servlet
 */
@WebServlet("/FoodAddServlet")
public class FoodAddServlet extends HttpServlet {
 protected void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  // 数据的接收
  Food food = UploadFileData.UploadFile(request);
  FoodDaolmpl.addFood(food);
  // 添加成功,跳转到查询页面
  response.sendRedirect(request.getContextPath() + "/showFoodList.jsp");
 }
 /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
  *      response)
  */
 protected void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  // TODO Auto-generated method stub
  doGet(request, response);
 }
}
 
 
package com.imooc.food.servlet;
import java.io.IOException;
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 com.imooc.food.Food;
import com.imooc.food.FoodDaolmpl;
import com.imooc.food.utiles.UploadFileData;
/**
 * Servlet implementation class FoodUpdateServlet
 */
@WebServlet("/FoodUpdateServlet")
public class FoodUpdateServlet extends HttpServlet {
  
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  Food food=UploadFileData.UploadFile(request); 
  FoodDaolmpl.updateFood(food);
   
  //修改成功,跳转到查询页面
  response.sendRedirect(request.getContextPath()+"/showFoodList.jsp");
 }
 /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  doGet(request, response);
 }
}

http://img1.sycdn.imooc.com//climg/5c9b90c60001b03e04840830.jpg

package com.imooc.food.servlet;

import java.io.IOException;
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 com.imooc.food.Food;
import com.imooc.food.FoodDaolmpl;

/**
 * Servlet implementation class SelectServlet
 */
@WebServlet("/SelectServlet")
public class SelectServlet extends HttpServlet {
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String name =request.getParameter("foodName");
  Food food =FoodDaolmpl.getFoodByName(name);
  request.setAttribute("food", food);
  
  //查询成功,返回到查询界面
  response.sendRedirect(request.getContextPath()+"/showFoodList.jsp");
 }

 /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  doGet(request, response);
 }

}


package com.imooc.food.servlet;

import java.io.IOException;
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 com.imooc.food.Food;
import com.imooc.food.FoodDaolmpl;

/**
 * Servlet implementation class FoodDeleteServlet
 */
@WebServlet("/FoodDeleteServlet")
public class FoodDeleteServlet extends HttpServlet {
 
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String id =request.getParameter("id");
  for (Food food : FoodDaolmpl.getAllFood()) {
   if(food.getName().equals("id")){
    FoodDaolmpl.deleteFoodById(id);
    request.getRequestDispatcher("/showFoodList.jsp").forward(request, response);
   }else{
    request.getRequestDispatcher("/showFoodList.jsp").forward(request, response);
   }
  }
 }

 /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  doGet(request, response);
 }

}


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

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

2回答
提问者 造梦大师 2019-03-28 15:11:39
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%@ page import="com.imooc.food.*"%> 
 <%
    String path = request.getContextPath(); //path是project的名字
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>菜品信息展示</title>
<style type="text/css">
</style>
</head>
<body>
 <center>
  <h1>菜品查询</h1>
  <table border="1px" cellspacing="0px" cellpadding="0px" width="800px">
   <thead>
    <tr>
     <th>菜品ID</th>
     <th>菜名</th>
     <th>口味</th>
     <th>菜品图片</th>
     <th>价格</th>
     <th>菜品描述</th>
    </tr>
   </thead>
   <tbody>
    <%
     for(Food food:FoodDaolmpl.getAllFood()){
    %>
     <tr>
      <td><%=food.getId() %></td>
      <td><%=food.getName() %></td>
      <td><%=food.getTaste() %></td>
      <td><img src="<%=basePath%>upload/<%=food.getFoodAdress().substring(food.getFoodAdress().lastIndexOf("\\")+1) %>" /></td>
      <td><%=food.getPrice() %></td>
      <td><%=food.getDescribe() %></td>
     </tr>
    <%
     }
    %>
   </tbody>
  </table>
 </center>
</body>
</html>


  • 你好同学,我在这个问答中回复你了,http://class.imooc.com/course/qadetail/103318,祝学习愉快~
    2019-03-28 18:23:39
chrismorgen 2019-03-28 14:50:47

1、你这么写是没有问题的。

2、同学重定向之后是指showFoodList.jsp页面为空白页吗?建议同学使用转发试试,如果问题没有解决,建议你将showFoodList.jsp页面的代码也粘贴上来,只有产看了你具体的逻辑才能找出原因,祝学习愉快~

  • 提问者 造梦大师 #1
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.imooc.food.*"%> <% String path = request.getContextPath(); //path是project的名字 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <base href="<%=basePath%>"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>菜品信息展示</title> <style type="text/css"> </style> </head> <body> <center> <h1>菜品查询</h1> <table border="1px" cellspacing="0px" cellpadding="0px" width="800px"> <thead> <tr> <th>菜品ID</th> <th>菜名</th> <th>口味</th> <th>菜品图片</th> <th>价格</th> <th>菜品描述</th> </tr> </thead> <tbody> <% for(Food food:FoodDaolmpl.getAllFood()){ %> <tr> <td><%=food.getId() %></td> <td><%=food.getName() %></td> <td><%=food.getTaste() %></td> <td><img src="<%=basePath%>upload/<%=food.getFoodAdress().substring(food.getFoodAdress().lastIndexOf("\\")+1) %>" /></td> <td><%=food.getPrice() %></td> <td><%=food.getDescribe() %></td> </tr> <% } %> </tbody> </table> </center> </body> </html>
    2019-03-28 15:11:11
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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