Urizakaです。
さて、さっそく質問です。
JSPの同一フォーム上に「登録」「修正」「削除」のボタンを置き、その押された
ボタンによってサーブレット内での処理が切り替わる(具体的には、違う
SQL文を実行し、違うJSPページをgetRequestDispatcherメソッドで生成
する)ようにしたいのですが、どのようにすればよいのでしょうか?
もちろんそれぞれの処理に対して別々のサーブレットを作り、javaScript
でそれぞれのサーブレットへ飛ぶように制御するという処理も考えたことは
考えたのですが、できれば一つのサーブレットで済ませたいと考えたもので
…宜しくお願いします。

A 回答 (3件)

お恥ずかしい限りです。


前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=MySubmit>
</form>

<script language="JavaScript">
function func(MyCommand){
document.MyForm.MySubmit.value=MyCommand;
document.MyForm.submit();
}
</script>

■Servletでの処理
// リクエストの取得
String MyAction = req.getParameter("MySubmit");

// 処理の実行
if (MyAction.equals("Toroku")){...}
if (MyAction.equals("Shusei")){...}
if (MyAction.equals("Sakujo")){...}



---------------------------------------------------

こんな感じでどうでしょうか。
ちなみにこうやって書いておくと、フォームのボタンからじゃなくても
アンカーをクリックすることで同じ効果が出せそうな……

<a href="JavaScript:func('Toroku')">登録</a>

あ、でもまたボロが出そうなのでこの辺で(^_^;)
    • good
    • 1
この回答へのお礼

urizakaです。

ありがとうございます。
今度はうまくいったようです。

お礼日時:2001/06/13 09:59

あ、すみませんでした!



(誤)
if(document.MyForm.MyClick.value="検索")

(正)
if(document.MyForm.MyClick.value=="検索")

イコールが1つ抜けていましたね……。
でもさっきは動いたような……。
ブラウザのバージョン違いかな??

これで、どうでしょうか。

この回答への補足

urizakaです。
いえ、駄目でした。
やはりhiddenになっているMySubmitにうまく数値が入らないよう
なのですが…
うーん。
ちなみに私の環境はJbuilder4です。

補足日時:2001/06/12 12:15
    • good
    • 0

こんにちわ。



僕の知ってるやりかたでは、フォームのボタン名を
パラメータとしてサーブレットに渡してあげて、
それをサーブレット側で判断して処理を実行させる方法が
あります。
例えば、以下のようになります。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=submit name=MySubmit value=Insert>
<input type=submit name=MySubmit value=Update>
<input type=submit name=MySubmit value=Delete>
</form>

■Servletでの処理
// リクエストの取得
String MyAction = req.getParameter("MySubmit");

// 処理の実行
if (MyAction.equals("Insert")){...}
if (MyAction.equals("Select")){...}
if (MyAction.equals("Delete")){...}

---------------------------------------------------

といったやり方があります。
上にあげたやり方だと、ボタンの名前が英語になります。
日本語で動くかどうかは……ちょっと試してないです。

もし日本語でダメなら、ちょいと面倒だけどこんなやり方もあるかと思います。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=検索 onClick="func();">
....
<input type=hidden name=MySubmit>
</form>

<script language="JavaScript">
function func(){
if(document.MyForm.MyClick.value="検索")
{document.MyForm.MySubmit.value="Search";}
...

document.MyForm.submit();
}
</script>

---------------------------------------------------

後は同様。
この場合、サーブレットに送るパラメータを、実際のコマンド名じゃなくて
コマンドIDとかにして管理しておくと、なおよいかもしれませんね。

以上、参考になれば幸いです。

この回答への補足

Urizakaです。
回答ありがとうございます。
しかしながら、前者はともかく、後者なのですが動きませんでした。
いろいろと試してみたところ、どうやらMySubmitのパラメーターが
Servletへ行っていないようなのですが…
こちらでもいろいろと試して見ますので、すみませんがまた宜しく
お願いします。

補足日時:2001/06/11 22:23
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QJSP、サーブレットの初期処理

