• 締切済み

HTTPステータス404表示されてしまう

環境:Eclipce3.2、Tomcat5.5.2、JDK1.5.0_11を使用。 ○サーブレットプログラム package dispatch; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ForwardServlet2 extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request , HttpServletResponse response) throws ServletException , IOException { PrintWriter out = response.getWriter(); out.println("Hello by Eclipse"); } } ○web.xmlの内容は以下の通り <web-app> <!-- JSPC servlet mappings start --> <servlet> <servlet-name>ForwardServlet2</servlet-name> <servlet-class>dispatch.ForwardServlet2</servlet-class> </servlet> <servlet-mapping> <servlet-name>ForwardServlet2</servlet-name> <url-pattern>/ForwardServlet2</url-pattern> </servlet-mapping> <!-- JSPC servlet mappings end --> </web-app> アクセスはhttp://localhost:8080/basic/dispatch/ForwardServlet2 アクセスすると、 type ステータスレポート メッセージ /basic/dispatch/ForwardServlet2 説明 The requested resource (/basic/dispatch/ForwardServlet2) is not available. が表示されてしまいます。 何度も最初から作り直しては、見直しをしましたが エラーになる原因をつかむことができない状態です。 間違い、不足している箇所がありましたら、ご指摘の程お願い致します。

  • KGM
  • お礼率44% (66/148)
  • Java
  • 回答数1
  • ありがとう数7

みんなの回答

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 まず考えられる可能性は、 http://localhost:8080/basic/ForwardServlet2 でアクセスすると見えるかも知れないという事かな。 パッケージdispatchはあくまでJava側の話であって、コンテキストパスからの相対URLには何の関係もない。ここで、コンテキストパスとは/basicの事だ。もちろん、コンテキストパスが/basic/dispatchである可能性もあるが、それはあなたにしか分からない。TomcatのどこにそのWebアプリケーションをデプロイしたかが問題だ。 web.xmlの中では、servletタグによってフルクラス名(dispatch.ForwardServlet2)にForwardServlet2という名前をつけ、servlet-mappingタグによって名前をつけたForwardServlet2を/ForwardServlet2という「コンテキストパスからの相対パス」でアクセスできるようにしているんだ。だから、そのEclipseのプロジェクトにindex.jspを置いてみて、それが http://localhost:8080/basic/inde.jsp でアクセスできるのであれば、サーブレットには http://localhost:8080/basic/ForwardServlet2 でアクセスする事になる。 説明が不足している箇所は、Tomcatのどこ(どんなコンテキストパス名)に君が作ったWebアプリをデプロイしているか、だな。URLが間違っている、という場合は、質問を受けている人がURLを構成できるだけの情報をあげんといけん。

KGM
質問者

お礼

返信ありがとうございます。 教えていただきました手順を試し、理解をすることができました。 コンテキストパスへの理解が弱かったことが原因でしたので、 今後はここを中心に勉強していきます。 ありがとうございます

