1243698640 Java、MVCモデルを学習しているものです。

初期画面(html) → servlet呼び出し → 次画面(jsp画面)の遷移ができないのですが、何が原因で動作しないのでしょうか?

動作確認までに行った動作は以下の状況です。

①all in one eclipse導入
Version: 3.4.2(内臓:JRE1.6 TomCat 6.0)

②eclipse設定
1.ウィンドウ → 設定 → Java → インストール済みのJRE「1.6」に設定。
2.ウィンドウ → 設定 → Java → コンパイラー準拠レベル 「1.6」に設定。
3.ウィンドウ → 設定 → Tomcat → Tomcatバージョン「6.0」に設定 → Tomcatホーム(TomCatインストール場所を指定)
4.ウィンドウ → 設定 → Tomcat → JVM設定 「6.0」に設定。

③TomCat動作確認 → OK
(http://localhost:8080で起動確認)

④TomCatプロジェクト作成
 1.html作成 → Servlet作成 → Jsp作成 → Web.xml作成。
 2.html Submitボタン押下 → 404エラー Servletが呼び出されない(ここで詰まっている状況です。)
 3.http://localhost:8080/プロジェクト名 を指定してもプロジェクト内容が表示されない。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/06/07 00:55:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:QuestR2 No.1

回答回数435ベストアンサー獲得回数13

ポイント35pt

http://www.hellohiro.com/servlet.htm

Web.xmlの記述が間違ってる可能性が高いですね。

id:ThinkThink

TomCat4.11以上の注意を見られて、そうおっしゃってくださったのでしょうか?

こちらちょっと試してみましたが・・・


invokerのコメントを外したところ下記の状態となりました。

>サーブレットマッピングは未知のサーブレット名 invoker を指定しています

この部分は何を示しているのでしょうか?

all in one eclipseを使用するまでは、URLご指定いただいている方法でもいけたはずなのですが

いまのところ原因がさっぱりな状態です(汗)


[エラー 一部分]

009/05/31 16:25:19 org.apache.catalina.startup.ContextConfig processDefaultWebConfig

致命的: デフォルトのweb.xml中の解析エラーです

java.lang.IllegalArgumentException: サーブレットマッピングは未知のサーブレット名 invoker を指定しています

at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2808)

at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2834)

at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1143)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)

at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)

at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)

at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1644)

at org.apache.catalina.startup.ContextConfig.processDefaultWebConfig(ContextConfig.java:695)

at org.apache.catalina.startup.ContextConfig.defaultWebConfig(ContextConfig.java:632)

at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1061)

at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261)

at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)

at org.apache.catalina.core.StandardContext.start(StandardContext.java:4252)

at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)

at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)

at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)

at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)

at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)

at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)

at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1147)

at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)

at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)

at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)

at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)

at org.apache.catalina.core.StandardService.start(StandardService.java:516)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)

at org.apache.catalina.startup.Catalina.start(Catalina.java:578)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

2009/05/31 16:25:19 org.apache.catalina.startup.ContextConfig processDefaultWebConfig


うーん・・・現在のmapping方法としては、

特に間違っている場所がわからない状況です(汗)

2009/05/31 16:31:12
id:matane No.2

回答回数40ベストアンサー獲得回数2

ポイント35pt

