HTTP 404 errorの問題はどこにあるでしょうか教えてください

このQ&Aのポイント
  • Vine Linux,Tomcat5でWebアプリケーションを作成していますが、HTTP 404 errorが発生しています。
  • エラーメッセージは「The requested resource (/apress/servlet/chapter2.login) is not available.」です。
  • 原因としては、webapps/conf/server.xmlやwebapps/apress/login.jsp、webapps/apress/WEB-INF/web.xml、webapps/apress/WEB-INF/classes/chapter2/login.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. この問題はどこにあるでしょうか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

パスの指定が間違ってるからだと思いますが。 /apress/servlet/chapter2.login このパスにちゃんと存在してますか?

2003saki
質問者

補足

login.jspの <form name="loginForm" method="post" action="servlet/chapter2.login"> には、actionで、java servletのchapter2.loginを呼び出したいですが、このactionの書き方を教えてください。

その他の回答 (1)

回答No.2

まったく自信ないのですが、 action="/chapter2.login” としてもダメですか?

関連する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
  • 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); } } お気づきの点がございましたらご査収の程よろしくお願いいたします。

  • html:linkでリンククリック時に画面入力値を取得してアクションへ渡す方法

    Strutsを使用したログイン画面を作成しています。ID・パスワードを入力して、html:linkをクリックしてログインするという処理を行いたいです。 そこで、リンクをクリックした際にJSPに記述しているhtml:textとhtml:passwordの値を取得して、Actionへ渡し、その情報を元にDBへの問い合わせを行いたいのですが、html:linkで複数パラメータを渡す方法が分からないので教えていただきたいです。 過去質も参考にしてみましたが、今回の質問に的を得た内容がなかったので質問させていただきました。 参考にした方法 (1)JavaScriptのonclickイベントでサブミットさせる ⇒例えばdocument.form.submit();と書けそうだが,html:formにはname属性がないため、formの指定ができない?! (2)Mapを利用してパラメータを渡す ⇒JSP内にMap設定のロジックを書く。Map(name,value)の形式で、value部分(画面入力値)はどうやって取得するのか分からない。 【struts-config】 <action-mappings> <action path="/login_Anken" type="action.Login_Anken_Action" name="login_Anken_Form" validate="true" input="/pages/Login_Anken.jsp" scope="request"> <forward name="success" path="/pages/MainMenu.jsp"/> <forward name="fail" path="/pages/Login_Anken.jsp"/> </action> 【Login_Anken.jsp】 <html:form action="/login_Anken" > <table border="0" width="100%" > <tr> <td class="pname" colspan="4" > ****システム </td> </tr> <tr> <td colspan="4"> <hr size="5" width="100%" noshade> </td> </tr> <tr> <td class="gname" colspan="4" > ログイン </td> </tr> <tr> <td colspan="4" > <hr size="5" width="100%" noshade> </td> </tr> <tr> <td width="25%" >&nbsp; </td> <td class="login"> ユーザID </td> <td width="20%""> <html:text property="userId"/> </td> <td width="20%">&nbsp; </td> </tr> <tr> <td width="25%" >&nbsp; </td> <td class="login"> パスワード </td> <td width="20%""> <html:password property="password" /> </td> <td width="20%">&nbsp; </td> </tr> <tr> <td width="10%" align="center" colspan="4" > <html:link action="/login_Anken" name="map">ログイン </html:link> </td> </tr> </table> </html:form> 【Login_Anken_Action.java】 public class Login_Anken_Action extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionMessages errors = new ActionMessages(); //画面入力値を取得 Login_Anken_Form loginAnkenForm = (Login_Anken_Form) form; boolean isSuccess = false; Login_Anken_Business business = new Login_Anken_Business(); String userName = null; userName = business.getLoginUserName (loginAnkenForm.getUserId(), loginAnkenForm.getPassword()); //ユーザが存在すればログインOK isSuccess = (userName != null); if (isSuccess) { //TODO HttpSession session = request.getSession(); session.setAttribute("name", userName); return mapping.findForward("success"); } else { errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errors.login")); saveErrors(request, errors); return mapping.findForward("fail"); } } }

    • ベストアンサー
    • Java
  • フィルターについて

    いつもお世話になっています。 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() { } } やはり、何かが不足しているのでしょうか? 宜しくお願いします。

  • RequestDispatcher.forwardメソッドで遷移する際のURL

    お世話になります。 JSP/サーブレットを使用してwebアプリケーションを作成しています。 タイトルの通りRequestDispatcher.forwardメソッドで遷移する際のURL についてうまくいかず、原因がわからない為質問させて頂きます。 ご教授宜しくお願い致します。 Aproject/jsp/login.jsp Aproject/jsp/top.jsp Aproject/WEB-INF/src/servlet/Login.java という3つのファイルを使用しています。 login.jspにて<form action="../Login" method="post">で Login.javaサーブレットにIDとパスワードを渡し、 サーブレットで認証を行ったあと RequestDispatcher.forwardメソッドにて以下のように 遷移するようになっています。 RequestDispatcher rd = request.getRequestDispatcher("./jsp/top.jsp"); rd.forward(request, response); 遷移はうまくいくのですが、top.jspが表示される時のURLが http://localhost:8080/Aproject/jsp/top.jspとなるはずが、 http://localhost:8080/Aproject/Login となってしまいます。 web.xmlの記述は <servlet> <servlet-name>Login</servlet-name> <servlet-class>servlet.Login</servlet-class> </servlet> <servlet-mapping> <servlet-name>Login</servlet-name> <url-pattern>/Login</url-pattern> </servlet-mapping> としています。 forwardメソッドではなく、sendRedirectメソッドを使用した場合 http://localhost:8080/Aproject/jsp/top.jsp とうまくいきます。 どのような原因が考えられますでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • 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. が表示されてしまいます。 何度も最初から作り直しては、見直しをしましたが エラーになる原因をつかむことができない状態です。 間違い、不足している箇所がありましたら、ご指摘の程お願い致します。

  • 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. が表示されてしまいます。 何度も最初から作り直しては、見直しをしましたが エラーになる原因をつかむことができない状態です。 間違い、不足している箇所がありましたら、ご指摘の程お願い致します。

  • 「サーブレットは現在利用できません」のエラーが出てしまいます。

    Java初心者の者です。 先日会社の研修でTomcatを触ったばかりで、会社では何とか 周りに聞きつつ出来たのですが、家で復習しようと思って 同じ操作をしてブラウザで画面を表示しようとしたら、 「サーブレット gotoNext は現在利用できません」 というエラーが出てしまいました。 どこを修正すればちゃんと表示されるのでしょうか? まだ「やさしいJava」が終わったばかりで サーブレットやJSPの用語がほとんど分からないので、 分かりやすく説明していただけると嬉しいです。 ***** input.jsp ********************************************* <%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-31j"> <title>Insert title here</title> </head> <body bgcolor="skyblue"> Hello JSP World!!<br> <form action="/scud/next" method="post"> <input type="submit" value="送信"> </form> </body> </html> ***** next.jsp ********************************************** <%@ page language="java" contentType="text/html; charset=windows-31j" pageEncoding="windows-31j"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-31j"> <title>Insert title here</title> </head> <body bgcolor="yellowgreen"> Hello Another JSP World!! </body> </html> ******* GotoNextServlet.java ********************************* package sevlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class GotoNextServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ System.out.println("★GotoNextServlet#doPostが呼ばれた!"); } } ******* web.xml ********************************************* <?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <servlet-name>gotoNext</servlet-name> <servlet-class>servlet.GotoNextServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>gotoNext</servlet-name> <url-pattern>/next</url-pattern> </servlet-mapping> </web-app> *************************************************************

    • ベストアンサー
    • Java
  • WEBブラウザからJSPを介して、サーブレットを呼び出したいのですが・・・

    オールインワンeclipse3.4 tomcat5.5を使用して 動的WEBプロジェクトを作成して JSP~サーブレットを呼び出したいのですが、 なぜかJSPファイルを認識してくれず、404エラーとなります。 考えられるのは、ファイルの配置箇所くらいしか、思いつきませんが、色々動かしても結果は変わりませんでした。 どなたか、ご指導お願いいたします。 □basic |□javaリソースsrc>□パッケージinput>EchoServret.java |□WebContent>echo.jsp echo.jspソース <%@ page contentType="text/html; charset=windows-31j"pageEncoding="windows-31j"%> <html> <body> <h2>EchoServletの入力</h2> <form action = "../servlet/input.EchoServlet"> <input type="text" name="message"> <input type="submit"> </form> </body> </html> 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); } } 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>basic2</display-name> <servlet> <display-name>EchoServlet</display-name> <servlet-name>EchoServlet</servlet-name> <servlet-class>input.EchoServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>EchoServlet</servlet-name> <url-pattern>/EchoServlet</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> よろしくお願いいたします!

    • ベストアンサー
    • Java
  • Tomcatにおけるサーブレットの呼び出し

    tomcatに関してですが、現在サーブレットからjspを呼び出すようなことをしたいと思い、web.xmlを以下のように設定し、”http:localhost:8080/servlet/Login”としても『HTTP Status 404 - 』が返却されます。jspからサーブレットを呼び出すことはできるのですが・・・(この場合、jspファイルをWEB-INFの直下にディレクトリを作成するとやはりアクセスができませんでした。WEB-INFと同レベルに置けばアクセスは可能でした。)。 どなたかわかる方がいれば教えて下さい! よろしくお願いします。 --------------- 環境 --------------- Windows2000Server eclipse ver2.1.1 tomcat ver4.1 --------------- ディレクトリ構成 --------------- WEB-INF Lclasses | LLogin_serv.java Ljsp LLogin.jsp --------------- 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>Login</servlet-name> <servlet-class>serv.Login_serv</servlet-class> </servlet> <servlet-mapping> <servlet-name>Login</servlet> <url-pattern>Login</url-pattern> </servlet-mapping> </web-app> 補足:tomcat-confにあるweb.xmlの『invoker』はコメントを外し有効にしてます。

    • ベストアンサー
    • Java