今だけ人気マンガ100円レンタル特集♪

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
です。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

パッケージエクスプローラーで



右クリック→新規→その他→Java→Tomcatプロジェクト

でプロジェクトを作成しなかったってことですか?
    • good
    • 0
この回答へのお礼

>右クリック→新規→その他→Java→Tomcatプロジェクト
これで作成しましたが、なぜかWEB-INFの配下にClassesフォルダーが出来ません。
今も何回かやり直したのですが・・・
設定がどこかにあるのかどうかWEBで探して見ます。
フォルダー構造
WEB-INF
- LIB(フォルダ)
struts-config.xml
struts-html.tld

     ・
     ・

お礼日時:2009/06/23 10:35

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の環境をもっと熟知しておくべきでした。申し訳ありません。
いろいろとありがとうございました。

補足日時:2009/06/22 11:37
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。

土日にかけて新しいプロジェクトを作成して試してみたところ
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は動かないのでしょうか?
取っ掛かりが出来たので、ここから問題解決していきたいと思います。

ここまでお付き合いくださり、またいろいろヒントをくださいまして
感謝の気持ちで一杯です。ありがとうございます。

お礼日時:2009/06/22 10:12

>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
となっておりたぶん間違いはなさそうなのですが・・・

補足日時:2009/06/18 18:27
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
1000文字を超えるため、内容はテキストに添付させていただきます。

いろいろとTRYしていますが、いまだ原因不明です。
別のプロジェクトを新たに作成して比較してみたいと思います。

お礼日時:2009/06/18 18:26

>/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していますが、原因不明です。
別のプロジェクトを新たに作成して比較してみたいと思います。

補足日時:2009/06/18 18:32
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
Tomcat起動時には、エラーは出ていませんでした。
>>/strutsTestが自動的に付与されているのは、なぜなのでしょうか?
>仕様です。
そういう仕様なのですね。
struts-config.xmlのpath設定の方を変更してみます。
ありがとうございました。

お礼日時:2009/06/17 22:36

> 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 …
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
>コンテキストの設定は、何をやっているんですか?
今回特に設定していません。何か設定が必要なのでしょうか?

struts-config.xmlのaction-mappingに
<action path="/authentication" name="AuthenticationForm" type="struts.AuthenticationAction" scope="session">
を定義しており、<action path="/authentication" のURLでないと
だめなものと思い込んでいました。
他の視点から調べてみます。

ありがとうございます。

お礼日時:2009/06/17 22:47

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qチェックボックスの返す値

<INPUT type="checkbox" name="check_1" value="1">
という記述だと、
チェックあるとき→1
チェックないとき→(空白)
となりますよね。
チェックあるとき→1
チェックないとき→0
にしたいときはどうすればよろしいのでしょうか?

Aベストアンサー

チェックボックスやラジオボタンはチェックされていないと何も送信されないので、JavaScript でチェックボックスの値を変更しても意味がありません。

JavaScript依存でよいなら、確実に値が送信される hidden を使って
  <input type="hidden" name="check_1" value="0">
  <input type="checkbox" onclick="this.form.check_1.value=this.checked ? 1 : 0">
のようにすれば、常に 1 か 0 が送信されます。

依存したくない場合は、CGI側でデフォルト値を指定するようにします。例えば Perl で、フォームデータを %FORM に入れている場合、デコード処理の後で
  $FORM{check_1} ||= 0;
のようにします。

QStrutsで画面遷移させない。

Strutsでwebアプリを作成しているのですが、jsp上のボタンを押下時、sessionに持ってる変数を書き換えたいのですが、画面遷移はさせたくないのです。それって可能ですか? どなたかご教授ください。

Aベストアンサー

画面遷移とは、サーバーサイドへのアクセスのことを想定されているのでしょうか?
それとも、表示されている画面の状態の変化のことでしょうか?

もし、後者であれば、Actionで自身の画面にforwardしてやればできます。

前者であるのなら難しいです。
sessionの値を書き換えたいのであれば、必ずサーバーサイドに要求を送らなければならないからです。
今、流行のAjaxを利用すれば、画面の遷移なしに可能です。

QEclipseでのJSP・Servlet開発について(文字化け)

EclipseでJSP、Servletの開発をしております。
文字化けについての質問なのですが、ブラウザ上で表示される文字が
文字化けしてしまいます。JSPの頭に
<%@page contentType="text/html; charset=SHIFT_JIS"%>
と入れており、ブラウザでもエンコードはShift_JISとなっています。

自分なりに原因を調べたのですが、○○.jsp→○○_jsp.javaに変換?する際に
文字化けしているようで、Eclipse上でJSP、Servletを見ると普通なのですが、
○○_jsp.javaは見事に文字化けしていました。
文字化けした○○_jsp.javaを削除して再度表示(_jsp.javaの再作成)も試みた
のですが、同じ結果でした。

1ヶ月以上触っていないパッケージのソースも突然文字化けを起こしたので
原因も分からない状態です。
原因・直し方がお分かりの方、是非ともご指南下さい。
情報不足でしたら追記させて頂きますので、どうぞ宜しくお願い致します。

Aベストアンサー

Eclipseの文字コードの設定は、これから作成するファイルに関しては
「ウィンドウ->設定->一般->ワークスペース」で
「テキスト・ファイル・エンコード」にて指定できます。
ただし、これだとすでに作成したファイルの文字コードは変更されないため、
対象ファイルを右クリックし、「プロパティ->リソース」で変更できます。

>テキストエディタで開くと文字化けしていないのに、何故かEclipseで開くと文字化けし、稀に(きっかけは不明だが)ブラウザ(FireFox)上でも文字化けした状態で表示される。

これも上記で設定すれば解決すると思います。
テキストエディタは何を使っているのかわからないですが、テキストエディタ側ではShift-jisで読み込んで、EclipseではUTF-8?で読み込んでいるために起きているのが原因だと思います。

ちなみに、JSPをインクルードする際、インクルードされるJSPに
<%@ page pageEncoding="SHIFT-JIS" %>
を指定しないと文字化けする可能性があります。(インクルードする側とされる側両方にContentTypeをしていすると、される側のContentTypeは無効化され、される側の文字コードを判断する手立てがなくなってしまうため)

Eclipseの文字コードの設定は、これから作成するファイルに関しては
「ウィンドウ->設定->一般->ワークスペース」で
「テキスト・ファイル・エンコード」にて指定できます。
ただし、これだとすでに作成したファイルの文字コードは変更されないため、
対象ファイルを右クリックし、「プロパティ->リソース」で変更できます。

>テキストエディタで開くと文字化けしていないのに、何故かEclipseで開くと文字化けし、稀に(きっかけは不明だが)ブラウザ(FireFox)上でも文字化けした状態で表示される。

これ...続きを読む


人気Q&Aランキング