プロが教えるわが家の防犯対策術!

「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からだとエラーになります。

どうかご教授よろしくお願いします。

A 回答 (1件)

なんか修正ファイルあるみたいですよ。



http://www.sbcr.jp/books/download/art.asp?newsid …

>インポート javax.sql.DataSource は決して使用されません。の警告がでていました。
>ソースのなかではDataSourceは使用しているのに警告が出ていたのが気になります。l

インポート文編成してみたら?

>warファイルをtomcatのwebappsに入れるとエラーなくうまくいくのですが、eclipseからだとエラーになります。

Eclipseでもwarで動かそうとしてるんですか?
本持ってないので何やってんだかさっぱりわかんないんですけど。

この回答への補足

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で実行して確かめましたが結果は同じでした。

補足日時:2009/03/05 18:44
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/03/06 10:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!