java初心者です。
どなたか教えていただけませんでしょうか?
JAVAのstrutsを使用してソフトを作成しています。
JSPに記載した「<html:form action="/authentication" focus="id"> 」
との記述が、WEB(IE)に展開されたソースを見ると、「<form name="AuthenticationForm" method="post" action="/strutsTest/authentication">」
に変換されています。
action="/authentication"と記述しているにもかかわらず、
action="/strutsTest/authentication"と展開されているのですが
/strutsTestが自動的に付与されているのは、なぜなのでしょうか?
なにか設定するところがあるのでしょうか?
※struts-config.xmlに指定したpathと一致しない為、404NotFoundになるので自動設定しないように変更したいのです。
ちなみに環境は
struts-1.3.10
Apache Tomcat 6.0.14 Server
EclipsVersion: 3.4.2
pakage名:struts
プロジェクト名:strutsTest
struts-config.xmlの設定
<form-beans>
<form-bean name="AuthenticationForm" type="struts.AuthenticationForm"/>
</form-beans>
<global-exceptions>
</global-exceptions>
<global-forwards>
<forward name="fail" path="/login.jsp"/>
</global-forwards>
<action-mappings>
<action path="/authentication" name="AuthenticationForm" type="struts.AuthenticationAction" scope="session">
<forward name="success" path="/welcome.jsp"/>
<forward name="fail" path="/login.jsp"/>
</action>
</action-mappings>
login.jsp
<%@ page contentType="text/html; charset=Windows-31J" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<html:html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"/>
<title>ログイン画面</title>
</head>
<body>
<html:errors/>
ID・パスワードを入力してください。
<html:form action="/authentication" focus="id">
<html:text property="id" size="16"/>
<br>
<html:password property="pas" size="16" redisplay="false" />
<br>
<html:submit property="submit" value="送信"/>
<html:reset value="リセット"/>
</html:form>
</body>
</html:html>
動作順は、login.jsp => AuthenticationAction.class => welcome.jsp
です。
よろしくお願いします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
パッケージエクスプローラーで
右クリック→新規→その他→Java→Tomcatプロジェクト
でプロジェクトを作成しなかったってことですか?
>右クリック→新規→その他→Java→Tomcatプロジェクト
これで作成しましたが、なぜかWEB-INFの配下にClassesフォルダーが出来ません。
今も何回かやり直したのですが・・・
設定がどこかにあるのかどうかWEBで探して見ます。
フォルダー構造
WEB-INF
- LIB(フォルダ)
struts-config.xml
struts-html.tld
・
・
・
No.4
- 回答日時:
login.jspが表示されているということはTomcatの起動には問題がないと思います。
そうなるとwelcome.jspのスペル間違いの可能性が高いです。
パッケージエクスプローラーでF2でwelcome.jspの名前をコピペしてstruts-config.xmlに貼り付けてください。
あとAuthenticationAction.javaにブレイクポイントを張ってActionに到達しているか、遷移文字列(ActionForwardの文字列)も確認してください。
Actionに到達すれば、あとは遷移先の指定が間違っているだけだと思います。
この回答への補足
すみません。原因がはっきりしました。
eclipesの開発環境の問題だと思うのですが、eclipesではClassファイルがbinフォルダーに入っており、これを手動でWEB-INF/Classes/にコピーしてみると動きました。Tomcat6.0のwebapps eclipesのwebapps両方とも確認できました。
eclipesの環境をもっと熟知しておくべきでした。申し訳ありません。
いろいろとありがとうございました。
早速の回答ありがとうございます。
土日にかけて新しいプロジェクトを作成して試してみたところ
EclipsのStrutsIDEとTomcat6.0の関係が原因ではないかというところ
が出てきました。
以下検証手順です。
1 struts2というUrlでプロジェクトを作成。(Eclipse)
2 EclipseでTomcat6.0起動し、検証=>NG(同じエラー)
3 tomcat6.0のServer.xmlを書き換え、tomcatのWebapps内にプロジェクトをハンドで作成。TldファイルはEclipesからコピー
4 Tomcat再起動し実行 検証=>NG(同じエラー)
5 WEBからstruts1.3をダウンロードして、TOMCATフォルダーにwarファイルを展開
6 blankプロジェクトをリネームして、struts2プロジェクトを作成
7 apacheプロジェクトのwebページに書かれている内容に沿ってweb.xml struts-config.xmlの内容を書き換え。
8 server.xmlをTOMCATフォルダ参照に変更
9 TOMCAT再起動 検証=>OK (動きました)
struts1.3とstrutsIDE(Struts Ver 1.2)の違いは、tldファイルがなくなり、jarファイル化されています。
eclipesに、Struts1.3の環境を使用してプロジェクトの作成はまだしていませんので、すべて検証できていませんが、tomcat6.0とstruts1.2は動かないのでしょうか?
取っ掛かりが出来たので、ここから問題解決していきたいと思います。
ここまでお付き合いくださり、またいろいろヒントをくださいまして
感謝の気持ちで一杯です。ありがとうございます。
No.3
- 回答日時:
>struts-config.xmlのpath設定の方を変更してみます。
変更する必要はありません。
ってか他のやり方があるのかすら微妙です。
struts-config.xmlのPathの設定が悪いのではなく他の要因だと思います。
あと、404が出るのはどの画面ですか?
login.jspですか?
welcome.jspですか?
とりあえず手順を書きます。
1、ファイル配置が以下のようになっているか。
strutsTest
-WEB-INF/src
-struts
-AuthenticationAction.java
-AuthenticationForm.java
-WEB-INF
-struts-config.xml
-web.xml
-login.jsp
-welcome.jsp
2、Tomcatを起動してコンソールにエラーがないことを確認。
2、接続URLの確認
http://localhost:8080/strutsTest/
または
http://localhost:8080/strutsTest/login.jsp
3、2でhttp://localhost:8080/strutsTest/で接続している場合web.xmlのwelcome-fileタグにlogin.jspが記載されているか。
この回答への補足
添付できませんでしたので、何回かに分けます。
>あと、404が出るのはどの画面ですか?
エラーの出るタイミングは、
1 login.jspを表示 => http://localhost:8080/strutsTest/
2 ユーザIDとパスワードを入力しSUBMITボタンを押下
3 http://localhost:8080/strutsTest/authentication; …に遷移しエラー HTTPステータス 404 - /strutsTest/authenticationとなります。
手順に沿って確認してみました。
フォルダー構成は eclipsを使用しており、
C:\eclipse\workspace\strutsTest\WEB-INF\src\struts
=> AuthenticationAction.java
=> AuthenticationForm.java
C:\eclipse\workspace\strutsTest\WEB-INF\classes\struts
=> AuthenticationAction.class
=> AuthenticationForm.class
C:\eclipse\workspace\strutsTest
=> login.jsp
=> welcome.jsp
C:\eclipse\workspace\strutsTest\WEB-INF
=> web.xml
=> struts-config.xml
C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\Catalina\localhost
=> strutsTest.xml
となっておりたぶん間違いはなさそうなのですが・・・
回答ありがとうございます。
1000文字を超えるため、内容はテキストに添付させていただきます。
いろいろとTRYしていますが、いまだ原因不明です。
別のプロジェクトを新たに作成して比較してみたいと思います。
No.2
- 回答日時:
>/strutsTestが自動的に付与されているのは、なぜなのでしょうか?
仕様です。
>※struts-config.xmlに指定したpathと一致しない為、404NotFoundになるので自動設定しないように変更したいのです。
Tomcat起動時にEclipseのコンソールにエラーが表示されていませんか?
(コンテキストの起動が失敗していないか)
この回答への補足
すみません。補足は1回だけなのですね。
回答No3の続きです。読みにくくなってしまい
申し訳ありません。
------------------------------
ちなみに、EclipsからTOMCATへの連動設定で
strutsTest.xmlの定義(Eclipsで自動設定)は以下のようになっていました。
<Context path="/strutsTest" reloadable="true" docBase="C:\eclipse\workspace\strutsTest" workDir="C:\eclipse\workspace\strutsTest\work" >
<Logger className="org.apache.catalina.logger.SystemOutLogger" verbosity="4" timestamp="true"/>
</Context>
WEB.xmlの内容
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
-- 省略 --
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
TOMCATの起動ログではエラーは出てません。
(ログの内容)
2009/06/18 18:13:52 org.apache.coyote.http11.Http11Protocol init
情報: Coyote HTTP/1.1を http-8080 で初期化します
2009/06/18 18:13:52 org.apache.catalina.startup.Catalina load
情報: Initialization processed in 390 ms
2009/06/18 18:13:52 org.apache.catalina.core.StandardService start
情報: サービス Catalina を起動します
2009/06/18 18:13:52 org.apache.catalina.core.StandardEngine start
情報: Starting Servlet Engine: Apache Tomcat/6.0.14
2009/06/18 18:13:53 org.apache.struts.tiles.TilesPlugin initDefinitionsFactory
情報: Tiles definition factory loaded for module ''.
2009/06/18 18:13:53 org.apache.struts.validator.ValidatorPlugIn initResources
情報: Loading validation rules file from '/WEB-INF/validator-rules.xml'
2009/06/18 18:13:53 org.apache.struts.validator.ValidatorPlugIn initResources
情報: Loading validation rules file from '/WEB-INF/validation.xml'
2009/06/18 18:13:58 org.apache.coyote.http11.Http11Protocol start
情報: Coyote HTTP/1.1を http-8080 で起動します
2009/06/18 18:13:58 org.apache.jk.common.ChannelSocket init
情報: JK: ajp13 listening on /0.0.0.0:8009
2009/06/18 18:13:58 org.apache.jk.server.JkMain start
情報: Jk running ID=0 time=0/31 config=null
2009/06/18 18:13:58 org.apache.catalina.startup.Catalina start
情報: Server startup in 5404 ms
いろいろとTRYしていますが、原因不明です。
別のプロジェクトを新たに作成して比較してみたいと思います。
早速の回答ありがとうございます。
Tomcat起動時には、エラーは出ていませんでした。
>>/strutsTestが自動的に付与されているのは、なぜなのでしょうか?
>仕様です。
そういう仕様なのですね。
struts-config.xmlのpath設定の方を変更してみます。
ありがとうございました。
No.1
- 回答日時:
> JSPに記載した「<html:form action="/authentication" focus="id"> 」
> との記述が、WEB(IE)に展開されたソースを見ると、「<form name="AuthenticationForm" method="post" action="/strutsTest/authentication">」
html:form のアクションに、コンテキストパスが付加されるのは正しい動作だと思いますが、
なんで、404NotFound になるんだろう?
コンテキストの設定は、何をやっているんですか?
参考
http://struts.apache.org/1.3.10/struts-taglib/ta …
早速の回答ありがとうございます。
>コンテキストの設定は、何をやっているんですか?
今回特に設定していません。何か設定が必要なのでしょうか?
struts-config.xmlのaction-mappingに
<action path="/authentication" name="AuthenticationForm" type="struts.AuthenticationAction" scope="session">
を定義しており、<action path="/authentication" のURLでないと
だめなものと思い込んでいました。
他の視点から調べてみます。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
動的に作成したラジオボタンの...
-
javaでDBから取得したデータのJ...
-
フォームで同じ複数のnameで違...
-
struts bean:defineについて
-
フォーム上で押されたボタンに...
-
リクエストに応じたselectedの...
-
Struts2のファイルアップロード...
-
int型の内容をbyteの配列にコピー
-
Strutsで、どのRadioボタンが選...
-
「<c:forEach タグが終了し...
-
腕時計の時報をならないように...
-
ActiveWorkbook.Pathの一つ下の...
-
CGI(Perl)のメッセージボックス...
-
グローバルIPアドレスの変更タ...
-
jspからServletを呼び、元のjsp...
-
漏電遮断器の黄色ボタンと白色...
-
登録後、呼び出し元ページに戻...
-
webアプリを作ってます。エラー...
-
C++のDLLでコマンドライン引数...
-
遷移元を判定したい!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
リクエストに応じたselectedの...
-
フォーム上で押されたボタンに...
-
「<c:forEach タグが終了し...
-
フォームで同じ複数のnameで違...
-
int型の内容をbyteの配列にコピー
-
jspでjavascript関数へ引数を渡...
-
JSPでのリストボックス表示
-
JSPでのサブミット判定
-
jspファイルで注文フォームの合...
-
strutsを使用したjspでjavascri...
-
EL式 true falseを表示
-
JSFでJavaScriptを使用するには?
-
Strutsで、どのRadioボタンが選...
-
JSPのフォームの値を別のJSPか...
-
Java struts プルダウン
-
動的に作成したラジオボタンの...
-
JSP+Servletで終了ボタン
-
StrutsでPOSTのデータ(リクエ...
-
Struts2のタグについて
-
struts-config.xmlの設定
おすすめ情報