404エラーが出るなら、ieHttpHeader(IE用)や、LiveHttpHeader(FireFox用)等で、期待しているリクエストが投げられているか確認してみると何か分かるかもしれません。

  • id:ZAS
    ぱっと見た目で。

    index.html の actionと web.xml の url-pattern が一致していないのでは?
  • id:tdoi
    TomCatのログにはなんと吐かれていますか?
    ZASさんがおっしゃっていることも気になりますが、そもそも配備されていないような気もちょっとしたりしています。
  • id:ThinkThink
    Zasさん、どうもありがとうございます。

    ●修正
     index.html
     「index.html の action」 と 「web.xml の url-pattern」一致状態にしました。

    ●現状
     動作確認を行ったのですが、Servletを呼ばない状態です。
     うーん・・・ 他で考えられる原因としては、web.xmlの記述が間違っているのでしょうか?(汗


    【index.html】(初期画面) (action を修正)
    <html>
    <head>
    <title>MVC動作テスト</title>
    </head>
    <body>
    <h1>入力フォーム</h1>
    <form action="servlet/MoveJsp" method="post">
    <table>
    <tr><td>お名前:</td><td><input type="text" name="name"/></td></tr>
    <tr><td>ふりがな:</td><td><input type="text" name="furigana"/></td></tr>
    <tr><td>生年月日:</td><td>
    <select name="year">
    <option value=""></option>
    </select>年
    <select name="month">
    <option value="1"></option>
    </select>月
    <select name="day">
    <option value=""></option>
    </select>日
    </td></tr>
    </table>
    <br>
    <input type="submit" value="送信"/>
    </form>
    </body>
    </html>

    【MoveJsp.Java】(サーブレット)
    import java.io.IOException;
    import java.io.PrintWriter;

    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class MoveJsp extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

    // 次のJSPを設定
    RequestDispatcher rd = request.getRequestDispatcher("/check.jsp");

    // 次のJSPに遷移
    rd.forward(request, response);
    }
    }

    【check.jsp】(遷移先 jsp)
    <%@ page contentType="text/html; charset=Shift_JIS"
    pageEncoding="Shift_JIS" %>

    <%
    Exception ex = (Exception)request.getAttribute( "msg" );
    %>

    <html>
    <head>
    <title>Error10.jsp</title>
    </head>
    <body>
    ■エラー<br/>
    <%= ex %>
    </body>
    </html>


    【web.xml】
    <?xml version="1.0" encoding="ISO-8859-1"?>

    <web-app 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"
    version="2.4">

    <servlet>
    <servlet-name>MoveJsp</servlet-name>
    <servlet-class>MoveJsp</servlet-class>
    </servlet>

    <servlet-mapping>
    <servlet-name>MoveJsp</servlet-name>
    <url-pattern>/servlet/MoveJsp</url-pattern>
    </servlet-mapping>

    </web-app>
  • id:ThinkThink
    tdoiさん
    ログなのですが、コンソールに出力される内容のことで合っていますか?
    現状で吐いている内容はこちらの状況です。

    [ TomCatログ ]
    2009/05/31 9:15:52 org.apache.catalina.core.AprLifecycleListener init
    情報: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Eclispe\jre1.6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;D:/Eclispe/eclipse/jre/bin/client;D:/Eclispe/eclipse/jre/bin;c:\borland\bcc55\Bin;C:\WINDOWS;C:\WINDOWS\System32;C:\WINDOWS\System32\Wbem;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\j2sdk1.4.2_06\bin;C:\jakarta-tomcat-5.0.28\bin;C:\apache-ant-1.6.2\bin;C:\Program Files\QuickTime\QTSystem\;
    2009/05/31 9:15:52 org.apache.coyote.http11.Http11Protocol init
    情報: Coyote HTTP/1.1を http-8080 で初期化します
    2009/05/31 9:15:52 org.apache.catalina.startup.Catalina load
    情報: Initialization processed in 354 ms
    2009/05/31 9:15:52 org.apache.catalina.core.StandardService start
    情報: サービス Catalina を起動します
    2009/05/31 9:15:52 org.apache.catalina.core.StandardEngine start
    情報: Starting Servlet Engine: Apache Tomcat/6.0.16
    2009/05/31 9:15:52 org.apache.catalina.core.StandardContext addApplicationListener
    情報: The listener "listeners.ContextListener" is already configured for this context. The duplicate definition has been ignored.
    2009/05/31 9:15:52 org.apache.catalina.core.StandardContext addApplicationListener
    情報: The listener "listeners.SessionListener" is already configured for this context. The duplicate definition has been ignored.
    2009/05/31 9:15:52 org.apache.catalina.core.ApplicationContext log
    情報: ContextListener: contextInitialized()
    2009/05/31 9:15:52 org.apache.catalina.core.ApplicationContext log
    情報: SessionListener: contextInitialized()
    2009/05/31 9:15:53 org.apache.coyote.http11.Http11Protocol start
    情報: Coyote HTTP/1.1を http-8080 で起動します
    2009/05/31 9:15:53 org.apache.jk.common.ChannelSocket init
    情報: JK: ajp13 listening on /0.0.0.0:8009
    2009/05/31 9:15:53 org.apache.jk.server.JkMain start
    情報: Jk running ID=0 time=0/16 config=null
    2009/05/31 9:15:53 org.apache.catalina.startup.Catalina start
    情報: Server startup in 628 ms

    起動時から何も変化が無い状況です。
    画面上のエラー内容としては、404エラーが発生しています。
  • id:ThinkThink
    情報を整理したいのですが

     ・all in one eclipseを使用した場合、classesフォルダは作成されないのでしょうか?
      (どのようにコンパイルし、どのようにクラスファイルを作成するのでしょうか?

     ・「http://localhost:8080/mvctest」 の指定でプロジェクトの内容が表示できないのは何故なのでしょうか?
  • id:ThinkThink
    あれからweb.xmlの記述見直しなど試してみたところ、
    動作する様子がありません(汗)


    一度環境(eclipse等)を入れなおして見た方がいいのでしょうか?


    昔、参考書を元にしたとき(参考書付属CD にある環境構築)を行ったときには
    問題無く稼動していたのですが(汗)


    どこか見落としがあるのかもしれないのでもうちょっと確認してみます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません