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

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

新規登録して質問してみよう
ただいま回答率
85.49%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Q&A

0回答

2220閲覧

strutsが起動しない

masaking

総合スコア30

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

0グッド

0クリップ

投稿2019/11/19 05:46

編集2019/11/20 00:29

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

xml

1<!-- ================================================ Form Bean Definitions --> 2 3 <form-beans> 4 <form-bean type="form.CalcForm" name="CalcForm"/> 5 <form-bean type="view.CalcView" name="CalcView"/> 6 7 <!-- sample form bean descriptor for an ActionForm 8 <form-bean 9 name="inputForm" 10 type="app.InputForm"/> 11 end sample --> 12 13 <!-- sample form bean descriptor for a DynaActionForm 14 <form-bean 15 name="logonForm" 16 type="org.apache.struts.action.DynaActionForm"> 17 <form-property 18 name="username" 19 type="java.lang.String"/> 20 <form-property 21 name="password" 22 type="java.lang.String"/> 23 </form-bean> 24 end sample --> 25 26 </form-beans> 27 28 29<!-- ========================================= Global Exception Definitions --> 30 31 <global-exceptions> 32 <!-- sample exception handler 33 <exception 34 key="expired.password" 35 type="app.ExpiredPasswordException" 36 path="/changePassword.jsp"/> 37 end sample --> 38 </global-exceptions> 39 40 41<!-- =========================================== Global Forward Definitions --> 42 43 <global-forwards> 44 <!-- Default forward to "Welcome" action --> 45 <!-- Demonstrates using index.jsp to forward --> 46 <forward 47 name="welcome" 48 path="/Welcome.do"/> 49 </global-forwards> 50 51 52<!-- =========================================== Action Mapping Definitions --> 53 54 <action-mappings> 55 <!-- Default "Welcome" action --> 56 <!-- Forwards to Welcome.jsp --> 57 <action 58 path="/Welcome" 59 forward="/pages/Calc2.jsp"/> 60 61 <!-- 計算 --> 62 <action 63 path="/Calc" 64 type="action.CalcAction" 65 name="CalcForm" 66 scope="session" 67 validate="false" 68 input="Calc"> 69 <forward 70 name="success" 71 path="Calc" /> 72 </action> 73 74 <!-- 自作計算 --> 75 <action= 76 path="/Calc2" 77 type="action.CalcAction2" 78 name="CalcForm" 79 scope="session" 80 validate="false" 81 input="Calc2"> 82 <forward 83 name="success" 84 path="Calc2" /> 85 </action>

上記、長い為省略

index.jsp

jsp

1<%@ taglib uri="/tags/struts-logic" prefix="logic" %> 2 3<logic:redirect forward="welcome"/> 4 5 6 7<%-- 8Redirect default requests to Welcome global ActionForward. 9By using a redirect, the user-agent will change address to match the path of our Welcome ActionForward. 10--%> 11

welcome.jsp

jsp

1<%@ taglib uri="/tags/struts-bean" prefix="bean" %> 2<%@ taglib uri="/tags/struts-html" prefix="html" %> 3<%@ taglib uri="/tags/struts-logic" prefix="logic" %> 4 5<html:html locale="true"> 6<head> 7<title><bean:message key="welcome.title"/></title> 8<html:base/> 9</head> 10<body bgcolor="white"> 11 12<logic:notPresent name="org.apache.struts.action.MESSAGE" scope="application"> 13 <font color="red"> 14 ERROR: Application resources not loaded -- check servlet container 15 logs for error messages. 16 </font> 17</logic:notPresent> 18 19<h3><bean:message key="welcome.heading"/></h3> 20<p><bean:message key="welcome.message"/></p> 21 22</body> 23</html:html> 24

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

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

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

以下追記

実行環境

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

イメージ説明

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dameo

2019/11/19 11:41

まずstrutsや他の実行環境のバージョンを書いてもらえますか? なんとなくstruts 1.Xな気がするのですが…
masaking

2019/11/20 00:31

ご指摘ありがとうございます。 追記の通り、1.2.9でした。 また、ファイル構成も合わせてあげました。 設定ファイルとtilesにバツが付いているのですが、開いてみると、特にバツのある行が無くて、どうしよう、という状態です。
dameo

2019/11/20 01:14

Struts 1.x Webフレームワークは、随分前にサポートが終了し、公式にはサポートされなくなっています。 保守案件か何かなのかと思いますが、そういう理由があるなら、その明記もした方がいいかと思います。 そして、もし保守案件なのだとしたら、開発やサポートも終わってるライブラリなので、環境は当時のバージョンに合わせた方がいいと思います。 それからstruts_config.xmlにはXがついてますが、これはどうしてですか?
dameo

