質問編集履歴

2

画像を追加しました

2018/11/06 14:42

投稿

samurai_se
samurai_se

スコア15

test CHANGED
File without changes
test CHANGED
@@ -24,16 +24,20 @@
24
24
 
25
25
 
26
26
 
27
- □ログイン前のコンソール
27
+ □ログイン前のコンソールとブラウザ
28
-
28
+
29
-  ![イメジ説明](943284e54a07eab2950177604bf64cac.jpeg)
29
+  ![コンソ](943284e54a07eab2950177604bf64cac.jpeg)
30
+
30
-
31
+ ![ブラウザ](fc085cac70db07769edd96b026d36e68.jpeg)
31
-
32
-
32
+
33
+
34
+
33
- □ログイン処理後のコンソール
35
+ □ログイン処理後のコンソールとブラウザ
34
36
 
35
37
  ![イメージ説明](4c767f901ffcf2d6e1e8dcd02acca50c.jpeg)
36
38
 
39
+ ![イメージ説明](f4ff05ef4d52f34e4b8870709c072f87.jpeg)
40
+
37
41
 
38
42
 
39
43
 

1

詳細なエラー内容を追伸

2018/11/06 14:42

投稿

samurai_se
samurai_se

スコア15

test CHANGED
@@ -1 +1 @@
1
- ServletのWebアノテションをどのようにしていすばよいかわからない
1
+ サーブレットからJSPにフォワドされない
test CHANGED
@@ -8,7 +8,11 @@
8
8
 
9
9
 
10
10
 
11
- Webアノテーション使い方がくわからいな、と
11
+ ディレクトリ構成は以下画像の形です
12
+
13
+
14
+
15
+ ![![イメージ説明](f52bfad51d7d33c3bfbb3bb91d95f282.jpeg)]
12
16
 
13
17
 
14
18
 
@@ -16,9 +20,19 @@
16
20
 
17
21
 
18
22
 
23
+ JSPからサーブレット側にフォワードされないのです。
24
+
25
+
26
+
27
+ □ログイン前のコンソール
28
+
29
+  ![イメージ説明](943284e54a07eab2950177604bf64cac.jpeg)
30
+
31
+
32
+
19
- 単純な404エラなのです、、、
33
+ □ログイン処理後のコンソ
20
-
34
+
21
- パスの指定であることは間違いないのですが、JSPのaction属性の中に記述しているURLがこちらです。
35
+ ![イメージ説明](4c767f901ffcf2d6e1e8dcd02acca50c.jpeg)
22
36
 
23
37
 
24
38
 
@@ -30,6 +44,264 @@
30
44
 
31
45
 
32
46
 
47
+ ```Servlet
48
+
49
+ package tool;
50
+
51
+
52
+
53
+ import java.io.IOException;
54
+
55
+ import java.io.PrintWriter;
56
+
57
+
58
+
59
+ import javax.servlet.ServletException;
60
+
61
+ import javax.servlet.annotation.WebServlet;
62
+
63
+ import javax.servlet.http.HttpServlet;
64
+
65
+ import javax.servlet.http.HttpServletRequest;
66
+
67
+ import javax.servlet.http.HttpServletResponse;
68
+
69
+
70
+
71
+ import util.StringUtil;
72
+
73
+
74
+
75
+ /**
76
+
77
+ * Servlet implementation class FrontController
78
+
79
+ * MVCモデルにおける唯一の入り口で、ここから全ての処理を割り振る
80
+
81
+ */
82
+
83
+
84
+
85
+ //hogehoge.actionと名付けられたようなURLを開くと、FrontControllerが実行される。
86
+
87
+ @WebServlet(urlPatterns={"*.action"})
88
+
89
+ public class FrontController extends HttpServlet {
90
+
91
+
92
+
93
+ private static final long serialVersionUID = 1L;
94
+
95
+
96
+
97
+ private String classPath = StringUtil.PACKAGE;
98
+
99
+
100
+
101
+ /**
102
+
103
+ * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
104
+
105
+ */
106
+
107
+ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
108
+
109
+ ServletException, IOException {
110
+
111
+
112
+
113
+ PrintWriter out = response.getWriter();
114
+
115
+
116
+
117
+ try{
118
+
119
+
120
+
121
+ /**
122
+
123
+ * リクエストのURLに含まれるサーブレットのパスを取得する
124
+
125
+ * -> substringメソッドにより先頭の1文字を削除する
126
+
127
+ *
128
+
129
+ * URLを /hoge/hogehoge ->hoge.hogehoge の形に加工する処理を行う
130
+
131
+ *
132
+
133
+ */
134
+
135
+
136
+
137
+ String path = request.getServletPath().substring(1);
138
+
139
+ String className = classPath + path.replace(StringUtil.BEFORE_REPLACE_a,StringUtil.AFTER_REPLACE_A)
140
+
141
+ .replace(StringUtil.SLASH,StringUtil.DOT);
142
+
143
+
144
+
145
+ System.out.println(className);
146
+
147
+
148
+
149
+ /**
150
+
151
+ * forNameメソッドにより、指定した名前のClassオブジェクトを返す
152
+
153
+ * newInstanceメソッドにより、新しいインスタンスを作成する
154
+
155
+ */
156
+
157
+ Action action = (Action)Class.forName(className).newInstance();
158
+
159
+
160
+
161
+ //作成したクラスオブジェクトのexcuteメソッドを実行する
162
+
163
+ String url=action.execute(request, response);
164
+
165
+
166
+
167
+ System.out.println(url);
168
+
169
+
170
+
171
+ //戻り値によりフォワード
172
+
173
+ request.getRequestDispatcher(url).forward(request,response);
174
+
175
+
176
+
177
+ System.out.println("forwardされていない");
178
+
179
+
180
+
181
+ }catch(Exception error){
182
+
183
+
184
+
185
+ System.out.println("通った");
186
+
187
+
188
+
189
+ error.printStackTrace(out);
190
+
191
+
192
+
193
+ }
194
+
195
+ }
196
+
197
+
198
+
199
+
200
+
201
+ /**
202
+
203
+ * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
204
+
205
+ * Getメソッドを用いていようと、内部的にはすべてPOSTとして処理をする。
206
+
207
+ */
208
+
209
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
210
+
211
+ throws ServletException, IOException {
212
+
213
+ doPost(request,response);
214
+
215
+ }
216
+
217
+
218
+
219
+
220
+
221
+ }
222
+
223
+
224
+
225
+ ```
226
+
227
+
228
+
229
+ ```Java
230
+
231
+
232
+
233
+ package action;
234
+
235
+
236
+
237
+ import javax.servlet.http.HttpServletRequest;
238
+
239
+ import javax.servlet.http.HttpServletResponse;
240
+
241
+ import javax.servlet.http.HttpSession;
242
+
243
+
244
+
245
+ import bean.Menber;
246
+
247
+ import dao.MenberDAO;
248
+
249
+ import tool.Action;
250
+
251
+
252
+
253
+ public class LoginAction extends Action{
254
+
255
+
256
+
257
+ public String execute(
258
+
259
+ HttpServletRequest request, HttpServletResponse response) throws Exception{
260
+
261
+
262
+
263
+ HttpSession session=request.getSession();
264
+
265
+
266
+
267
+ String userId = request.getParameter("userId");
268
+
269
+ String password = request.getParameter("password");
270
+
271
+ MenberDAO dao = new MenberDAO();
272
+
273
+ Menber menber = dao.search(userId,password);
274
+
275
+
276
+
277
+ if(menber!=null){
278
+
279
+
280
+
281
+ session.setAttribute("userId", userId);
282
+
283
+ return "/view/menu.jsp";
284
+
285
+ }
286
+
287
+
288
+
289
+ return "/view/error.jsp";
290
+
291
+
292
+
293
+ }
294
+
295
+
296
+
297
+ }
298
+
299
+
300
+
301
+ ```
302
+
303
+
304
+
33
305
  ```JSP
34
306
 
35
307
  <%@ page language="java" contentType="text/html; charset=UTF-8"
@@ -116,187 +388,25 @@
116
388
 
117
389
  </html>
118
390
 
391
+
392
+
119
393
  ```
120
394
 
121
395
 
122
396
 
