####環境
Mac OS Mojave(10.14.4)で、
Eclipse IDE for Enterprise Java Developers.
Version: 2019-06 (4.12.0)
Build id: 20190614-1200 のEclipseを使っています。
Servlet Specification: 3.1
TomCat8,Java8 です。
####操作した手順
Servletのサンプルコードを実行しようとしているのですが、実行されず、また原因がわからず困っています。
Eclipseのファイル→新規→その他→動的webProject→次へ→プロジェクト名abc、ターゲットランタイムTomcat8(java8)、構成TomCat8(Java8)デフォルト構成→次へ→次へ→完了→srcで新規→名前defで完了→def.javaに以下を入力
package abc; import java.util.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class def extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException { try{ //コンテンツタイプの設定 response.setContentType("text/html; charset=UTF-8"); //時刻の取得 Date dt = new Date(); //HTML文書の書き出し PrintWriter pw = response.getWriter(); pw.println("<!DOCTYPE html><html>\n" + "<head><title>サンプル</title></head>\n" + "<body><div style=\"text-align: center;\">\n" + "<h2>ようこそ</h2>" + "<hr/>\n" + "今" + dt + "です。<br/>\n" + "お選びください。<br/>\n" + "<br/>\n" + "<a href=\"../car1.html\">乗用車</a><br/>\n" + "<a href=\"../car2.html\">トラック</a><br/>\n" + "<a href=\"../car3.html\">オープンカー</a><br/>\n" + "</div></body>\n" + "</html>\n"); } catch(Exception e){ e.printStackTrace(); } } }
→「サーバー」の「使用可能なサーバがありません。このリンクをクリックして新規サーバを作成して下さい」をクリック→サーバのタイプとしてvTomcat8.5サーバーを選択→次へ→abcを「使用可能」から構成済みに追加→完了→def.javaを右クリックして「1.サーバで実行」→既存のサーバを選択でローカルホストのTomcat8(Java8)を選択→次へ→完了としました。
####エラーの内容
http://localhost:8080/abc/servlet/abc.defで
HTTPステータス 404 - Not Found
Type ステータスレポート
メッセージ /abc/servlet/abc.def
説明 The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
と表示されます。
####期待していた動作
期待していた答えとしては、「ようこそ」と書かれたページが、http://localhost:8080/abc/servlet/abc.defに表示されることでした。
####試してみたこと
試したこととしては、
①package abcで、新規→サーブレット→クラス名ghiで次へ→次へ→完了として、ghi.javaを右クリックで
「1.サーバで実行」→既存のサーバを選択でローカルホストのTomcat8(Java8)を選択→次へ→完了とすると、
http://localhost:8080/abc/ghiでServed at: /abcと表示されます。ghi.javaは以下です。
package abc; 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; /** * Servlet implementation class ghi */ @WebServlet("/ghi") public class ghi extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public ghi() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @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://localhost:8080/を表示すると、404になっている。
③abc/WebContentの下にindex.htmlを作成し、
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>タイトル</title> </head> <body> </body> </html>
として、
http://localhost:8080/abc/にアクセスすると、「タイトル」の表示が出る。
④http://localhost:8080/abc/defにアクセスしても、同様の404エラーが出る。
回答1件
あなたの回答
tips
プレビュー