関連するQ&A

  • サーブレットにて、HTTP404エラーについて

    プログラミング初心者のものです。サーブレットについて勉強しているのですが、どうしてもHTTP404エラーが解消されません。 http://localhost:8080/entry/HelloServlet とURLに入力すると type ステータスレポート メッセージ /entry/HelloServlet 説明 The requested resource (/entry/HelloServlet) is not available. となってしまいます。なにかミスや指摘があればお願いします。 ファイル名 HelloServlet.java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloServlet extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ PrintWriter out = response.getWriter(); out.println("Hello"); } } ファイル名 web.xml <web-app> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/HelloServlet</url-pattern> </servlet-mapping> </web-app> HelloServlet.javaは、 C:\servletbook\apache-tomcat\webapps\entry\WEB-INF\classes に格納されており、web.xmlは C:\servletbook\apache-tomcat\webapps\entry\WEB-INF に格納されてます。

    • ベストアンサー
    • Java
  • servletでHTTPステータス404エラーが解決できません

    環境:Eclipce3.2、Tomcat5.5、jdk1.6.0_06を使用。 ○サーブレットプログラム package pack; import java.io.*; import javax.servlet.*; public class ShowDateServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(""); out.println(""); out.println(new java.util.Date()); out.println(""); out.println(""); } } ○web.xmlの内容は以下の通り <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>J2EEPJ</display-name> <servlet> <description></description> <display-name>ShowDate</display-name> <servlet-name>ShowDate</servlet-name> <servlet-class>pack.ShowDateServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ShowDate</servlet-name> <url-pattern>/ShowDate</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app> アクセスは http://localhost:8080/hello/ShowDate アクセスすると、 type ステータスレポート メッセージ /hello/ShowDateServlet 説明 The requested resource (/hello/ShowDateServlet) is not available. が表示されてしまいます。 何度も最初から作り直しては、見直しをしましたが エラーになる原因をつかむことができない状態です。 間違い、不足している箇所がありましたら、ご指摘の程お願い致します。

  • フィルターについて

    いつもお世話になっています。 Filter使用時のことで質問します。 Filterは、主にサーブレット実行時に使用しますが、 これは、web.xmlで指定しておけば指定クラスが実行された場合に 自動的に読み込まれ実行されるということなのでしょうか? 一度以下の設定で実行してみましたが、まったく処理が実行されません。 ◆ web.xml ◆ <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocati <filter> <filter-name>HelloWorldFilter</filter-name> <filter-class>Filtet_sam.ExFilterServlet</filter-class> </filter> <filter-mapping> <filter-name>HelloWorldFilter</filter-name> <url-pattern>/HelloWorldServlet</url-pattern> </filter-mapping> <servlet> <description></description> <display-name>HelloWorldServlet</display-name> <servlet-name>HelloWorldServlet</servlet-name> <servlet-class>Filtet_sam.HelloWorldServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorldServlet</servlet-name> <url-pattern>/Filtet_sam/HelloWorldServlet</url-pattern> </servlet-mapping> </web-app> ◆ サーブレット実行クラス ◆ package Filtet_sam; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorldServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException{ System.out.println("Filter Test ~ "); } } ◆ フィルター処理クラス ◆ package Filtet_sam; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloWorldFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { try{ //↓試しに、下記の文字を表示させたい System.out.println("フィルタ実行"); chain.doFilter(request, response); }catch (ServletException se){ }catch (IOException e){ } } public void init(FilterConfig arg0) throws ServletException { } public void destroy() { } } やはり、何かが不足しているのでしょうか? 宜しくお願いします。

  • Servletが動かない

    下記のようなサーブレットを作成し、web.xmlも記述して動かしてみようとしたところ下記のようなエラーが発生して動きません。(Win2000、Tomcat4.1) ~~~HelloWorldServlet.java package test_servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloWorldServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = res.getWriter(); out.println("<html>"); out.println("<head>"); out.println("</head>"); out.println("<body>"); for (int i = 1; i <= 10; i++) { out.println("Hello World" + Integer.toString(i)); } out.println("</body>"); out.println("</html>"); } } ~~~web.xml <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>HellowWorld</servlet-name> <servlet-class>test_servlet.HelloWorldServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HellowWorld</servlet-name> <url-pattern>/hello/*</url-pattern> </servlet-mapping> </web-app> ~~~http://localhost:8080/hello接続時のスタック javax.servlet.ServletException: クラス test_servlet.HelloWorldServlet はサーブレットではありません

    • ベストアンサー
    • Java
  • JSPからサーブレットを呼び出す際に404エラー

    現在、tomcatとeclipseでサーブレット/JSPの勉強をしています。 参考書に載っている、jspの入力画面で入力した値をサーブレットで受け取り、そのまま表示させるようなサンプルを作成しています。 JSPの入力画面は表示できるのですが、値を入力してサーブレットに移動する際、404エラーが出てしまいます。 ■eclipseのパッケージエクスプローラー basic |-WEB=INF/src |..|input |...|EchoServlet.java |-WEB-INF |..|web.xml |.|echo.jsp (WEB-INF直下に作成) ■echo.jsp内のサーブレットのパスに関する記述 <FORM ACTION="/servlet/EchoServlet"> ■web.xmlの記述 <servlet> <servlet-name>EchoServlet</servlet-name> <servlet-class>input.EchoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>EchoServlet</servlet-name> <url-pattern>/servlet/EchoServlet</url-pattern> </servlet-mapping> ■EchoServlet.javaの記述 package input; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class EchoServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String msg = request.getParameter("message"); response.setContentType("text/plain; charset=Windows-31J"); PrintWriter out = response.getWriter(); out.println("message=" + msg); } } お気づきの点がございましたらご査収の程よろしくお願いいたします。

  • eclipseで作ったサーブレットのサーバーへのアップロード方法について

    サーブレットのアップロードについて eclipse(バージョン: 3.1.1) Tomcat5.5 jre1.6.0_01 の環境で、下記のようなプロジェクトexamplesをeclipseで localhost上に作成しました。 これをwebサーバーにアップして、 (DocumentRoot "/usr/local/apache2/htdocs") 動作させたいのですが、 javaファイル、jarファイル、wec.xml等を DocumentRoot配下にどのようなディレクトリ構造を作って、 配置すれば動くのでしょうか。 サーバーは apache-2.2.0 Tomcat-4.1.31 であり、以前より正常に運用しているサーバです。 examples | |--JREシステムライブラリー[jre1.6.0_01] | |---(省略) |--TOMCAT_HOME/common/lib/servlet-api.jar | |---(省略) |--TOMCAT_HOME/common/lib/jasper-runtime.jar | |---(省略) |--TOMCAT_HOME/common/lib/jsp-api.jar | |---(省略) | |--WEB-INF/src | | | |--chap09_servlet02 | | | |--HelloServlet.java | |--WEB-INF | | | |--web.xml 【HelloServletWorld.java】 package chap09_servlet02; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HelloServletWorld extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // response.setContentType("text/html; charset=Windows-31J"); response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println("<HEAD>"); out.println("<TITLE>Servlet</TITLE>"); out.println("</HEAD>"); out.println("<BODY>"); out.println("<h1>"); out.println("<font color =\"blue\">"); out.println("Hello ServletWorld"); out.println("</font>"); out.println("</h1>"); out.println("</BODY>"); out.println("</HTML>"); out.close(); } } 【web.xml】 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>HelloServletWorld</servlet-name> <servlet-class>chap09_servlet02.HelloServletWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServletWorld</servlet-name> <url-pattern>/HelloServletWorld</url-pattern> </servlet-mapping> </web-app>

    • ベストアンサー
    • Java
  • HTTP 404 error

    Vine Linux,Tomcat5で (1)webapps/conf/server.xml ... <HOST> <Context path="/apress" docBase="apress" debug="0" reloadable="true" /> ... (2)webbapps/apress/login.jsp ... <table width="500" border="0" cellspacing="0" cellpadding="0"> <form name="loginForm" method="post" action="servlet/chapter2.login"> <tr><td width="402"><div align="right">User Name: </div></td> <td width="399"><input type="text" name="username"></td> </tr> ... (3)webapps/apress/WEB-INF/web.xml ... <servlet> <servlet-name>login</servlet-name> <servlet-class>chapter2.login</servlet-class> </servlet> <servlet-mapping> <servlet-name>login</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> ... (4)webapps/apress/WEB-INF/classes/chapter2/login.java package chapter2; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class login extends HttpServlet { private String target = "/welcome.jsp"; private String getUser(String username, String password) { // Just return a statice name // If this was reality, we would perform a SQL lookup return "Bob"; } .... (4)現象: http://xxx.xxx.xxx.xxxx:8080/apress/login.jsp でsubmit action 後、次のエラーが出てきました: HTTP 404 error, The requested resource (/apress/servlet/chapter2.login) is not available. この問題はどこにあるでしょうか教えてください。

  • Servlet_HelloWorld表示方法

    お世話になります。 java暦数ヶ月のものです。 現在、Java勉強の為サーブレットに取り組んでおります。 参考サイトや参考書を使っているのですがうまく表示ができません。 表示テスト用として、下記のhelloworld2直下にindex.htmlファイルを置いてURLより叩いたのですがこれでも表示されません。 (※前回やっていた場合は、表示ができておりその際に作ったファイルは、表示ができています) 【開発環境】 Eclipseにて、classファイル化して所定のフォルダに格納 【環境】 ・サーブレット C:\servlet-sample\helloworld2 │ index.BAK・・・・勝手に作られた │ index.html・・・・『http://localhost:8080/hello2/index.htmlで動作するかテスト │ ├─img │ p1.png │ └─WEB-INF │ web.xml │ └─classes HelloWorld2.class サーバー側(conf内) C:. │ catalina.policy │ catalina.properties │ context.xml │ logging.properties │ server.xml │ tomcat-users.xml │ web.xml │ └─Catalina └─localhost hello2.xml 【ファイル内容】 ・Java import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello World!</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); } } ・コンテキストxmlファイル <Context path="/hello2" docBase="C:\servlet-sample\helloworld2"/> ・web.xml <?xml version="1.0" encoding="ISO-8859-1"?> http://www.apache.org/licenses/LICENSE-2.0 <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <servlet> <servlet-name>helloworld2</servlet-name> <servlet-class>HelloWorld2</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>Sample1</servlet-name> <servlet-class>Sample1</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet> <servlet-mapping> <servlet-name>helloworld2</servlet-name> <url-pattern>/helloworld2</url-pattern> </servlet-mapping> <!-- The mappings for the JSP servlet --> <servlet-mapping> <servlet-name>Sample1</servlet-name> <url-pattern>/Sample1</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jspx</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> 【参考サイト】 http://www.javadrive.jp/servlet/ 【アクセスURL】 http://localhost:8080/hello2/helloworld2 http://localhost:8080/hello2/index.html (接続確認用)でアクセス 【エラーメッセージ】 HTTPステータス404  The requested resource (/hello2/index2.html) is not available. 参照先がないという意味だと思うのですがなぜこのようなメッセージが表示され、正常に稼動しないのかが不明です。 表示が出来ていたファイルに近づけてやっておりますが・・・ 他の方に上記ソースで実施して頂いたら実行できたようです^^; ご教示の程、よろしくお願い致します。

  • eclipse servlet 404対処方法

    初めて質問させて頂く者です。宜しくお願いします。Java初心者です。 eclipse4.3のtomcatプロジェクトを使い、以下のServletコードを作成しました。 ブラウザアドレスバーに以下アドレスを入れて実行しましたが、HTTPステータス404が表示されます。 どのように改善したら良いかアドバイスをお願い致します。長文申し訳ございません。本当に困っています。 環境:windows8.1 eclipse4.3 ディレクトリ:jwapp(プロジェクト名) -test(パッケージ名) -First(ファイル名) 指定アドレス:localhost:8080/jwapp/servlet/test.First web.xmlファイルはWEB-INFの中に置いています。 記述は以下のとおりです。↓ <?xml version="1.0" encoding="ISO-8859-1"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"> <servlet> <servlet-name>first</servlet-name> <servlet-class>test.First</servlet-class> </servlet> <servlet-mapping> <servlet-name>first</servlet-name> <url-pattern>/first</url-pattern> </servlet-mapping> </web-app> Servletのコードは以下のとおりです。↓ package test; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class First01 extends HttpServlet { public void doGet(HttpServletRequest req,HttpServletResponse res) throws IOException,ServletException{ res.setContentType("text/html;charset=Shift_JIS"); PrintWriter out=res.getWriter(); out.println("<html)"); out.println("<head>"); out.println("<title>テスト</title>"); out.println("<h1>テスト</h1>"); out.println("</body>"); out.println("</heml>"); } }

    • ベストアンサー
    • Java
  • web.xml難しいです。。

    Tomcatを起動すると以下のエラーが出てて、 解決できません。 サービス Tomcat-Standalone を起動します Apache Tomcat/4.1.18 2003/03/10 22:12:47 org.apache.commons.digester.Digester error 致命的: Parse Error at line 29 column 11: The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filt er*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-map ping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,sec urity-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref *)". ■Web.xmlの内容 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>KS</servlet-name> <servlet-class>jp.co.test1.KSevlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>KServlet</servlet-name> <url-pattern>/servlet/KServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>KDServlet</servlet-name> <servlet-class>jp.co.test1.KDServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>KDServlet</servlet-name> <url-pattern>/servlet/KDServlet</url-pattern> </servlet-mapping> </web-app>

    • ベストアンサー
    • Java