質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.13%

strutsが起動しない

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 732

score 30

strutsでつくったプログラムに、ブラウザから、

http://localhost:7080/firstStruts/

でアクセスすると、エラーが出ます。ポート番号は正しいです。

思いつくところは直したのですが、なぜか関係ない、index.jsp の部分にエラーが出て困っています。

どうしたら画面が表示されるでしょうか。

おそらく、プロジェクトをブラウザで入ったとき、一番最初にどこのファイルを参照されるかがわかっていない、あるいは、パスの名前とクラスの名前を混同している、が原因なのかと思いますが、どう直せばよいかわからないです。

HTTPステータス 500 – Internal Server Error
タイプ 例外報告

メッセージ [index.jsp] の処理中に行番号 [4] で例外が発生しました。

説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。

例外

org.apache.jasper.JasperException: [index.jsp] の処理中に行番号 [4] で例外が発生しました。

1: <%@ taglib uri="/tags/struts-logic" prefix="logic" %>
2: 
3: <logic:redirect forward="welcome"/>
4: 
5: 
6: 
7: <%--


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:625)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:514)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    filter.EncodingFileter.doFilter(EncodingFileter.java:30)
根本原因

java.lang.NullPointerException
    org.apache.struts.taglib.TagUtils.computeURLWithCharEncoding(TagUtils.java:428)
    org.apache.struts.taglib.TagUtils.computeURLWithCharEncoding(TagUtils.java:311)
    org.apache.struts.taglib.logic.RedirectTag.generateRedirectURL(RedirectTag.java:294)
    org.apache.struts.taglib.logic.RedirectTag.doEndTag(RedirectTag.java:268)
    org.apache.jsp.index_jsp._jspx_meth_logic_005fredirect_005f0(index_jsp.java:167)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:127)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    filter.EncodingFileter.doFilter(EncodingFileter.java:30)
注意 原因のすべてのスタックトレースは、サーバのログに記録されています

struts-config.xml

<!-- ================================================ Form Bean Definitions -->

    <form-beans>
        <form-bean type="form.CalcForm" name="CalcForm"/>
        <form-bean type="view.CalcView" name="CalcView"/>

    <!-- sample form bean descriptor for an ActionForm
        <form-bean
            name="inputForm"
            type="app.InputForm"/>
    end sample -->

    <!-- sample form bean descriptor for a DynaActionForm
        <form-bean
            name="logonForm"
            type="org.apache.struts.action.DynaActionForm">
            <form-property
                name="username"
                type="java.lang.String"/>
            <form-property
                name="password"
                type="java.lang.String"/>
       </form-bean>
    end sample -->

    </form-beans>


<!-- ========================================= Global Exception Definitions -->

    <global-exceptions>
        <!-- sample exception handler
        <exception
            key="expired.password"
            type="app.ExpiredPasswordException"
            path="/changePassword.jsp"/>
        end sample -->
    </global-exceptions>


<!-- =========================================== Global Forward Definitions -->

    <global-forwards>
        <!-- Default forward to "Welcome" action -->
        <!-- Demonstrates using index.jsp to forward -->
        <forward
            name="welcome"
            path="/Welcome.do"/>
    </global-forwards>


<!-- =========================================== Action Mapping Definitions -->

    <action-mappings>
            <!-- Default "Welcome" action -->
            <!-- Forwards to Welcome.jsp -->
        <action
            path="/Welcome"
            forward="/pages/Calc2.jsp"/>

    <!-- 計算 -->
        <action 
            path="/Calc" 
            type="action.CalcAction" 
            name="CalcForm"
            scope="session" 
            validate="false" 
            input="Calc">
        <forward 
            name="success" 
            path="Calc" />
        </action>

    <!-- 自作計算 -->
        <action=
            path="/Calc2"
            type="action.CalcAction2"
            name="CalcForm"
            scope="session"
            validate="false"
            input="Calc2">
        <forward
            name="success"
            path="Calc2" />
        </action>


上記、長い為省略

index.jsp

<%@ taglib uri="/tags/struts-logic" prefix="logic" %>

<logic:redirect forward="welcome"/>



<%--
Redirect default requests to Welcome global ActionForward.
By using a redirect, the user-agent will change address to match the path of our Welcome ActionForward. 
--%>

welcome.jsp

<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>

<html:html locale="true">
<head>
<title><bean:message key="welcome.title"/></title>
<html:base/>
</head>
<body bgcolor="white">

<logic:notPresent name="org.apache.struts.action.MESSAGE" scope="application">
  <font color="red">
    ERROR:  Application resources not loaded -- check servlet container
    logs for error messages.
  </font>
</logic:notPresent>

<h3><bean:message key="welcome.heading"/></h3>
<p><bean:message key="welcome.message"/></p>

</body>
</html:html>

となります。
他、必要なファイルがありましたらご指摘ください。

とくに、どういった仕組みで、プロジェクトのパスで入ったときどこに飛ぶことになるのかを知りたいです。

よろしくお願いいたします。

以下追記

実行環境

Windows
Microsoft Windows [Version 10.0.17763.737]
Widnows10 Pro version 1809
Eclipse
Version: 2019-09 R (4.13.0)
Build id: 20190917-1200

Tomcat
9.0
Java
C:\Program Files (x86)\Java\jre1.8.0_221
C:\Program Files (x86)\Java\jdk1.5.0
Mysql
mysql  Ver 8.0.17 for Win64 on x86_64 (MySQL Community Server - GPL)
mysql-connector-java-8.0.17.jar

Struts
Specification-Version: 1.2.9

イメージ説明

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • dameo

    2019/11/20 11:27

    あ、入れ違いだったんですね。すみません。

    キャンセル

  • dameo

    2019/11/20 11:34

    バツ印は消えている状態で、無事にCalc2.jspにforward出来たということですね。
    本文とコメントの書き方はお任せします。
    勉強は正式ドキュメントでやるか、当時の書籍でやるかがいいかと思います。
    現状正式ドキュメントは
    https://archive.apache.org/dist/struts/documentation/
    にアーカイブされています。
    英語ですが、今はChromeの翻訳で読めるので、正式なやつで勉強するのもいいかもしれません。
    あとは自力でお願いします。

    キャンセル

  • masaking

    2019/11/20 11:46

    正確には、バツ印はいまだ残っているけど、Calc2.jspにforwardできて、forwardさきでエラーが起こっている状態です。

    ドキュメントというものがあるのですね。
    プログラミング初めて1か月ですが、できることからひとつずつ理解していこうと思います。
    web.xmlファイルが大事ということを知れたのが学びでした。
    ありがとうございます。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る