teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

比較対象の追記

2018/07/29 02:33

投稿

nagomi72
nagomi72

スコア51

title CHANGED
@@ -1,1 +1,1 @@
1
- サーブレットクラス初期化中時の500 - Internal Server Errorについ
1
+ サーブレットクラス初期化中時にClassNotFoundが発生しクラスが見からな
body CHANGED
@@ -1,9 +1,12 @@
1
1
  お世話になります。
2
- index.jspからLogin.javaを呼び出すときに500エラーが発生します。
2
+ jspからサーブレット呼び出すときに500エラーが発生します。
3
- ClassNotFoundExceptionが出ているので
3
+ ClassNotFoundExceptionが出ており、
4
+ web.xmlの設定、またはjspでのform内のURL指定が誤っているのかと
5
+ 思いましたが、jspからサーブレットを問題なく呼び出せているソースと
4
- 恐らくweb.xmlの設定がおかしいと思うのすが…
6
+ 比較したところ、web.xmlの記述などに差異は見られませんした。
5
- ご助言頂ければ幸いです。
6
7
 
8
+ ご助言いただければ幸いです。
9
+
7
10
  以下、ソースコード及びエラーメッセージです。
8
11
 
9
12
  index.jsp
@@ -158,4 +161,113 @@
158
161
  org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
159
162
  java.lang.Thread.run(Thread.java:745)
160
163
 
164
+ ```
165
+
166
+
167
+
168
+
169
+ こちらが問題なく動作するソース。
170
+ 動作としてはindex.jspで入力された値をResult.javaのサーブレット側で取得し計算を行うというもの。
171
+ ClassNotFoundExceptionが発生せず処理を行なえている。
172
+
173
+
174
+ index.jsp
175
+ ```
176
+
177
+
178
+ <%@ page language="java" contentType="text/html; charset=UTF-8"
179
+ pageEncoding="UTF-8"%>
180
+ <!DOCTYPE html >
181
+ <html>
182
+ <head>
183
+ <meta charset=UTF-8">
184
+ <title>映画料金計算</title>
185
+ </head>
186
+ <body>
187
+ <h1>映画料金を計算しゃす!</h1>
188
+ <form action = "/movieFee/servlet/Result" method = "Post">
189
+ 性別:<br>
190
+ 男<input type = "radio" name = "gender" value = "0" required>
191
+ 女<input type = "radio" name = "gender" value = "1"><br>
192
+ 年齢:<br>
193
+ <input type = "number" name = "age" required><br>
194
+ タイプ:<br>
195
+ 3D<input type = "radio" name = "type" value = "0" required>
196
+ 2D<input type = "radio" name = "type" value "1">
197
+ <input type = "submit" value = "計算へ">
198
+ </body>
199
+ </html>
200
+
201
+ ```
202
+
203
+
204
+ Result.java
205
+
206
+
207
+ ```
208
+
209
+ package servlet;
210
+
211
+ import java.io.IOException;
212
+ import javax.servlet.ServletException;
213
+ import javax.servlet.annotation.WebServlet;
214
+ import javax.servlet.http.HttpServlet;
215
+ import javax.servlet.http.HttpServletRequest;
216
+ import javax.servlet.http.HttpServletResponse;
217
+
218
+ //@WebServlet("/Result")
219
+ public class Result extends HttpServlet {
220
+ private static final long serialVersionUID = 1L;
221
+
222
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
223
+ throws ServletException, IOException {
224
+ int age = -1;
225
+
226
+ // リクエストパラメータを取得
227
+ request.setCharacterEncoding("UTF-8");
228
+ String gender = request.getParameter("gender");
229
+ age = Integer.parseInt(request.getParameter("age"));
230
+ String type = request.getParameter("type");
231
+
232
+ // Calcクラスのインスタンスを生成
233
+ Calc calc = new Calc();
234
+
235
+ // 計算結果を代入
236
+ int result = calc.movieFeeCalc(age, gender, type);
237
+
238
+ request.setAttribute("result", result);
239
+
240
+ getServletConfig().getServletContext().getRequestDispatcher("/WEB-INF/jsp/result.jsp").forward(request,
241
+ response);
242
+
243
+ }
244
+
245
+ }
246
+
247
+ ```
248
+
249
+
250
+ web.xml
251
+
252
+ ```
253
+
254
+ <?xml version="1.0" encoding="ISO-8859-1"?>
255
+ <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
256
+ xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee"
257
+ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
258
+ version="2.4">
259
+
260
+ <servlet>
261
+ <servlet-name>Result</servlet-name>
262
+ <servlet-class>servlet.Result</servlet-class>
263
+ </servlet>
264
+
265
+ <servlet-mapping>
266
+ <servlet-name>Result</servlet-name>
267
+ <url-pattern>
268
+ /servlet/Result
269
+ </url-pattern>
270
+ </servlet-mapping>
271
+ </web-app>
272
+
161
273
  ```