質問編集履歴

3

解決

2018/03/02 03:34

投稿

superZako
superZako

スコア11

test CHANGED
File without changes
test CHANGED
@@ -1,349 +1,3 @@
1
- csvファイルを読み込んで、それをデータベース登録するという処理です
1
+ csv一括データベース登録、解決しました。コメントくださったかた。ありがうござました
2
2
 
3
- Eclipseでデバッグしていきながらcsvファイルを読み込んで、データベースに登録できていたのですが、ブラウザ上で実行ができず門前苦闘している間におそらくブラウザ側から自分のPC内が見れないかの疑問に至り、そこから修正などを加えているのですがわからなくなったので。
4
-
5
-
6
-
7
- ソースで実行しようとしていること
8
-
9
- ・jspからcsvファイルを読み込み、ブラウザ上にアップロード(Workspace内のフォルダに保存)
10
-
11
- ・アップロードしたcsvファイルをそのまま読み込み内部の情報をDBに保存する。
12
-
13
-
14
-
15
- データベースに保存するやり方は思いつい来ましたが、ゲッターセッターのクラスとデータベースに保存する処理をするクラスに任せようと思っていますので、今回はこの指定したパスのcsvファイルをどうしたらブラウザにアップロードかつ、ファイルを1行ずつ読み込めるのか。
16
-
17
-
18
-
19
- 実行した際に出たエラーがこちらです。
3
+ またよろくお願いいします。
20
-
21
- java.io.IOException: Stream closed
22
-
23
- at java.io.BufferedReader.ensureOpen(Unknown Source)
24
-
25
- at java.io.BufferedReader.readLine(Unknown Source)
26
-
27
- at java.io.BufferedReader.readLine(Unknown Source)
28
-
29
- at drinkMachine.csv.Registration.doPost(Registration.java:68)
30
-
31
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
32
-
33
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
34
-
35
- at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
36
-
37
- at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
38
-
39
- at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
40
-
41
- at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
42
-
43
- at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
44
-
45
- at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
46
-
47
- at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
48
-
49
- at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
50
-
51
- at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
52
-
53
- at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
54
-
55
- at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
56
-
57
- at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
58
-
59
- at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
60
-
61
- at java.lang.Thread.run(Unknown Source)
62
-
63
- ```jsp
64
-
65
- コード
66
-
67
-
68
-
69
- <form action="Registration" enctype="multipart/form-data" method = "post">
70
-
71
- <input type="file" id="csv" name="csv" /></br>
72
-
73
- <input type="submit" value="一括登録" />
74
-
75
- </form>
76
-
77
- ```
78
-
79
-
80
-
81
- ```java
82
-
83
- コード
84
-
85
-
86
-
87
- package drinkMachine.csv;
88
-
89
-
90
-
91
- import java.io.BufferedReader;
92
-
93
- import java.io.File;
94
-
95
- import java.io.FileReader;
96
-
97
- import java.io.IOException;
98
-
99
- import java.util.List;
100
-
101
- import java.util.Iterator;
102
-
103
- import java.util.StringTokenizer;
104
-
105
-
106
-
107
- import javax.servlet.ServletException;
108
-
109
- import javax.servlet.http.HttpServlet;
110
-
111
- import javax.servlet.http.HttpServletRequest;
112
-
113
- import javax.servlet.http.HttpServletResponse;
114
-
115
-
116
-
117
- import org.apache.commons.fileupload.FileItem;
118
-
119
- import org.apache.commons.fileupload.FileUploadException;
120
-
121
- import org.apache.commons.fileupload.disk.DiskFileItemFactory;
122
-
123
- import org.apache.commons.fileupload.servlet.ServletFileUpload;
124
-
125
-
126
-
127
- import drinkMachine.Bean.ItemBean;
128
-
129
- import drinkMachine.dao.T001ItemDao;
130
-
131
-
132
-
133
- public class Registration extends HttpServlet {
134
-
135
- private static final long serialVersionUID = 1L;
136
-
137
-
138
-
139
- public Registration() {
140
-
141
- super();
142
-
143
- }
144
-
145
-
146
-
147
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
148
-
149
- DiskFileItemFactory factory = new DiskFileItemFactory();
150
-
151
- ServletFileUpload upload = new ServletFileUpload(factory);
152
-
153
-
154
-
155
- //ファイルの場所を示すパス
156
-
157
- String dirPath = getServletContext().getRealPath("/WebContent/csv");
158
-
159
-
160
-
161
- //アップロードする際の基準値を設定
162
-
163
- factory.setSizeThreshold(1024);
164
-
165
- upload.setSizeMax(-1);
166
-
167
- upload.setHeaderEncoding("MS932");
168
-
169
-
170
-
171
- T001ItemDao item = null;
172
-
173
- try {
174
-
175
- item = new T001ItemDao();
176
-
177
- //同じコードがあるかどうかを判定するフラグ
178
-
179
- boolean flag ;
180
-
181
-
182
-
183
- //Listオブジェクトとして返す
184
-
185
- List list = upload.parseRequest(request);
186
-
187
- //ファイルデータ(FileItemオブジェクト)を順に処理
188
-
189
- Iterator iterator = list.iterator();
190
-
191
-
192
-
193
- FileItem fItem = (FileItem)iterator.next();
194
-
195
- //urlが除かれているファイル名
196
-
197
- String filename = fItem.getName();
198
-
199
-
200
-
201
- //パスとファイル名
202
-
203
- File f = new File(dirPath + "/"+ filename);
204
-
205
-
206
-
207
- BufferedReader br = new BufferedReader(new FileReader(f));
208
-
209
-
210
-
211
- while(!(list.isEmpty())){
212
-
213
- String line;
214
-
215
- StringTokenizer token;
216
-
217
-
218
-
219
- while ((line = br.readLine()) != null){
220
-
221
- //itembeanインスタンス化
222
-
223
- ItemBean bean = new ItemBean();
224
-
225
- //区切り文字","で分割
226
-
227
- token = new StringTokenizer(line, ",");
228
-
229
- int i=1;
230
-
231
- while (token.hasMoreTokens()) {
232
-
233
- while(i < 6){
234
-
235
- //何個目かに応じた処理をswitch文で記述
236
-
237
- switch(i){
238
-
239
- case 1://コード
240
-
241
- bean.setCode(token.nextToken());
242
-
243
- break;
244
-
245
- case 2://商品名
246
-
247
- String name = token.nextToken();
248
-
249
- name = new String(name.getBytes("iso-8859-1"), "utf-8");
250
-
251
- bean.setName(name);
252
-
253
- System.out.println(name);
254
-
255
- break;
256
-
257
- case 3://金額
258
-
259
- bean.setPrice(token.nextToken());
260
-
261
- break;
262
-
263
- case 4://数量
264
-
265
- bean.setCount(token.nextToken());
266
-
267
- break;
268
-
269
- case 5://おすすめ
270
-
271
- bean.setIsPR(token.nextToken());
272
-
273
- break;
274
-
275
- }
276
-
277
- i++;
278
-
279
- }
280
-
281
- }
282
-
283
- //コードがDBにあるか検索
284
-
285
- flag = item.serchCode(bean.getCode());
286
-
287
- //コードを判定してDBに同じコード(true)があれば更新処理、なければ(false)新規登録処理
288
-
289
- if(flag == true){
290
-
291
- //更新処理
292
-
293
- int result = item.UpdateNoImage(bean.getCode(), bean.getName(), bean.getPrice(), bean.getCount(), bean.getIsPR());
294
-
295
- } else{
296
-
297
- //新規登録処理
298
-
299
- int result = item.RegistrationYimage(bean.getCode(), bean.getName(), bean.getPrice(), bean.getCount(), bean.getIsPR());
300
-
301
- }
302
-
303
- //更新失敗か成功かを確認
304
-
305
- }
306
-
307
- br.close();
308
-
309
- }
310
-
311
-
312
-
313
- }catch (FileUploadException e) {
314
-
315
- e.printStackTrace();
316
-
317
- request.setAttribute("Message",e);
318
-
319
- //list.jspページに戻る
320
-
321
- response.sendRedirect("list.jsp");
322
-
323
- }catch (Exception e) {
324
-
325
- e.printStackTrace();
326
-
327
- }
328
-
329
- //list.jspページに戻る
330
-
331
- response.sendRedirect("list.jsp");
332
-
333
-
334
-
335
- }
336
-
337
- }
338
-
339
- ```
340
-
341
-
342
-
343
- ```csv
344
-
345
- コード
346
-
347
- コード、名前、値段、個数、お気に入り
348
-
349
- ```

2

追記

2018/03/02 03:34

投稿

superZako
superZako

スコア11

test CHANGED
File without changes
test CHANGED
@@ -337,3 +337,13 @@
337
337
  }
338
338
 
339
339
  ```
340
+
341
+
342
+
343
+ ```csv
344
+
345
+ コード
346
+
347
+ コード、名前、値段、個数、お気に入り
348
+
349
+ ```

1

変更

2018/03/01 07:27

投稿

superZako
superZako

スコア11

test CHANGED
File without changes
test CHANGED
@@ -16,6 +16,50 @@
16
16
 
17
17
 
18
18
 
19
+ 実行した際に出たエラーがこちらです。
20
+
21
+ java.io.IOException: Stream closed
22
+
23
+ at java.io.BufferedReader.ensureOpen(Unknown Source)
24
+
25
+ at java.io.BufferedReader.readLine(Unknown Source)
26
+
27
+ at java.io.BufferedReader.readLine(Unknown Source)
28
+
29
+ at drinkMachine.csv.Registration.doPost(Registration.java:68)
30
+
31
+ at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
32
+
33
+ at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
34
+
35
+ at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
36
+
37
+ at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
38
+
39
+ at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
40
+
41
+ at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
42
+
43
+ at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
44
+
45
+ at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
46
+
47
+ at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
48
+
49
+ at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
50
+
51
+ at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
52
+
53
+ at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
54
+
55
+ at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
56
+
57
+ at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
58
+
59
+ at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
60
+
61
+ at java.lang.Thread.run(Unknown Source)
62
+
19
63
  ```jsp
20
64
 
21
65
  コード