最初に、あるページをアクセスした時に、
サーブレットで最初の1回目のアクセス時のみ特定の処理をする。
その結果をJSPに返す という事を行いたい場合、
どのような関数(仕組み)? を利用すれば良いのでしょうか?

また、その場合にあるイベント(ボタン押下等)でも
初期処理の処理を行う と言う事は可能でしょうか?
(関数コールなどで初期処理と同じ箇所に書かれたソースを利用したい)

JSP、サーブレット初心者です。よろしくお願いします。

Aベストアンサー

#1です
技術者向のカテゴリーですが、素人の方ですか?

私が#1で書いた内容は、正直そのままのことじゃなくて、あそこに羅列したような内容は検討すべきかなと思い、そのヒントになればと思い書きました。
> 最初の一回とは、
> あるページにアクセスした最初の1回で
> 「クライアント単位で見た最初の一回」に該当すると思います。

クライアント単位って、じゃあデプロイし直したりサーバーを再起動した場合でも関係ないってこと?
一つのPC(クライアント)でブラウザを2つ開いたときはどうなるの?
一つのPCで、ログインユーザーが替わっても、同じクライアントって扱うの?
一つのPCで、IPが変わった時も同じクライアントって扱うの?

技術者の視点でシステムを見るのであれば、色々なケースやその組み合わせを想定するのが普通だと思います。
色々と面倒くさいことを書いて恐縮ですが、技術者の方であれば仮にJSP/サーブレットが初めてでも、与えられた情報から想像力を働かして、モノを考えたほうが良いかと思います。

まあ、どちらにせよDB(若しくはファイル)を使うのが一番分かりやすそうですね。

#1です
技術者向のカテゴリーですが、素人の方ですか?

私が#1で書いた内容は、正直そのままのことじゃなくて、あそこに羅列したような内容は検討すべきかなと思い、そのヒントになればと思い書きました。
> 最初の一回とは、
> あるページにアクセスした最初の1回で
> 「クライアント単位で見た最初の一回」に該当すると思います。

クライアント単位って、じゃあデプロイし直したりサーバーを再起動した場合でも関係ないってこと?
一つのPC(クライアント)でブラウザを2つ開いたときはどうなるの?
一...続きを読む

Qjsp&サーブレットにてjpgやzip等のファイルを別フォルダにコピー&貼り付けの処理

現在jsp、サーブレット、ビーンにて
画像ファイルやzipファイルなどをアップロードできるサイトを作成していまして、アップロードについては
jakartaのfileuploadで特定のフォルダにアップロードする処理は上手くいったのですが、
アップロードしたファイルを、別のフォルダにコピー&貼り付けさせるような処理を行いたいと思っています。

java.ioについて調べてみると
txtファイルの中身を読み込んだり書き込んだりする
処理しか見つける事ができず、つまずいております。

どなたかjpgやzip等を別フォルダへの
解説をしているサイトをご存知でしたら
教えていただけますでしょうか。
もしくはあのクラスを利用すれば出来る等でも
結構ですので、すみませんがご教授よろしくお願いします

Aベストアンサー

InputStream,OutputStreamを使えばバイナリ処理(1バイト単位での読み書き)ができます。

そのままでは効率が悪いので、これにバッファーを付ける意味で、BufferedInputStreamなどを一緒に使います。

Qサーブレット-サーブレットの通信で文字列を送りたいのですが

サーブレット間の通信で文字列(String)を送りたいのですが
うまく受け取れません。
URLEncoder.encodeをつかって変換して送り、
URLDecoder.decodeで受けとってます。お願いします。

Aベストアンサー

具体的に、どうなってしまうのかが分からないと、答え様がないですね。

(1)最初の文字列
(2)URLEncoder.encodeの結果
(3)URLDecoder.decodeの結果
が提示されていると、有力なヒントになるはず。差し支えなければご提示を。

QサーブレットとJSP

まだJAVAを始めたばかりなのですが急にサーブレットを
やることになりました。
昨日慌てて本を買ったのですが・・・全然わからなくて。
基本中の基本として恥ずかしいのですが。
サーブレットとJSPの違いはどういうふうに違うのですか?
教えていただければ嬉しいです。
あと初心者にオススメの書籍などありましたら教えていただければと思ってます。

