• 締切済み

「StrutsによるWebアプリケーションスーパーサンプル」の本のサンプルのエラーについて

「StrutsによるWebアプリケーションスーパーサンプル」(ソフトバンククリエィティブ)の本のP.124ページの「2-1」電子カタログを作ろうのサンプルなのですが、 P.125~128に記載されているデータベースの作成をして、2-1.warファイルをtomcatのwebappsのフォルダの なかにコピーしてtomcatを起動するとうまく解凍されてhttp://localhost:8080/2-1/Catalog.doにアクセスすると 正常に表示されたのですが、その解凍したファイルをeclipse側で2-1というプロジェクトを作成してインポートして strutsのlibの下のjarを追加してやると、 インポート javax.sql.DataSource は決して使用されません。の警告がでていました。 ソースのなかではDataSourceは使用しているのに警告が出ていたのが気になります。l http://localhost:8080/2-1/Catalog.doにアクセスすると以下のようなエラーが表示されました。 <エラー> org.apache.jasper.JasperException: 絶対URI: http://jakarta.apache.org/struts/tags-bean は web.xmlまたはこのアプリケーションを配備したJARファイルのどちらかでも解決できません 以下の内容をweb.xmlに追加して解決しました。 <web.xml> <taglib> <taglib-uri>/tags/struts-bean</taglib-uri> <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-html</taglib-uri> <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-logic</taglib-uri> <taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-tiles</taglib-uri> <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-nested</taglib-uri> <taglib-location>/WEB-INF/tld/struts-nested.tld</taglib-location> </taglib> <taglib> つぎに、http://localhost:8080/2-1/Catalog.doにアクセスすると HTTP Status 404 - /2-1/Catalog.doのエラーがでて原因がわからなくてこまっています。 データベースが作成されていることは確認しています。 開発環境についてはCDに付属のものを使用してバージョンはあわせています。 tomcatでwarを解凍して削除すると設定データのごみが残っているのかなと思いまして、一度eclipseとtomcatを削除 して再インストールをしてもうまくいきませんでした。 C:\Program Files\Apache Group\Tomcat 4.1\confのなかのserver.xmlのなかには設定は追加されていることは 確認しています。 <Context path="/2-1" reloadable="true" docBase="C:\eclipse\workspace\2-1" workDir="C:\eclipse\workspace\2-1\work\org\apache\jsp" /> あと、DFツール、ファイル作成機でファイルとソースの内容を比較してみましたが、 おかしなところはありませんでした。 warファイルをtomcatのwebappsに入れるとエラーなくうまくいくのですが、eclipseからだとエラーになります。 どうかご教授よろしくお願いします。

みんなの回答

回答No.1

なんか修正ファイルあるみたいですよ。 http://www.sbcr.jp/books/download/art.asp?newsid=1552 >インポート javax.sql.DataSource は決して使用されません。の警告がでていました。 >ソースのなかではDataSourceは使用しているのに警告が出ていたのが気になります。l インポート文編成してみたら? >warファイルをtomcatのwebappsに入れるとエラーなくうまくいくのですが、eclipseからだとエラーになります。 Eclipseでもwarで動かそうとしてるんですか? 本持ってないので何やってんだかさっぱりわかんないんですけど。

takeshif
質問者

お礼

tomcat4.1を使用していたのが原因でした。tomcat5では上の補足の ような手間は必要ありません。おさわがせしました。 できるだけ本に載っている環境に合わせたほうがいいですね。 ご回答ありがとうございました。 また質問の機会がありましたらそのときはよろしくお願いします。

takeshif
質問者

補足

ProKaseifuさんご回答ありがとうございます。 eclipse2.1はwarファイルのインポートができません。zipファイルならできるみたいですけど warの拡張子をzipに変えてもできませんでした。 eclipse3.3はwarファイルのインポートができるみたいですけど、tomcatプロジェクトを作成していないので 以下のようなエラーがでます。 型 javax.servlet.http.HttpServletRequest を解決できません。 必要な .class ファイルから間接的に参照されています。 メニューから「ソース」>「インポートの編成」をクリックしたら 警告が直りました。 (本題) strutsスーパーサンプルは10日でおぼえるJakarta入門教室のWEB-INF以下ののlibとxmlファイルを上書きするとtop ページだけが表示される <strutsスーパーサンプル><10日でおぼえるJakarta入門教室>ともに jakarta-struts-1.1のバージョンを使用しています。 <追加したファイル> struts-bean.tld struts-html.tld struts-logic.tld struts-nested.tld struts-template.tld struts-tiles.tld taglibs-mailer.tld taglibs-request.tld commons-beanutils.jar commons-collections.jar commons-dbcp.jar commons-digester.jar commons-fileupload.jar commons-lang.jar commons-logging.jar commons-pool.jar commons-resources.jar commons-validator.jar jakarta-oro.jar jakarta-regexp-1.2.jar jaxen-full.jar jstl.jar saxpath.jar standard.jar struts-legacy.jar struts.jar taglibs-mailer.jar taglibs-request.jar <追加したらでたエラーメッセージ> Request[/CatalogPage] does not contain handler parameter named action <ネットで調べた情報> struts-config.xmlの<action>要素のparameter属性に"method"が無いよ、とのことです。 <submit property="xxx">と<action parameter="xxx">をあわせる必要があります。 urlの指定が間違っているときもある。 <解決策> web.xmlに以下を記述 <filter> <filter-name>Encoding</filter-name> <filter-class>filter.EncodingFileter</filter-class> </filter> <filter-mapping> <filter-name>Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <条件> strutsスーパーサンプル2-5,2-6 web.xmlに<taglib>の設定を入れていても web.xmlに以下を入れているとorg.apache.jasper.JasperException: 絶対URI: http://jakarta.apache.org/struts/tags-bean はweb.xmlまたはこのアプリケーションを配備したJARファイルのどちらかでも解決できません が出るので以下を一度削除する <filter> <filter-name>Encoding</filter-name> <filter-class>filter.EncodingFileter</filter-class> </filter> <filter-mapping> <filter-name>Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 一度削除して起動アクセスする 次ページボタンでRequest[/CatalogPage] does not contain handler parameter named actionが発生する ので削除した上記を再び追加するとうまくいく。 eclipse3.3の場合web.xmlにfilterを使用している場合、 以下のエラーが出てビルドできませんでした。 <表示されたエラー> エレメント・タイプ "web-app" のコンテンツは "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)" と一致しなければなりません。 <まとめ> warファイルをtomcatのwebappsフォルダに入れて実行したときはすんなりいったのですが、原因がよくわからなかったです。 eclipse2.1,3.3で実行して確かめましたが結果は同じでした。

関連するQ&A