Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

POSTでデータをもらっているはずが・・・

はじめまして、すいません質問したいのですが。
今、JSPとMySQLで登録内容の検索・削除・更新・追加ができるシステムをつくっているのです。
削除のページで、たとえば、NOを入力すれば、データベースにアクセスをしまして、その結果(1件のみ)が出力されまして(確認ページみたいなものです)、削除ボタンを押すと実際にDELETEをしてくれるようなものを作っています。

で、InputページでNOを入力しまして、フォームでpostでサーバーに値を上げてから、Infページでその結果を受けてデータベースで結果はでるんですが、
その次に削除ボタンを押しまして、実際に削除をするSQLページには、NOの値が、nullになってしまうんです。
Infページからは、onClickでハイパーリンクで飛んでいるだけなんですが・・・

フォームから、複数のJSPページに値を飛ばす、もしくは、貰い受けるころは、できないのでしょうか??
教えていただければうれしいです

8

回答

79432

閲覧

8件の回答

評価

0

ちょっと、文章から遷移がつかめません。

inputページ Noを入力
↓フォームでpost
infページ
↓削除ボタンでフォームをpost
SQLページ

ということでしょうか?

フォームで送信する値は、そのときのrequestでだけ、有効です。
SQLページでNoを受け取るためには、なんらかの方法でinfページで受け取ったNoを、保持する必要があります。
なにかそのようなことは、やっていますか?

評価

0

あ、削除ボタンはフォームでなくて、Aタグですか。
いずれにしても、なんらかの方法で保持しておかない限りは、この遷移のリクエストにNoは含まれません。

評価

0

すみません、何かわかりにくい文章になってしまいました。
と言うことは、JSPから、サーブレットい値を渡し、サーブレットから、もらいなおす様に、組みなおさないといけないってことですか??

評価

0

いきなりサーブレットが出てきましたね…。
JSP自体、サーブレットの一形態です。

フォームやリンクが、JSPとは無関係なもの(クライアントでの動作)ということは、理解しているでしょうか。
「JSPからサーブレットに」値を渡すことはできないし、ありえません。

・リンクによる遷移に、Noが含まれるようにする。このためには、クライアントに来た時点でNoが認識される形になっている必要がある。
・infページでどこかにNoを格納しておき、SQLページで取り出す。

のどちらかになります。
前者ではhiddenが、後者ではセッションが使われることが多いです。

評価

0

>Infページからは、onClickでハイパーリンクで飛んでいるだけなんですが・・・

FORMを作ってあってJavaScriptでsumbitしている。
ということですよね?

>実際に削除をするSQLページ

というのが、サーブレットとか言っているところだったりするんでしょうか・・。

>NOの値が、nullになってしまうんです。

"Infページ"と言っているところのFORMの中でNOの値を渡すようにしていなかった・・なんて単純な話とかではないんですよね?
(方法はmioさんがhiddenと言われているもの)

mioさんの言われているセッションを使うなら、最初の設定の後は、表示と遷移だけ気にしているので済むのでしょうけど・・(クライアント側に見える部分では)

>フォームから、複数のJSPページに値を飛ばす

これはまた別の話なのか・・?(フォームから一度に複数のJSPを・・ということとか)

Input,Inf,SQLページと呼んでいる一連の遷移のことを言っているのですよね?


>JSPから、サーブレットい値を渡し

は、Inputページからでやれている筈と思うので

>サーブレットから、もらいなおす様に、組みなおさないといけない

は、Infページを出すとき(JSP)にhiddenなりでFORMに含めておいてやるとか(或いはセッションを使うとか)して、その先に渡せるようにしてやる必要がありますね。
それがないから、Infページの先でnullになっているんでしょう。

なんか、元の文章を引用してそれに合わせた所為もあるのか、解り難い感じの説明になってしまったような気もしたりですけど・・。

評価

0

すみません、ますますわかり難い文章になってしまいました・・・すみません。

削除確認ページで、

request.setCharacterEncoding("Shift_JIS");
String NO = request.getParameter("NO");

でNOをもらって、DBに接続をして、テーブルを表示し、隠しフィールドで、値を次のページに送信しようとおもっているんですが、
<input type="hidden" name="NO" value="NO">
↑この記述だと、”NOの文字列”がそのまま飛んでいくだけで、変数としてを送って上げることは、できないのでしょうか??

評価

0

いや…それはJSPの基本ですよ…。

http://www.javaroad.jp/servletjsp/sj_jsp1.htm

評価

0

mioさんありがとうございます。。
おはずかしい・・・そのまま文字列を送っておりました・・・
<%で区切ってあげないと、意味ないですね・・・ %>

また、何かわからないことが、あれば、お願いします

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。