2019/11/20 01:35

一応処理の流れも書いておきます。 まず、web.xmlに恐らく記述されてる、welcome-file-listのindex.jsp指定により、 /index.jspを処理しに行き、 taglibのlogicのredirectで、welcomeにforwardしようとして、なぜかNullPointerExceptionが出てるという状況です。 多分原因はさっきのstruts_config.xmlの問題ではないかと思っています。
masaking

2019/11/20 02:18

最初に飛ぶページが、struts-config.xmlに書いてある記載を参考にするものだと思っていました。 ありがとうございます。 web.xmlファイルを、 <!-- The Usual Welcome File List --> <welcome-file-list> <welcome-file>/pages/Calc2.jsp</welcome-file> </welcome-file-list> struts-config.xmlを、 <!-- =========================================== 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> のように記述しております。 その結果、出てきたエラーが、 タイプ 例外報告 メッセージ [/pages/Calc2.jsp] の処理中に行番号 [10] で例外が発生しました。 説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。 例外 org.apache.jasper.JasperException: [/pages/Calc2.jsp] の処理中に行番号 [10] で例外が発生しました。 7: 8: <body bgcolor="#ffffff"> 9: <h2>���������Q�悷��v���O����</h2> 10: <html:form action="/Calc2"> 11: <html:text name="CalcForm" property="var1" size="10" /> 12: <html:submit value="=" /> 13: Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:625) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:499) 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) 根本原因 javax.servlet.ServletException: javax.servlet.jsp.JspException: ActionMappingsまたはActionFormBeansコレクションが見つかりません org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:666) org.apache.jsp.pages.Calc2_jsp._jspService(Calc2_jsp.java:157) 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) 根本原因 javax.servlet.jsp.JspException: ActionMappingsまたはActionFormBeansコレクションが見つかりません org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:747) org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:443) org.apache.jsp.pages.Calc2_jsp._jspx_meth_html_005fform_005f0(Calc2_jsp.java:216) org.apache.jsp.pages.Calc2_jsp._jspx_meth_html_005fhtml_005f0(Calc2_jsp.java:183) org.apache.jsp.pages.Calc2_jsp._jspService(Calc2_jsp.java:144) 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 となりました。 Calc2.jspには、 <%@ page pageEncoding="Windows-31J" contentType="text/html; charset=Windows-31J"%> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %> <html:html> <body bgcolor="#ffffff"> <h2>ただただ2乗するプログラム</h2> <html:form action="/Calc2"> <html:text name="CalcForm" property="var1" size="10" /> <html:submit value="=" /> <bean:write name="CalcView" property="rs1" /> </html:form> </body> </html:html> と書いています。
masaking

2019/11/20 02:30 編集

長々しい返信申し訳ありません。 エラーメッセージが変わった場合、本文を更新してよいものかわからないため、こうなりました。 コードなど、本文に書いたほうが親切な書き方の場合、訂正いたします。 ストラッツコンフィグのどこが悪いのか、プログラムの横にバツ印がつかないため、自分で検討を付けている状態です。そのため理由はわからないです。 おっしゃる通りサポート切れです。中小メーカー総務部勤務なのですが、使っている理由は、現在社内基幹システムがそのフレームワークで動いており、上司はほかのフレームワークを使うつもりはないため、勉強するように命じられているからです。 環境については、例えば、eclipseのバージョン?は、 Rational team concet version 2.0.0.2を使っていましたが、なぜかそれだとmysqlにつながらず、社内データベースをmysqlに移行する実験をするために、最新のeclipseで、サポート切れのフレームワークで、mysqlにつなぐことが求められている状況です。
dameo

2019/11/20 02:25

最初に飛ぶページというか、あなたがブラウザに http://localhost:7080/firstStruts/ と入れたので、このアプリ的にはパスとして/が指定されたことになり、/はファイル名がないので、web.mlの設定により/index.jspになっただけです。 まずは以前に書いたコメントで聞いたことに答えてください。
dameo

2019/11/20 02:27

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

2019/11/20 02:34

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

2019/11/20 02:46

正確には、バツ印はいまだ残っているけど、Calc2.jspにforwardできて、forwardさきでエラーが起こっている状態です。 ドキュメントというものがあるのですね。 プログラミング初めて1か月ですが、できることからひとつずつ理解していこうと思います。 web.xmlファイルが大事ということを知れたのが学びでした。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問