123
- ```Servlet
124
-
125
- package tool;
126
-
127
-
128
-
129
- import java.io.IOException;
130
-
131
- import java.io.PrintWriter;
132
-
133
-
134
-
135
- import javax.servlet.ServletException;
136
-
137
- import javax.servlet.annotation.WebServlet;
138
-
139
- import javax.servlet.http.HttpServlet;
140
-
141
- import javax.servlet.http.HttpServletRequest;
142
-
143
- import javax.servlet.http.HttpServletResponse;
144
-
145
-
146
-
147
- import util.StringUtil;
148
-
149
-
150
-
151
- /**
152
-
153
- * Servlet implementation class FrontController
154
-
155
- * MVCモデルにおける唯一の入り口で、ここから全ての処理を割り振る
156
-
157
- */
158
-
159
-
160
-
161
- //hogehoge.actionと名付けられたようなURLを開くと、FrontControllerが実行される。
162
-
163
- @WebServlet(urlPatterns={"*.action"})
164
-
165
- public class FrontController extends HttpServlet {
166
-
167
- private static final long serialVersionUID = 1L;
168
-
169
-
170
-
171
- /**
172
-
173
- * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
174
-
175
- */
176
-
177
- protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
178
-
179
- ServletException, IOException {
180
-
181
-
182
-
183
- PrintWriter out = response.getWriter();
184
-
185
-
186
-
187
- try{
188
-
189
-
190
-
191
- /**
192
-
193
- * リクエストのURLに含まれるサーブレットのパスを取得する
194
-
195
- * -> substringメソッドにより先頭の1文字を削除する
196
-
197
- *
198
-
199
- * URLを /hoge/hogehoge ->hoge.hogehoge の形に加工する処理を行う
200
-
201
- *
202
-
203
- */
204
-
205
-
206
-
207
- String path = request.getServletPath().substring(1);
208
-
209
- String name = path.replace(StringUtil.BEFORE_REPLACE_a,StringUtil.AFTER_REPLACE_A)
210
-
211
- .replace(StringUtil.SLASH,StringUtil.DOT);
212
-
213
-
214
-
215
- /**
216
-
217
- * forNameメソッドにより、指定した名前のClassオブジェクトを返す
218
-
219
- * newInstanceメソッドにより、新しいインスタンスを作成する
220
-
221
- */
222
-
223
- Action action = (Action)Class.forName(name).newInstance();
224
-
225
-
226
-
227
- //作成したクラスオブジェクトのexcuteメソッドを実行する
228
-
229
- String url=action.execute(request, response);
230
-
231
-
232
-
233
- //戻り値によりフォワード
234
-
235
- request.getRequestDispatcher(url).forward(request,response);
236
-
237
-
238
-
239
- }catch(Exception error){
240
-
241
-
242
-
243
- error.printStackTrace(out);
244
-
245
-
246
-
247
- }
248
-
249
- }
250
-
251
-
252
-
253
-
254
-
255
- /**
256
-
257
- * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
258
-
259
- * Getメソッドを用いていようと、内部的にはすべてPOSTとして処理をする。
260
-
261
- */
262
-
263
- protected void doGet(HttpServletRequest request, HttpServletResponse response)
264
-
265
- throws ServletException, IOException {
266
-
267
- doPost(request,response);
268
-
269
- }
270
-
271
-
272
-
273
-
274
-
275
- }
276
-
277
-
278
-
279
- ```
280
-
281
397
 
282
398
 
283
399
  ### 試したこと
284
400
 
285
401
 
286
402
 
287
- とりあえずググって解決策を探したのですが見つからず。
288
-
289
- 片っ端からURL書き方を変えみましがダメでした。
403
+ systemoutでどようなコードの通り方をいるのか調べところ、
404
+
290
-
405
+ catchまでは入っていないようなので、forwardされないままサーブレット内で
406
+
291
- 単純なミスにハマっているときのパターンなような気がするので
407
+ 処理が終了してしまっているようなのです。
292
-
408
+
293
- 「そんなことか、、」とい問題かもしれません。
409
+ うしてforwardさないかが分かりません。
294
-
295
-
296
-
297
-
298
-
299
-
300
410
 
301
411
 
302
412