Aベストアンサー

サーブレットは Java で書く CGI だと思っていれば良いです。ただ、呼出され
方が決っており、CGI よりもちょっと良いことが幾つかあります。

JSP は、Microsoft の ASP や PHP に近く、html で記述されているページに
Java のコードが書けるようなものだ、と考えて下さい。

JavaScript と似たような感じですが、

・JavaScript は、Java と似たような文法なだけで Java ではない、のに対し
 JSP は、本物の Java である

・JavaScript は、ブラウザの中で動作する、の対し JSP は、サーバ側で
 動作する

のが大きく違います。

サーブレットと JSP は、サーバ側で動作する Java で記述された仕組みである
ということだけが似ていて、ソースを見た感じは全然違います。


ここで書くと混乱するかもしれませんが、JSP が実際動作するときには、
自動的にコンパイルされ、サーブレットとして動作します。なので、できること
(例えば、セッションを持っている、とか)は、とても似ていたりします。

サーブレットは Java で書く CGI だと思っていれば良いです。ただ、呼出され
方が決っており、CGI よりもちょっと良いことが幾つかあります。

JSP は、Microsoft の ASP や PHP に近く、html で記述されているページに
Java のコードが書けるようなものだ、と考えて下さい。

JavaScript と似たような感じですが、

・JavaScript は、Java と似たような文法なだけで Java ではない、のに対し
 JSP は、本物の Java である

・JavaScript は、ブラウザの中で動作する、の対し JSP は、サーバ側で
 ...続きを読む

QJSPとサーブレット

JAVAを勉強している初心者です。
JSPとサーブレットの違いはなんなのでしょうか?もし違いが
あるとしたら、JSPとサーブレットのそれぞれの長所と短所を
教えていただけるとありがたいです。

Aベストアンサー

簡単に説明します。
■サーブレット > サーバーサイドで動くJava。主にブラウザでそのアクセスし、リクエスト結果をHTMLで表示することができるもの。
■JSP > サーブレットによるHTML表示を簡単に表示できるようにしたもの。Javaの記述よりもHTML記述にJavaを埋め込む、といったイメージ。内部では一回目のアクセスでコンパイルされ、サーブレットに変換している。

長所と短所というよりも、役割により使い分けされていると考えたほうがいいかもしれません。
現在のWebプログラミングではMVCモデルと言われる考え方が一般的です。
M・・・モデルと言われる。ビジネスロジック(固有の処理)を定義する部分。
V・・・ビューと言われる。画面(HTML)そのものを指す。
C・・・コントロールと言われる。ユーザーからのリクエストを受け取り、それにより上記MとVの関係を(処理を行い、画面を表示する)コントロールする。

そしてJSPはV、サーブレットはCを担うことになります。
■リクエストを受け取る → リクエスト内容により処理をおこなう。(M)→ 処理結果をJSPにて表示する。(V)
上記の一連の流れをサーブレットがコントロール(C)し、JSPは最後の画面表示の部分を行うことになります。

JSPは基本はHTMLで作成されるのでデザイナーとJavaプログラマーとの分業が可能になります(完全に分業がなされるわけではないですが)。
通常、サーブレットで画面表示を行うようにすると、画面デザインの確認が面倒になります。しかし、JSPでは簡単に行えます。
また、分けることによってサーブレットへのコーディング量が減り、ソースも見やすく、また、問題が発生したときどこに問題があるかというデバッグにも役立つことになります。

簡単に説明します。
■サーブレット > サーバーサイドで動くJava。主にブラウザでそのアクセスし、リクエスト結果をHTMLで表示することができるもの。
■JSP > サーブレットによるHTML表示を簡単に表示できるようにしたもの。Javaの記述よりもHTML記述にJavaを埋め込む、といったイメージ。内部では一回目のアクセスでコンパイルされ、サーブレットに変換している。

長所と短所というよりも、役割により使い分けされていると考えたほうがいいかもしれません。
現在のWebプログラミングではMVCモデルと言われる...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報