お世話になります。
strutsを使用しlogin画面を作成し、エラーならエラーメッセージを表示させ、成功なら次のページに遷移するようにしたいのですが、
その際のstruts-config.xmlの設定がわかりません。
login画面を以下のように設定(login.jsp)
<%@ page language="java" contentType="text/html; charset=windows-31j"
pageEncoding="windows-31j"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<html:html>
<head>
<title>ログイン画面</title>
</head>
<body>
<html:errors/>
<html:form action="/login" method="post">
ユーザID : <html:text property="id"/><br>
パスワード: <html:password property="password"/><br>
<html:submit value="ログイン"/>
</html:form>
</body>
</html:html>
</html>
struts-config.xml
<form-beans>
<!-- sample form bean descriptor for an ActionForm
<form-bean
name="LoginForm" //jspのform actionで渡すデータ
type="org.apache.struts.validator.DynaValidatorForm"/>
end sample -->
<!-- sample form bean descriptor for a DynaActionForm
<form-property
name="userid" //jsp画面のproperty指定時に渡す
type="java.lang.String"/>
<form-property
name="password" //passwordのとき
type="java.lang.String"/>
</form-bean>
end sample -->
</form-beans>
//actionで渡すデータの定義1
<action
path="/Login" //actionで渡すデータ
type="org.apache.struts.actions.LoginAction"
parameter="/pages/Input.jsp"/>
//actionで渡すデータの定義2
<action
path="/InputSubmit"
type="app.InputAction"
name="inputForm"
scope="request"
validate="true"
input="/pages/Input.jsp"/>
//actionで渡す定義3
<action
path="/edit*"
type="app.Edit{1}Action"
name="inputForm"
scope="request"
validate="true"
input="/pages/Edit{1}.jsp"/>
end samples -->
</action-mappings>
の箇所を変更するのはわかるのですが、どう変更したらいいかがわかりません。
ログイン成功時画面(loginSuccess.jsp)
<%@ page language="java" contentType="text/html; charset=windows-31j"
pageEncoding="windows-31j"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
LoginSuccess!!
<html:form action="/nextpage" method="post">
<html:submit value="次のページ"/>
</html:form>
</html>
と設定してます。
javaクラスの設定も関係あるのですが、今回は省略してます
。今回したいのはlogin.jsp画面を表示させたいのですが、
その際以下のエラーがでます。
org.apache.jasper.JasperException: An exception occurred processing JSP page /pages/login.jsp at line 19
16: </head>
17: <body>
18: <html:errors/>
19: <html:form action="/login" method="post">
20: ユーザID : <html:text property="id"/><br>
21: パスワード: <html:password property="password"/><br>
22: <html:submit value="ログイン"/>
よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ケアレスミスだと思いますが
type="hoge/hoge.LoginAction"
ここの書き方がおかしいです。
あと、
dynamic="LoginForm"
form-beanのdynamic属性はtrue以外の値を入れる例がありましたか?
エラーメッセージからどのような原因を類推するかは参考URLを見て自己学習してください。
参考URL:http://grape.sapid.org/tutorial/lec1.html
この回答への補足
回答ありがとうございます。
お教えいただいたURL参考にさせていただきました。
それでですが、実際に作成時以下のようなエラーが出たのですがこの原因はstruts-config.xmlの中で
<action-mapping>
<action
path="login"/
type="/" ここの記述に問題があり先に進めない
~~~~~~~~/>
</action-mapping>
<form-beanns>
<form-bean
path=""
type="/" ここの記述に問題があり先に進めない
~~~~~~~~~~~~~/>
</form-beans>
内で定義されている箇所にデータがないということなのでしょうか?
エラーメッセージ:
org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: ActionMappingsまたはActionFormBeansコレクションが見つかりません
以上よろしくお願いします。
遅くなり申し訳ありません。
あのあと、いろいろ試したところ無事問題は解決しました。
理由はわからないのですが。
回答ありがとうございました。
また、質問することがあるのでその時はよろしくお願いします。
ありがとうございました。
No.1
- 回答日時:
struts-configでは "/Login"
jspでは "/login"
となっていますが、アクションパスは大文字小文字区別されます。
そこが原因ではないでしょうか。
この回答への補足
回答ありがとうございます。
ご指摘のように直したところ以下のエラーが出ました。
org.apache.jasper.JasperException: An exception occurred processing JSP page /pages/login.jsp at line 16
13: </head>
14: <body>
15: <html:errors/>
16: <html:form action="/login" method="post">
17: ユーザID : <html:text property="id"></html:text><br>
18: パスワード: <html:password property="password"></html:password><br>
19: <html:submit value="ログイン"></html:submit>
原因
javax.servlet.ServletException: javax.servlet.jsp.JspException: アクション /login のフォームbean null に対する定義が見つかりません
このとき直した箇所として
struts-config.xmlの
form-bean内のform-propertyの前に以下を付け足し
<form-bean
dynamic="LoginForm"
name="loginForm"type="org.apache.struts.action.DynaActionForm">
<form-property name="id" type="java.lang.String"/>
<form-property name="password"
type="java.lang.String"/>
</form-bean>
action-mappingは以下を設定
<action-mappings>
<!-- Default "Welcome" action -->
<!-- Forwards to Welcome.jsp -->
<action path="/login"
name="loginForm"
type="hoge/hoge.LoginAction"
input="/pages/login.jsp" validate="true">
<forward name="success" path="/pages/loginsuccess.jsp" />
<forward name="error" path="/pages/loginerror.jsp" />
</action>
- sample input and input submit actions
<action
path="/login"
type="org.apache.struts.actions.LoginAction"
parameter="/pages/Input.jsp"/>
LoginAction.javaには以下のソースを定義
package hoge;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
public class LoginAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
//DynaFormからメッセージを取得
DynaActionForm df = (DynaActionForm)form;
String id = (String)df.get("id");
String password = (String)df.get("password");
System.out.println("id=" + id + " password=" + password);
//IDが"foo"、Passwordが"bar"の場合認証成功
if(id.equals("foo") && password.equals("bar")){
// セッションを開始します
HttpSession session = request.getSession(true);
// セッションに情報を設定します
session.setAttribute("id" , id);
return mapping.findForward("success");
}else{
return mapping.findForward("error");
}
}
}
validate.xmlには以下を設定
<formset>
<!-- ログイン画面(loginForm)のvalidation -->
<form name="loginForm">
<!-- loginForm.id -->
<field property="id" depends="required,maxlength">
<arg0 key="ユーザID" resource="false" />
<arg1 name="maxlength" key="${var:maxlength}" resource="false" />
<var>
<var-name>maxlength</var-name>
<var-value>16</var-value>
</var>
</field>
<!-- loginForm.password -->
<field property="password" depends="required,maxlength">
<arg0 key="パスワード" resource="false" />
<arg1 name="maxlength" key="${var:maxlength}" resource="false" />
<var>
<var-name>maxlength</var-name>
<var-value>8</var-value>
</var>
</field>
</form>
</formset>
を設定してます。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php ログイン 1 2022/11/01 00:24
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】NEW演歌
【大喜利】 若い人に向けたことは分かるけど、それはちょっと寄せ過ぎて変になってないか?と思った演歌の歌詞
-
秘密基地、どこに作った?
小さい頃、1度は誰もが作ったであろう秘密基地。 大人の今だからこそ言える、あなたの秘密基地の場所を教えてください!
-
遅刻の「言い訳」選手権
よく遅刻してしまうんです…… 「電車が遅延してしまい遅れました」 「歯医者さんが長引いて、、、」 「病院が混んでいて」 などなどみなさんがこれまで使ってきた遅刻の言い訳がたくさんあるのではないでしょうか?
-
プリン+醤油=ウニみたいな組み合わせメニューを教えて!
プリンと醤油を一緒に食べると「ウニ」の味がする! というような意外な組み合わせから、新しい味になる食べ物って色々ありますよね。 あなたがこれまでに試した「組み合わせメニュー」を教えてください。
-
【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
【お題】 ・このサンタクロースは偽物だと気付いた理由とは?
-
Java Struts ~に対するゲッターメソッドがありません
Java
-
javaのstrutsを使った画面遷移で戻るボタンを押した時、値を残すには
Java
-
Strutsの情報保持の仕方について
Java
-
-
4
正しいURL指定しているにもかかわらずJSPファイルにアクセスできず「404エラー」が発生
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「<c:forEach タグが終了し...
-
リクエストに応じたselectedの...
-
ラジオボタンの選択肢をサーブ...
-
strutsを使用したjspでjavascri...
-
Strutsで、どのRadioボタンが選...
-
struts-config.xmlの設定
-
jspでjavascript関数へ引数を渡...
-
フォームで同じ複数のnameで違...
-
JSPでテキストボックスのループ...
-
formでテキストとファイルタイ...
-
フォーム上で押されたボタンに...
-
JSPで複数テーブルのSQL実行後...
-
ボタンが活性化の場合とは、ボ...
-
グローバルIPアドレスの変更タ...
-
三菱GOTの画面切り替えについて
-
指定地点(緯度・経度)から指定...
-
Javaプログラミングの質問にな...
-
C言語で今まで表示していた画面...
-
フォルダ改行
-
EXCEL VBAで、EXCELの入力規則...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
リクエストに応じたselectedの...
-
フォーム上で押されたボタンに...
-
「<c:forEach タグが終了し...
-
フォームで同じ複数のnameで違...
-
int型の内容をbyteの配列にコピー
-
JSPでのリストボックス表示
-
jspでjavascript関数へ引数を渡...
-
strutsを使用したjspでjavascri...
-
JSPでのサブミット判定
-
ラジオボタンの選択肢をサーブ...
-
struts-config.xmlの設定
-
Strutsで、どのRadioボタンが選...
-
StrutsでPOSTのデータ(リクエ...
-
EL式 true falseを表示
-
jspファイルで注文フォームの合...
-
JSFでJavaScriptを使用するには?
-
JSP+Servletで終了ボタン
-
javaでDBから取得したデータのJ...
-
click frameworkについて
-
HashMapで、valueにマッピング...
おすすめ情報