■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■
JAVAサーブレットQ&A
1 名前: 厨房 投稿日: 2000/10/23(月) 00:42
日本語の参考書のまったく出てないサーブレット。
それに関するQ&A




2 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/23(月) 00:51
>> 1
ttp://www.t3.rim.or.jp/~yoko-k-h/java/servlet/reference.html#Books
を挙げておく。最近だともっと増えているね。




3 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/23(月) 01:04
掲示板程度でもサーブレットで組んだら何か良いことありますか?



4 名前: >3 投稿日: 2000/10/23(月) 01:30
掲示板程度なら生産性とかあんまり関係ないのでPHPの方が軽い分だけ適しているでしょう。



5 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/23(月) 01:35
SevletよりJNIの方が参考書は少ない。
実用性はJNIの方が高いと思うんだけど。


6 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/23(月) 05:43
JNIはただのインターフェースなので、ソース見てすぐに使えるけれど、
サーブレットは色々と細かいTipsがありそう。性能とか。



7 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/23(月) 17:31
とりあえず数冊出てるので間違い。>>1


8 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/23(月) 20:08
JavaServletっていまいちよくわかんないんですけど、
簡潔に説明して下さいませんか


9 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/23(月) 23:22
8>サーバーサイドジャバだよん




10 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/23(月) 23:26
XMLの本はスゴイ勢いで増えてのに・・・
なぜサーヴレット本はすくないの?
東鳩サーブレット ぽっぽっぽ


11 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/23(月) 23:29
ServletはCGIのようなシステムの代替案でしかない。

XMLはテキストデータフォーマットの標準化共通化の
最右翼。これがディファクトスタンダードになれば
どんだけのコストを削れるか。。。


12 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/23(月) 23:33
EJBとサーブレットっていまいち違いがわからない

EJB=便利な部品
サーブレット=プログラム

って感じ?
両方勉強するひつようあり?


13 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/24(火) 00:39
11>
今まで彼女がいなかった奴がはじめて女ができた
ずっともてもての奴が今の彼女に飽きて違う女にしてみた

みたいな〜


14 名前: 厨房 投稿日: 2000/10/24(火) 00:52
サーブレット初心者でもわかりやすい解説のあるHPありますか?
http://home.catv.ne.jp/dd/chiba/ken/Java/JavaMain.html



15 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/24(火) 01:01
>7はコテコテの理系っぽい.


16 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/24(火) 01:16
つーか厨房がサーブレットで何やるんだよ?


17 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/24(火) 12:45
XMLを動的に生成する場合だとServletの人気が高いですよね。
なぜなんだろ?


18 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/24(火) 12:49
自分が勉強しないことを棚に上げて資料が少ない
とほざいてる?


19 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/24(火) 13:01
Servletってのは CGIみたなもの。
特徴としては Perlの様に毎回起動されないので
・そのぶんのレスポンスが速い
・ServletEngine内である程度の永続性があるのでセッション管理が楽ちん
・Perlみたいな便利な正規表現は(標準では)無い
・Perlみたいなヒアドキュメントも無い(Printの嵐)
・Javaがネットワークに強いので負荷分散とかが楽チン

Printの嵐がやだってんで Bean+JSPってことが多いと思います。

EJBってのは Beanの一種
J2EEに準拠したコンテナで管理されます。
一般にはDBと連携してることが多いです。


20 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/24(火) 13:03
んで Servlet自体はインタフェースなんで使い方っていっても
本を書くまでも無いことなんだと思います.
ServletEngineまわりのKnowHowのほうは必要あるかも。

引数がどうやってわたってきて どうすれば出力できるかって
ところだけ理解しちゃえば あとは普通のプログラムです。
Java特有の機能をつかっていろいろするのは また別の本を
読むのがいいでしょう


21 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/24(火) 20:51
>>18
同感。
少なくともJavaでコード書いたことあるやつなら
そのへんのHPでServletの簡単なプログラムの作り方
ぐらいは理解できる。そうすれば、次は排他制御とか
インターフェースの切り分け方とか具体的な疑問が
出てくる。じゃぁそういうこと書いた本はありませんか
という質問に最低なるもんなんだが...
もしかするとJavaすらやったことないのかも。だったら
まずServletよりも前の段階で学ぶことはいっぱいある。



22 名前: >21 投稿日: 2000/10/24(火) 22:28
排他制御とか インターフェースの切り分け方とか書いた本はありませんか



23 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/24(火) 22:33
排他制御とインターフェースの切り分けってなんですか?

DBとかの排他制御みたいな感じ?


24 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/24(火) 22:51
htmlを生成するとき

pw.println("<html>");
pw.println("<head>");
<以下略>
ってやるのと

a += "<html>";
a += "<head>";
<中略>
pw.println( a );

ってやるのって違いはでる?
面倒なので後者でやる場合が多いけど
(JSPを使えばいんだろけど)



25 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/24(火) 23:26
誰か、MSのCOM+と比較してほしい。


26 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/24(火) 23:58
>24

1.
+するたびに、それまでのaのStringオブジェクトが持ってる文字列に
足しこまれた文字列を連結した新しいStringクラスを、内部でnewしてる。
よって、メモリ食ってるかも。(このご時世に文字列のメモリ消費なんて
カスのようなもんだろうけど)

2.printlnは行末に改行文字挿入して出力してる。


27 名前: 21 投稿日: 2000/10/25(水) 01:04
>>22
ん、誤解されたかな。servlet勉強していくとそういう疑問が
でてもいいかなと言う意味で別に排他制御がservlet特有のトピックス
であるというつもりはないよ。ただ、インスタンスが一つ作られて
init()が実行されて、あとは複数のコネクションに対してメソッドが
呼ばれるということは理解しておく必要がある。ここまでは
servletの本なら絶対書いてあるし、あとは、別に普通の
プログラムでのスレッドセーフな話と同じだから一般のJavaの本
でいいよね。面倒ならjavax.servlet.SingleThreadModel
を使うって手もあるけど。
排他共有する情報をDBに任せるのなら、
DBを呼び出すオーバーヘッドがでかくなるから
コネクションプーリングとか。
で、うちにあるこの辺に触れた本だと、
「XMLとJavaによるWebアプリケーション開発」
とか
「Javaサーブレットパーフェクトガイド」
かな。
インターフェースの切り分けつーと、MVCモデルで
JSPとの連携とかそのへんの最近の話題は一般書籍
では見たことないから、雑誌中心になるね。旧来の
やり方だとCGIとかとさほどかわらんから、その応用。

もし聞かれたらこんな感じで答えるけど、満足?? >> 22



28 名前: 21 投稿日: 2000/10/25(水) 01:47
そいや、クライアントから渡された文字列がgetParameter*()で文字化けとかも実際にやっていれば出そうな疑問だけどこういう実装依存なとこがある話は書籍だとつらいですか。かえってMLとかのアーカイブ検索したほうがいいかもね。



29 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/25(水) 04:04
>> 24
後者は以下のコードと同じ.

a = new StringBuffer(a).append("<html>").toString();
a = new StringBuffer(a).append("<head>").toString();

なんのことかわからなかったらまず String の API Document を読め.



30 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/25(水) 11:38
multipart/form-data もサポートされてないね


31 名前: 22 投稿日: 2000/10/25(水) 12:31
満足っす


32 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/25(水) 21:06
26>29>
満足っす

まずはJAVAからっすね。
サーブレット書きながら、
いきつもどりつ勉強しとります。


33 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/29(日) 12:06
cookieのことなんですが、IE5.5とJSQDK-1.0.1を使ってます。
cookieをブラウザに送って、ブラウザからクッキーを受け取ることは
できるのですが、そのcookieがどこにできたのかなぞです。

c:\windows\cookies
にできるのかと思ってもないし???




34 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/01(水) 05:35
インターネットキャッシュの中にないか?


35 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/01(水) 19:43
ないんですよ〜

すごいなぞ

response.addCookie(cookie);
でつくったクッキーを
request.getCookies();
して、ブラウザに表示できるんだけど???




36 名前: >33 投稿日: 2000/11/01(水) 22:47
クッキーが実際にファイルに書き込まれるのは、
ブラウザを閉じたとき。



37 名前: >28 投稿日: 2000/11/01(水) 22:55
MVCの切り分け、悩みます。切り分けとはいえ、MVCそれぞれ
の結合度が強く、例のアーキテクチャパターンの本に書いて
あるデメリットをまともにくらいました。

各画面遷移毎(極端なはなし、フォームの送信ボタンごと)に
サーブレットをつくっていると、いくつあってもきりがないし
かといってまとめてしまうと、害虫に出すとき仕様を説明する
のがめんどくさい。



38 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/02(木) 23:29
36>

ありがとうございます!


39 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/03(金) 00:12
VisualAge3.5についてるWTEって
サーブレットチェーンできんのかあああ!?


40 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/03(金) 08:29
素直にWebsphereそのものを入れちゃいえばいいのに。
開発者ならタダだよね。



41 名前: >40 投稿日: 2000/11/04(土) 00:24
39には同感。
40の言うことは正論なんだけど。
WSS+VAJ+WAS+DB2をまともに動かすには512MBくらいメモリ必要でしょ。
うちはビンボーだし。マシン買うには上の上の上まで説得しないと
稟議通らないし。




42 名前: 39 投稿日: 2000/11/04(土) 00:29
業務でもWebsphere使ってません。
っていうか今はJavaの仕事してません。

仕方ないので、JavaWebServer落として来ました。


43 名前: 40 投稿日: 2000/11/04(土) 01:57
>>41
>うちはビンボーだし。
あらら、それは失礼。



44 名前: ???????????????B 投稿日: 2000/11/05(日) 19:41
VAJの無料バージョンにもサーブレットのテスト環境みたいのあるの?
J2EE対応でタダのRAD ないか


45 名前: 5流SE 投稿日: 2000/11/05(日) 21:31
>例のアーキテクチャパターンの本
ってどの本でしょうか?
サープレット/JSPを使ったシステムのいい見本
って有りませんか?どうも、自分の設計に自信が
もてないんですが。


46 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/08(水) 19:15
charset=iso-2022-jp
にしてもネットスケープで文字化けします

以下の過程で使用すべき文字コードってなんでしょうか?
1 コードを書く
2 HTMLを生成する
3 ネットスケープでHTMLを受け取る

コードを書くときは文字コードをUNICODEとかで書かないと行けないのでしょうか?

いろいろ試して頭が混乱してしまいました



47 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/09(木) 08:48
>以下の過程で使用すべき文字コードってなんでしょうか?
>1 コードを書く

servletに限らず、javacがコンパイルするコードのエンコーディングは
固定だから無関係。ちなみに変更するときには -encoding オプション

>2 HTMLを生成する
>3 ネットスケープでHTMLを受け取る

この二つが問題。

>charset=iso-2022-jp
>にしてもネットスケープで文字化けします

というけど、2と3のどちらの段階でcharsetを指定しているの?
具体的には2だと<meta>タグ中での指定。3だとHTTPレスポンス
ヘッダ中のcontent-type:で指定。
ここで重要なのはnetscapeは2よりも3を優先させるということ。
getWriter()で得たストリームに出力するときにcontent-type:を
指定していると思うからそこでcharsetの指定をしてみよう。



48 名前: 47 投稿日: 2000/11/09(木) 08:59
付け加えるけど、2と3のどちらかでcontent-typeのcharsetを指定していない場合は、
デフォルトでus-asciiが指定されたと規格上は見なされるから、二つの間で矛盾が生じる。
ただhttp転送においてレスポンスヘッダ中のcontent-type:ヘッダは必須だから、ここ(3)での
charsetの指定も必須となる。だから、2のMETAタグ中でcontent-typeの指定は,やらないほうが
無難ね。<META>タグ中での指定が必須となるのは、ユーザがブラウザの保存機能で
htmlデータをローカルに保存することが想定される場合。この場合は、メタ情報がなくなる
から、htmlデータ中にメタ情報を置く必要がある。



49 名前: 47 投稿日: 2000/11/09(木) 09:02
文章わかりにくいなぁ。反省。
>デフォルトでus-asciiが指定されたと規格上は見なされるから、二つの間で矛盾が生じる。
(2と3のうちcharsetを指定していない側のcharsetは)デフォルトで〜〜、二つの間で矛盾が生じる。
ね。



50 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/09(木) 19:26
ありがとうございます!

1 ソースを書く文字コードは何を使ってもOK。
コンパイルするとUNICODEに変換される

ということですよね??


2ー3
コードはこんな感じでした。
と言うことは、METAタグも追加して、
そこでも文字コードを指定してあげるベきなのですね

ちなにみサーブレットで出力させるべき文字コードは
やっぱりUNICODEなのでしょうか??
ブラウザで日本語の自動判別があるから、SJISかEUCに
すべき??

だいぶ頭のなかがすっきりして来たので、
もっと調べてみようと思います

private void createForm(String guestname, HttpServletRequest requuest,
HttpServletResponse response)
throws IOException{
response.setContentType("text/html; charset=UTF-8");
PrintWriter pw = response.getWriter();

pw.println("<html><head>");


51 名前: 47 投稿日: 2000/11/09(木) 22:50
>1 ソースを書く文字コードは何を使ってもOK。
基本的にはプラットホーム依存だけど、-encodingオプションで
明示的に指定してあげる限り、なに使ってもOK。それ以上は
あなたの環境がわからないので答えられません。

>と言うことは、METAタグも追加して、
>そこでも文字コードを指定してあげるベきなのですね
いや、できるだけMETAタグの使用は避けた方が
無難。やってもいいけどやるなら正確に。

コードは示された部分だけでは問題なさそうなので、
>pw.println("<html><head>");
の部分を
pw.println("<html><head>あああ");
みたいな感じに日本語入れて、Netscapeではなくて、
telnetで直接80番ポート叩いて生の出力を確認するのが
おすすめ。あ、あと一つ確認するけど、この後のコード
で日本語を含むstringオブジェクトを変な感じにエンコーディング
の変換してpwに突っ込んでいるとかそういうことないよね。
たまーにgetByte()とか使ってバイト列に戻すとか妙な
ことやっている人いるんで。



52 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/09(木) 23:33
こーどの後ろはpw.printlnでHTMLを書いて終ってるので、
怪しいことはしてないと思います。
(getByte()とかはいれてないです)




53 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/09(木) 23:38
>基本的にはプラットホーム依存だけど、-encodingオプションで
> 明示的に指定してあげる限り、なに使ってもOK

エディターで書かれたコード

コンパイル時にコードを使用しているコードを明示指定

unicodeに変換される

ですよね

ここ最近文字コードで悩みっぱなしで、
なかなか先に勧めないので、
横着してブラウザも、エディタもunicodeにしちゃってます

とりあえずエディタで使用する文字コードの謎はとけました
ありがとうございます


54 名前: JRun3.0 投稿日: 2000/11/10(金) 03:20
Apacheを1.3.6から1.3.14へバージョンアップしたのと同時に
JRunも2.3から3.0へとバージョンアップしました。
ところが、これベンダーが代わったらしく
管理ツールが大幅に変更になってしまいました。
おかげで、サーブレットのクラスファイルを何処においていいのやら
さっぱりわかりません。
ドキュメントを探しても2.3のばかりです。
3.0の有用なドキュメント等ご存知でしたら教えてください。


55 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/11(土) 21:26
>54
adminServerを立ち上げるとチュートリあるがでてくるから、
そのとおりにやってみては?
日本の資料は確かにふるいんで訳に立たなくて苦労した想い出がありました


56 名前: 6流SE 投稿日: 2000/11/12(日) 19:14
>45
>>例のアーキテクチャパターンの本
>ってどの本でしょうか?

"Pattern oriented software architecture -- A system of patterns"
個人的に、GoFのDesign Pattern よりもわかりやすく面白いと
思ってます。



57 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/13(月) 01:59
ていうか、JAVAってSUNに超大金払うか、パートナーにならないと
サポートしてくれないんだろ?ってことは所詮お遊び言語としてしか
使えないような気がするんだが・・・・・
JSPでシステム構築しても、結局は信頼性がおけない。
そんなんだったらASPでコード書いた方がマシってスレ違いですか?
すいません。


58 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/13(月) 03:40
>57
今ごろ何言ってんの
使ったこと無いくせに


59 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/14(火) 20:40
あの〜JRUN3.0のdefaultServerがどうも不安定です。
restartをかけて、ブラウザからアクセスすると、
「このサイトは大変混雑うんぬん」と言われてはじかれます。
ポートを8100から8010とかにかえてみたりしたのですが、
どうもつながったりつながらなかったりです。

インストールしてあるのはローカルのPCでアクセスするのも
ローカルのPCです
adminサーバは順調につながります

同じような現象が起きたかたいらっしゃいますか?


60 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/15(水) 06:40
tomcat使ったら?


61 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/15(水) 18:50
EJBも使いたいのです




62 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/16(木) 01:43
ASPに戻ったら?


63 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/16(木) 16:52
.aspならスレ違い


64 名前: はとサーブレット 投稿日: 2000/11/17(金) 10:18
JRunってJ2EEのペットショップみたいなサンプルついてないのですか?


65 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/17(金) 18:27
なんかPDFの詳細なマニュアルにJ2EEの解説も詳しく書いてあった
>JRUN

EJBのセッション管理とかってSERVLETより楽そうなんだけど、
やっぱりどっちも勉強すべき?
EJBをメインで足りない所をServletで補うスタイルで
勉強すべきかなぁ


66 名前: はとサーブレット 投稿日: 2000/11/17(金) 18:36
>65
C:\Program Files\Allaire\JRun\docs\pdfのマニュアルですか?
英語やないですか。


67 名前: NTTGM 投稿日: 2000/11/17(金) 19:24
http://www8.tok2.com/home/NttWkk/



68 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/17(金) 20:43
66>
/opt/jrun/docsのなかのPDFです

ServerSideJava勉強するなら英語は覚悟しましょうよ

だって日本語の情報少ないじゃん〜

とか言いつつ日本語でEJBの解説ページないかな〜
って聞いてみたりして


69 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/17(金) 20:45
会社のIIS3.0にこっそりJRUNとかTOMCATをくっつけてみたいのですが、
あとで簡単に戻せますか?

JRUNのマニュアルを詠んだられIISの設定を書き換えちゃうようなことが
かいてあったんでちょっと恐いです


70 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/17(金) 20:58
>69
こっそりとではなく責任をとるつもりでやれ。


71 名前: えっ! 投稿日: 2000/11/18(土) 01:11
>>47
もしかして、

String A = request.getParameter("a");
A = new String(A.getBytes("8859_1","JIS_AutoDitect");

とかやるのって最低っすか?
よくやっちゃうんですけど。



72 名前: あぅ。 投稿日: 2000/11/18(土) 01:15
>>71
しまった。間違った。

A = new String(A.getBytes("8859_1","JIS_AutoDitect");
>A = new String(A.getBytes("8859_1","JIS_AutoDitect"));
だ。右括弧1こ足んなかった。


73 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/18(土) 03:01
47のはソースで使うの文字コードで
これはpostされる文字なんでいいんでないの?
自分で決められないし。


74 名前: 47 投稿日: 2000/11/18(土) 16:08
>47のはソースで使うの文字コードで
>これはpostされる文字なんでいいんでないの?
>自分で決められないし。
ですね。
ただ別の話としてGETメソッドで渡されたパラメータを
71のコードで受け取ることを考える。すると、HTML4.01では
http://www.w3.org/TR/html4/appendix/notes.html#h-B.2 にあるように
URIエンコーディングにUTF-8を使うことを定めている。実際、
最近のIEやmozillaでは対応している
(しかもmozillaではUTF-8`でしか'渡せない)。一方、"JISautodetect"は
http://www.javasoft.com:80/products/jdk/1.1/docs/guide/intl/encoding.doc.html
にあるようにUTF-8からの自動判別を規格上サポートしていない。
71のコードはこれまでの日本では定番だったけど、いつまでそれで
いいかというのは難しい話だよね。大体確か8859_1が8bit cleanなエンコーダ
というのも実装依存だった気がするし、IBMの処理系だと独自実装の
getParameterだった気がする。



75 名前: 71=72 投稿日: 2000/11/19(日) 00:40
73&74さん
 レスありがとうございます。
 47さんの「getBytes最悪」で、getBytesだけに意識がいってしまいました。
 で、8859_1は、BEAのサイト(アドレス失念)のオラクルとの接続、とかいう所に
 あったのをそのま使ってました。
 そろそろUTF-8って方も勉強しなくちゃ、なんですね。
 もっと精進しなくては。


76 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/19(日) 06:00
JavaアプレットからはネットワークJDBCドライバでDBアクセスするわけですが、
Javaサーブレットからは何でDBアクセスするんですか?
サーバ側で実行するからJDBC-ODBCブリッジですか?

あと、サーブレットがアプレットより優れている点て何ですか?



77 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/19(日) 14:35
サーブレットもJDBCですよ

優れている点と言うよりも、種類が違うのだから、
状況で使い分けるものだと思います

アプレットの場合クライアントPCのブラウザで
アプレットが使えるどうか、対応しているバージョンは
どうか、ダウンロードにかかる時間
などを気にしなくてはいけないですが、
サーブレットの場合はGETが使えるブラウザが入っていれば
OKなので、クライアントのPCをいじれない場合は
便利です




78 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/19(日) 14:50
>>68

http://rdc.wizard.co.jp/documentation/

これくらいっきゃ知らねぇ。
他にもぼしゅー



79 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/20(月) 07:54
age



80 名前: 今皿 投稿日: 2000/11/20(月) 11:48
76さんの質問は
CGIがJavaScriptより優れている点は何ですか?
という質問と同質ですね。


81 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/20(月) 19:52
79>サンキュー



82 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/23(木) 01:01
JSPなんですけれど、上手く理解できない部分がありました。

<%@ include file="hogehoge.jsp" %>

<jsp:include page="hogehoge.jsp"/>

はどう使い分けたらよいのでしょうか?

CQ出版社の「OPENDESIGN増刊 JAVA SERVER PAGE詳細」て本を
買ってみましたけれど、「動的/静的なリソース(ファイル)」
という言葉が漠然とあるだけで、よく理解できませんでした。


83 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/23(木) 01:05
>>82
実行結果をインクルードするのと、実行前のソースをインクルード
することの違いじゃない?


84 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/28(火) 02:27
あげるべきか、上げざるべきか。上のスレでservletの話題出てないから
定番スレってわけでもなさそうなので、とりあえずageず。



85 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/02(土) 00:40
JRUN3.0のWEB-INF/classes/フォルダに置いたアプレットの
正しい指定の仕方で悩んでいます

(codebaseのところはファイルの階層を書くべきなのか、
WEBサーバの仮想フォルダ構造にしたがって書くべきなのか

パッケージの名前で指定できるのか
)

Appletとhtmlファイルの配置は以下になります


/opt/JRun/servers/default/hoge/AppletTest.html
のappletに関する記述は↓です
<applet
code=jp.gr.java_conf.hoge.AppletTest.class
codebase=/hoge
width=400
height=100>
でAppletは↓に置いてあって
/opt/JRun/servers/default/hoge/WEB-INF/classes/jp/gr/java_conf/hoge/AppletTest.class
でAppletTestのpackageは
package jp.gr.java_conf.hoge;
です

アプレットを同じ階層にhtmlを作って動かすと動作できます
(文字を書くだけのアプレットです)

アプレットの起動はNetscapeから↓です
http://localhost:8100/hoge/AppletTest.html


86 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/02(土) 17:09
問題がしぼれたのでもう一度整理します

JRUNのservletディレクトリ以下に置いたアプレットを、
呼び出す方法が不明です

file://だとディレクトリ構造とパッケージの名前に
したがってcodebaseを記述すれば呼び出せるのですが
http://だとcodebaseの記述をどうするかが分かりません

servletディレクトリに置いたアプレットを

codebase=http://hostaddress:portNO/servlet
として呼び出そうとしても、見付けられないようです

servletフォルダ以下にはappletを置いても呼び出せないのでしょうか??


87 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/07(木) 11:35
Apache + TOMCAT3.2 final 使ってるんですが、マニュアル通りサーブレットの
置き場所としてmyappをbuild.batでビルドしたらエラーが出ました。
TOMCAT3.2のバグですかね?
Apacheのクラスがないみたいなエラーでした。


88 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/07(木) 11:55
>87
build.xmlの13行目が/>でxml的に閉じられていないようです。
あと、CLASSPATHにtool.jarが要ると思います


89 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/09(土) 03:25
>>86
>servletフォルダ以下にはappletを置いても呼び出せないのでしょうか??
馬鹿すぎて放置されているようだが…できません。


90 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/10(日) 01:34
ありがとうございます



91 名前: バカ学生 投稿日: 2000/12/13(水) 23:52
すいません、セッションについて教えてください。

A、B、Cと3つのサーブレットがあります。
Aでログイン(認証)を行い、成功すると、セッションを生成して、
Bにリダイレクトして、BのdoGetを行います。
このときは、URLにも、sessinID(ながい文字列)が付いていて、
特に問題はありません。
その後、Bのdogetで生成されたHTMLフォームに対して書き込み、
BのdoPostを行い、CのdoGetへ、リダイレクトします。
このとき、Cでsessionがgetできないのです。
Aで生成したセッションは、Bをまたいで、Cに持っていくことは
できないのですか?または、私のプログラムミスですか?
どうぞ、よろしくお願いします。


92 名前: 馬鹿社会人 投稿日: 2000/12/14(木) 00:01
>>91
頭いいよ。
俺の方が馬鹿だ。


93 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/14(木) 00:30
>>91
関係ないけど、
HttpSession て クッキーでやるんじゃないの? クエリー使うの?
実装依存という気もしますが。
逃避的回避策としては
RequestDispatcher.forward 使うのはダメですか。




94 名前: バカ学生 投稿日: 2000/12/14(木) 01:02
ありがとうございます。

>>92
卒論でいっぱいいっぱいです。

>>93
>HttpSession て クッキーでやるんじゃないの? クエリー使うの?
クッキーではなく、セッションを使いたいのですが、
勉強不足でよくわかりません。

RequestDispatcher.forwardというのは、初めて見ました。
APIで調べても、いまいちわからず・・・
サーブレットの日本語APIなんてあるのでしょうか。。。



95 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/14(木) 03:19
>>94
HTTP 自体にセッションという概念はなくて、
(基本的に毎回接続しなおすと思って良い)
HttpSessionっていうのは、クッキーなりクエリーなりを使って
そういう下回りを意識せずに
セッション == 永続的な接続情報保持を
実現する仕組み(というかクラス)です。

Forward は、HTTP 的に飛ばすのではなくて、
現在のストリームに対して servlet を流し込むというか、
サーバの内部でリダイレクトを解決する仕組み、のようなもの、です。
なので、同じサーバ(WEBアプリケーション)上の servlet/JSP に対して
使うのが普通です。

#といいつつフォロー求む




96 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/14(木) 23:33
原田洋子の「JavaServlet」って本。序盤から誤記・誤字だらけ
勘弁してくれ


97 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/14(木) 23:48
>>96
個人名を出すな!
っていうかプログラム系の本って間違いだらけじゃない?(特に個人が執筆してるやつ)
自分も DirectX の本買って書いてある通り覚えたら思いっきり間違ってた。
たまたま自分のコンピュータでは動いてたが他のコンピュータで動かしたら
起動しなかったり途中でハングったり大変だったよ。


98 名前: バカ学生 投稿日: 2000/12/14(木) 23:54
91の問題はクリアしました。
session変数を、メソッドの中でなく、外で
グローバル宣言(?)したらできました。。
メソッド内だと、だめなんですか?

ただ、サーブレット間を行き来するときに、
なぜかセッションが消えていたり、復活していたり、
なんか動きが怪しいです。


99 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/15(金) 00:22
<<98
それだと thread-safe じゃないのでヤメてください。
つーか getSession で毎回取得すればいいのに。


100 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/15(金) 00:33
>>97
だって7刷もしてるのに全然訂正が入らないってのはひどいじゃない。
初心者向けの本だってのにさ。


101 名前: バカ学生 投稿日: 2000/12/15(金) 02:24
>>99
thread-safe というのがわからないのですが。。

>getSession で毎回取得すればいいのに。
これは、getSession(true);ということですか?
リダイレクト先で、また新しいセッションを作って、
またリダイレクト先で・・・というふうに、
複数セッションを作れるのですか?

それとも、最初にセッションをつくり、以後は、
getSession(false);で、最初のセッションを取得すると
いうことですか?





102 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/15(金) 03:19
>>101
getSession(false) です。(true)でもいいけど。
getSession(true) はなにも毎回新しいのを作るわけではなく、
無いなら作る、というだけです。

thread-safe の話は servlet の資料を読むと必ずでてくるので
探してください。



103 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/15(金) 17:37
sessionがらみで便乗質問させて下さい。
96の本を参考にしてるんですが、
sessionにputValue()でStringの値をセットした場合は
問題ないのですが、参照型のインスタンスだと、
実行時にClassCastExceptionでエラーになってしまいます。

User a = (User)session.getValue("user");

こんな感じなんですが…
キャストの仕方がまずいのでしょうか。


104 名前: むぎ茶 投稿日: 2000/12/15(金) 19:46
Object o = session.getValue("user");
System.out.println(o);
でもして 実際に何が帰ってきてるのか確かめろ


105 名前: 103 投稿日: 2000/12/18(月) 10:53
レスありがとうございます。
println()で出力すると、
"User@"に続いてアドレスらしき値が表示されます。
Stringの場合は、Objectで出力しても文字列がそのまま出力されるので、
なにか値の取り出し方に違いがあるのでしょうか?




106 名前: むぎ茶 投稿日: 2000/12/18(月) 12:44
"User@"って表示される時にも ClassCastException でますか??
System.out.println(o.getClass());
のほうがいいかな。


107 名前: 103 投稿日: 2000/12/18(月) 13:31
Objectクラスに代入してる分には
ClassCastExceptionは出ないです。
getClass()でやってみた所、
"class User"と出力されました。



108 名前: むぎ茶 投稿日: 2000/12/18(月) 15:51
o.getClass eq User.class なのに
User u = (User)o; で
ClassCastException がでるの??
本当にそうだとすると処理系のバグ??
同名で別の User クラスがあるとか?
わかんね


109 名前: 103 投稿日: 2000/12/18(月) 17:04
もう少し調べてみます。
勉強になりました。
ありがとうございました。



110 名前: バカ学生 投稿日: 2000/12/20(水) 17:29
>つーか getSession で毎回取得すればいいのに。
>getSession(false) です。

一応、そんな形でプログラムはしています。
(ログイン成功時に、セッション生成し、他のサーブレットは
getSession(false) で、trueのときだけ、ログイン成功状態と見なす)
でも、あるはずのセッションが消えてたり、なんかおかしいです。

thread-safe というのは、スレッド関係ですね。勉強してみます。
ありがとうございました。


111 名前: バカ学生 投稿日: 2000/12/20(水) 17:33
もう一つご相談なんですけど、HTMLから
ボタンを押して、他の(サーブレットが出力した)画面に
行くようにしたいのですが、
単純に考えて、get とpostの2つしかないので、
2つしかボタンが作れず、分岐も2つだけですか?
どなたか教えてください


112 名前: バカ学生 投稿日: 2000/12/20(水) 17:37
あ、バカだ俺。
FORMのactionを変えれば、いくらでも作れますね。。
すんまそん。。


113 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/12/22(金) 17:19
JDBC経由でMySQLに接続したいのですが
mm.mysql.jdbc-1.2のmysql_comp.jar mysql_uncomp.jarを
どこにおいたらいいのですか?
Tomcatのlibとかにおいているんですけど、No such driverいわれます。
現在の環境は apache1.3.14 tomcat3.1 jdk1.2.2です。



114 名前: バカ学生 投稿日: 2001/01/08(月) 13:02
ログインservletを作ったんですけど、
管理者がログインしたときだけ、管理者用の画面を
出力したいのですが、単に、管理者のID,passを、プログラム中で
文字列比較して、管理者なら、別のHTMLを出力するような
プログラムでいいのですか?


115 名前: デフォルトの名無しさん 投稿日: 2001/01/08(月) 17:07
>>113
環境変数CLASSPATHをちゃんと設定すればどこでもいいんじゃないの?
# いや、サーブレットはやった事ないんで嘘かもしれんが


116 名前: デフォルトの名無しさん 投稿日: 2001/01/09(火) 17:32
関係無いんですが、Tomcat3.2.1で使うmod_jk.soってどこかでDLできないんですか?
コンパイルして作るしかないんでしょうかね?
ちなみに構築は Red Hat + Apache + Tomcat の予定です。



117 名前: デフォルトの名無しさん 投稿日: 2001/01/14(日) 12:08
 >116 つまり、apxsしたくないってことですか?

 (わかってると思うけど)一番確実な方法はApache&Tomcatのソースを
用意し、リコンパイルする方法です。....確かにでかいですからね。

 ApacheのソースはredhatのソースCDにあるはず。tomcatについては....
  1.泣きながら落とす
  2.jservを泣きながら使う
 雑誌やredhatにtomcat3.2.1が収録されるのはもう少し先だと思います。

 今月のUnixUSERにもないんでやんの....。



118 名前: デフォルトの名無しさん 投稿日: 2001/01/14(日) 12:32
>117 自己レス

 ちょっと省略しすぎたので補足。tomcatのソースを泣きながら落とす
場合、落としてからapxsを試してください。通った場合はapacheのりコ
ンパイルをする必要はないはずです。

 通らなかった場合、redhatのapacheはDSO使えない。つまり、apache
の再コンパイルとなるわけ。


119 名前: デフォルトの名無しさん 投稿日: 2001/01/14(日) 14:05
>116
mod_jk.soはここから落とせますよ
http://jakarta.apache.org/builds/tomcat/archives/v3.2-beta-8/bin/linux/i386/
でもRedHatだったら、コンパイルしたほうがよいかも。



120 名前: 緑茶 投稿日: 2001/01/15(月) 15:49
ACCESS2000を使ってServletのプログラムを書いたのですが実行できません。
No suitable Driverなどというエラーが出てきます。
なぜでしょう?
ちなみにACCESS97で作ったDBを使うと動くらしいのですが、
2000で動かしたいので誰か解決策教えてください。


121 名前: デフォルトの名無しさん 投稿日: 2001/01/15(月) 19:53
ACCESSを使ってJavaなプログラムが書けるわけが無いだろ!っていうチャチャは置いといて、
ACCESS2000用のJDBCドライバを使えば良いのでは?
ACCESSは使ったこと無いからどこにあるのか知らないけど。



122 名前: 初心者 投稿日: 2001/01/17(水) 20:00
サーブレットからEXCELのファイルを読み込んで、
それをブラウザに表示することってできますか?
OLEの扱いって、よく分かりません。
ダレカタスケテー


123 名前: デフォルトの名無しさん 投稿日: 2001/01/20(土) 02:00
ACCESSだったら、jdkについてるjdbcドライバが使えると思います。
jdbc-odbcブリッジってやつです。


124 名前: デフォルトの名無しさん 投稿日: 2001/01/20(土) 22:00
>>122
ServletからExecel?XMLを使え。DOMだ。
IEは5以上じゃないとダメだぞ。
って、オレもXMLは使ったことないけど。スマソ。


125 名前: デフォルトの名無しさん 投稿日: 2001/01/20(土) 23:33
ServletからJSPに日本語の値を渡してるのですが、
文字化けします
IE5.5
エディタはSJIS

どこかにサンプル無いですか?


public class Test extends HttpServlet {
public void doGet(HttpServletRequest req,
HttpServletResponse res)
throws IOException,ServletException {

req.setAttribute("name", "ほげ");
ServletContext sc = getServletContext();
sc.getRequestDispatcher("/Test.jsp").forward(req, res);
}
}

<HTML>
<%
String parm = (String)request.getAttribute("name");
%>
<%= parm%>
</HTML>


126 名前: デフォルトの名無しさん 投稿日: 2001/01/21(日) 00:00
122>
ODBCのDSNにExcelファイルを登録できるからそれを
使ってみては?




127 名前: デフォルトの名無しさん 投稿日: 2001/02/20(火) 00:31
hoge


128 名前: デフォルトの名無しさん 投稿日: 2001/04/11(水) 06:58
hage


129 名前: デフォルトの名無しさん 投稿日: 2001/04/11(水) 09:32
>>125
サンプルじゃないけど参考文献
http://www.ingrid.org/java/jserv/i18n/corruptedchar.html

とりあえず、JSP 冒頭の @page で指定してる文字コードと、
実行プラットホームの文字コードを確認してください。



130 名前: デフォルトの名無しさん 投稿日: 2001/04/11(水) 09:35
みんなえらい苦労してますね。
僕は富○通のサンプルをベースにhtmlライブラリ
クラスを作成してやっています。doServiceだから
getもpostも関係なし。
今までやってる仕事で近年になく楽々。
一応イメージについて補足しておきますが、ブラウザ
からアクセスすると対応するスレッドに接続できます。
出来ない場合には新規のスレッドを生成します。
そのスレッドにセッションを保存できるわけです。
当然DBなんかもコネクションは1つだけ。使い回す
からそれなりに速くできます。
ということでどの言語でもそうだけど、問題となる
のはデザインとプログラムの分離だけです。
#文字はShift JISで大体解決。〜がひっかかるけど。


131 名前: デフォルトの名無しさん 投稿日: 2001/04/13(金) 00:38
みなさんマシンはどれぐらいのスペックですか?
CPUよりメモリの方が大事なのかな?


132 名前: デフォルトの名無しさん 投稿日: 2001/04/13(金) 01:17
doService() みたいのを用意する例を結構見ますが、
なんで service() 使わないんだろね。


133 名前: デフォルトの名無しさん 投稿日: 2001/04/13(金) 08:36
ネタ心者歓迎!今更ながらにJavaを学ぼう!
の543です。

サーブレットとDBMSを用いたWebでの検索処理についてですが
このあたりの開発経験をお持ちの方はみえませんか?

http://piza.2ch.net/test/read.cgi?bbs=tech&key=981424252&st=543&to=543&nofirst=true
↑こんな内容ではまってしまっています。



134 名前: デフォルトの名無しさん 投稿日: 2001/04/16(月) 15:15
ローカルから送信されたデータをサーブレットを利用して
サーバー内のtxtに書き込みたいのですが、どのようにすればいいですか?

ちなみに使用サーバーはLinuxです。



135 名前: >134 投稿日: 2001/04/16(月) 16:45
じぶんでコレを実装すれ。なぜかServletAPIではサポートされてない。
ttp://www.yo.rim.or.jp/~getsu/document/rfc1867j.txt


136 名前: 135 投稿日: 2001/04/16(月) 16:52
>>134 135は早とちりだったかもしれない
ファイルのアップロードでないなら普通に好きにファイルIOすれ。


137 名前: 134 投稿日: 2001/04/16(月) 21:48
>135
解決しました。
ご助言、ありがとうございました。


138 名前: デフォルトの名無しさん 投稿日: 2001/04/16(月) 21:56
サーブレットよりJSPをフォワードしたいのですが、

    getRequestDispatcher("/jsp/filename.jsp")

のファイル名を相対パスではなく絶対パスで記述するためには、

    getRequestDispatcher("http://server/dir/jsp/filename.jsp")

と記述すれば良いのでしょうか?
とある理由で全て絶対パスで記述するよう指示されました。
後でサーバー名の修正を簡単にするにはどういうポイントがあるでしょうか?
よろしくお願いします。




139 名前: デフォルトの名無しさん 投稿日: 2001/04/16(月) 22:02
>>138
J2SE java.util.Propertiesつかえ。
Windowsのiniファイルの機能と同じモノを
メモリ空間にキャッシュできる。


140 名前: デフォルトの名無しさん 投稿日: 2001/04/16(月) 23:51
>>138
初期化パラメータでサーバ名を指定できるようにしておいて、
init()の中で serverName = getInitParameter("serverName");
とかやっといたらどうっすか。



141 名前: 138 投稿日: 2001/04/17(火) 21:25
レスありがとうございます。

>java.util.Propertiesつかえ。

っていうのはPropertiesファイルを作成するということですか?
今日一日かけて調べて、Propertiesファイルの作成はできたのですが、
それをどこへ配置したら良いのでしょうか?
とりあえずWeb-infと同じ位置にして、
相対パスで取れないかなと思い、
    prop.load("filename")
としたら、駄目でした。

そこで、

    prop.load("c:\\dir\\filename.properties")

としたら、ちゃんと参照することができました。
でも、絶対パスを書いたら意味がないような。。。
やり方間違ってますか?
よろしければ解決方法、せめて参考URLを教えてください。


142 名前: デフォルトの名無しさん 投稿日: 2001/04/17(火) 22:05
>>141
???
Properties.load()の引数はInputStreamじゃないか?

prop.load(new FileInputStream("filename"));

だと思うが。あと、相対パスでもオッケイなはずだよ。



143 名前: コンパス 投稿日: 2001/04/18(水) 01:21
>>141
ClassLoaderクラスのgetResource()メソッドでURLクラスを取得できる。
当然クラスパス内にプロパティファイルがないと駄目だけど。




144 名前: デフォルトの名無しさん 投稿日: 2001/04/18(水) 13:12
"getParameter()"で取得した文字ではなく、サーブレットから直接、文字を出力しようと
思うのですが、どうやっても文字化けします。
なにか、解決策はないでしょうか?


145 名前: デフォルトの名無しさん 投稿日: 2001/04/18(水) 16:29
>144
書式(setContentType(...))を指定する時に
charsetしないと、日本語使えないよ。

具体的には
res.setContentType("text/html; charset=iso-2022-jp");
とか。



146 名前: 138 投稿日: 2001/04/18(水) 22:58
いつもお世話になります。138=141です。
143さんの話しは難しそうだったので、
142さんの「できる」という言葉を信じて今日も挑戦しました。
いろいろな階層に配置してみたけどやっぱり駄目でした。
prop.load(new FileInputStream("filename"));
にしてます(ソースは会社にしかないので書き忘れた)。
拡張子って必要ですか?一応、どちらでも試してます。
後、サーブレットはWeb.xmlにパッケージ名とクラス名を登録してあるけど、
それって関係ありますか?propertiesファイルも登録する?そんなわけないか。。。
この辺がよくわからないよー。社内で私よりわかる人いないし。
jspは"/jsp/jspname.jsp"でちゃんと表示できるのになぁ。
それともクラスを指定するやり方でするのかなぁ。
誰か救って!!納期がどんどん近付く〜〜(ToT)
以下の階層でどこに配置してどういう指定をしたらいいのですか?

jsp
L jspname.jsp

Web-inf
L classes
L pac
L servlet.class



147 名前: コンパス 投稿日: 2001/04/19(木) 00:43
>>146
難しくないって。
下のかんじでOK。

なんでもリソースで取得するようにした方が、何かと便利だと思うんだけど。
で、当然クラスパス内にないとだめよん。

ClassLoader loader = ClassLoader.getSystemClassLoader();

InputStream input = loader.getResource("test.properties").openStream();
Properties prop = new Properties();

prop.load(input);
System.out.println(prop.getProperty("TEST"));



148 名前: デフォルトの名無しさん 投稿日: 2001/04/19(木) 01:03
リフレクションによるメタプログラミングと、ClassLoaderの使い
こなしは、Javaの真髄の一つだと思うね。

URL指定で動的にクラスローディングできるって凄い楽だとおもう。
例えば、サーバプロセスを動作したままの状態でアップデートでき
たりする。



149 名前: デフォルトの名無しさん 投稿日: 2001/04/19(木) 06:44
>>147
Weblogic使ってるけど、ファイル名を相対パスで指定する場合、
クラスパスじゃなくて、Weblogicのホームディレクトリからの相対パスになるよ。
(test.propertiesはc:\weblogicに置かなければならない)
146は置き場所が悪いんじゃないの?


150 名前: デフォルトの名無しさん 投稿日: 2001/04/19(木) 06:52
>>146
試しに new FileOutputStream("hoge.txt")
でファイルを作ってみな。
そんでExplorerでファイル検索する。そこがホームディレクトリだ。


151 名前: 138 投稿日: 2001/04/19(木) 07:29
ありがとうございます。
朝から涙が出そうですぅ。早速会社でやってみます。
実は、本格的にWEBの仕事するの私的にも会社的にも初めてなんです。
JAVAだって自分でコツコツ勉強して、私以上に知ってる人誰もいない。
まだまだペーペーなのに、私が開発のリーダーのような感じになってしまって。。。
でも、ここで覚えて会社でデカイ顔してやるんだ!!!
と思ってがんばってます。


152 名前: デフォルトの名無しさん 投稿日: 2001/04/20(金) 23:41
サーブレットでBeanに値をセットして
JSPのカスタムタグでその値を表示する方法の
サンプルor参考URLありませんか?
普通にJSPにJAVAのソースを埋め込む方法(スクリプトレット?)
ならできるんですけど、
「カスタムタグでやれ」との命令が下り、
足踏み状態です。田舎なので本もありません。
どうぞよろしくお願いします。


153 名前: with 投稿日: 2001/04/21(土) 00:49
File より Context なり CLASSPATH なりのリソース系を使うのが
比較的無難な気が。
(これのマッピングも実装系でバラバラだけど・・)


154 名前: デフォルトの名無しさん 投稿日: 2001/04/21(土) 01:32
>>152
jsp:useBean をGoogleで検索するといっぱい出てくるよ


155 名前: デフォルトの名無しさん 投稿日: 2001/04/21(土) 06:53
サーブレットって何がいいのでしょう?
いろいろWEB見て回ったんだけどいまいちよくわからなかった。
perlプログラマにもわかるように超簡単な説明くださいませ。



156 名前: 仕様書完璧 投稿日: 2001/04/21(土) 12:54
>>155
全てのPerlのCGIをひとまとめにして
アプリケーションと呼ぶ事はできますか?
サーブレットの集合をアプリケーションと呼ぶ、
っていうより使いこなすとそう見えてくる。
もうCGIには戻れません。


157 名前: 初心者 投稿日: 2001/04/21(土) 20:49
みなさん、WebのApplication Serverって何を使っていますか?
最近Oracle9iASかWebsphereの導入を考えているんですけど、どうでしょ?
ちなみにOSはWIN2000。
使っている方、性能の善し悪しなんかをおしえてください。

また、JSP、Servletを組むとして何で組んでいますか?
JbuilderのEnterprise?Forte?
皆さんの使っているソフトを教えてください。

初心者なもんで質問ばかりですいません。


158 名前: 今度のプロジェクト 投稿日: 2001/04/21(土) 21:50
アパッチ+トムキャット+viクローン(たまにJBuilder)
ちゃんと金取ってやってる仕事。



159 名前: 155 投稿日: 2001/04/21(土) 22:21
>>156
ううむ。大変申し訳ないがその説明理解できないです。
Perl で組んだ CGI を組み合せてアプリケーションと呼ぶのはマズイのでしょうか?
CGI に戻れないというならそこらへんの深いお話しが聞きたいです。
>>155 で 超簡単な説明くださいませ とか書いといてすんません。


160 名前: Webアプリは... 投稿日: 2001/04/21(土) 22:50
関わっているPJが4つほどあるけど、こんなかんじ〜。
それぞれ画面数は 100 〜 400 です。
※カッコ内はPJ数
APサーバ: WebLogic(3)、NAS(1)
DB: Oracle8.0.5(4)
OS: Solaris(4)

開発ツールは、たぶん規模が大きくなると IDE はつらい気がするので
みんなエディタです。Emacs(50%)、秀丸(40%)、Meadow(10%)♪

参考になるかも。。。
http://www.atmarkit.co.jp/keyword/index-articles.html


161 名前: デフォルトの名無しさん 投稿日: 2001/04/21(土) 23:35
WebSphere3.5+DB2+VisualAgeJava でやってます。
最低メモリは1GB欲しい>WASサーバ




162 名前: デフォルトの名無しさん 投稿日: 2001/04/22(日) 02:24
>>101
なにも考えずに、すべて getSession(true); でやってみそ。
ところで、J2EE API マニュアルの日本語版ってどっか無いかなぁ。


163 名前: 162 投稿日: 2001/04/22(日) 02:27
すまん。タイムマシンに乗ってた。
# 101 っていつだ?


164 名前: with 投稿日: 2001/04/22(日) 02:46
>>155
なんにしろJava であるってのがでかい。
まずは保守性。XML や JDBC のような標準化されたライブラリの多さ。

あとメモリ上にずっといるってのが大きい。毎回プロセスが起動するのは
負荷はさておいてもセッション管理が面倒。

あとは JSP が便利かな。PHP とか ASP とちがってロジックを分離できるので
気持ちが落ち着く。(開発の分担が楽)

規模によってはもちろん CGI が良いって場合も多々ある。


165 名前: 投稿日: 2001/04/22(日) 05:48
HORB


166 名前: デフォルトの名無しさん 投稿日: 2001/04/23(月) 11:03
みなさんにお聞きしたいことがありますので、質問させてください。
私はPerlでCGIを作ることができるのですが、今後のステップアップのためにJSPを
勉強しようと思っています。そこで質問なのですが、JavaサーブレットはPerlやPHP
と比べて生産性はどうなのでしょうか?
みなさんがWeb系のシステムを構築するのに、Javaサーブレットを選択された理由を
お聞かせ願えるとありがたいです。よろしくお願いします。



167 名前: 無党派さん 投稿日: 2001/04/23(月) 12:11
>>166
>>164 にその答えがある。俺の答えは>>164と同じ。



168 名前: デフォルトの名無しさん 投稿日: 2001/04/23(月) 22:30
サーブレット+JSPで、DBを検索して画面に結果を表示させたいです。
Beanにはテーブルの項目名を持たせます。
データが複数件ある時はどのように処理したらよいですか?
ArrayListを使おうと思ってますが、どのように使ったらいいかわかりません。

Bean    MyBean = new Bean();
ArrayList MyList = new ArrayList();
While(rs.next){
  MyBean.setDbValue1(rs.getString("列名1"))
  MyBean.setDbValue2(rs.getString("列名2"))
  MyList.add(MyBean)
}
 :
 :
request.setAttribute("mybean",(Bean)MyList.get(0));

自分でなんとか考えた1件だけあった時のソースです。
複数件の時はどこをどう変えたら良いのでしょう???



169 名前: デフォルトの名無しさん 投稿日: 2001/04/24(火) 01:07
なんでその ArrayList をそのまま詰めない・・・・謎だ。



170 名前: デフォルトの名無しさん 投稿日: 2001/04/24(火) 07:37
そうするとJSP側で受け取るのはBeanでなくても良いの?



171 名前: デフォルトの名無しさん 投稿日: 2001/04/24(火) 16:23
JDBCを使って他のマシンのDBにアクセスするにはどうしたらいいですか。
使用しているのはAccess97です。


172 名前: ノットイコール169 投稿日: 2001/04/24(火) 16:52
ArrayListだってBeanだ


173 名前: 168 投稿日: 2001/04/24(火) 21:59
jspでMyListをBeanにキャストしたらできました。
なるほど、こういう使い方もできるのですね。
ただし!別スレにも書きましたが、
for文で回して、get(i)で取り出すと、
最後にセットしたBeanの値が出てきてしまいます。
どこが問題なんだろう。




174 名前: デフォルトの名無しさん 投稿日: 2001/04/24(火) 22:53
scriptletでサッサと済ますとか

<%
Bean[] beans = (Bean[])request.getAttribute("mybeans");
if ( beans != null ) {
for ( int i = 0; i < beans.length; i++ ) {
out.println(beans[i].toString());
}
}
}
%>


175 名前: デフォルトの名無しさん 投稿日: 2001/04/24(火) 22:56
>>最後にセットしたBeanの値が出てきてしまいます。
>>どこが問題なんだろう。

whileの中で new Bean(); してないからでしょ


176 名前: 168 投稿日: 2001/04/24(火) 23:13
とりあえず明日会社でやってみます。
ありがとうございます。

>whileの中で new Bean(); してないからでしょ
これって、レコードセット取得する時ってことですか?




177 名前: 一仕事おわった! 投稿日: 2001/04/25(水) 21:32
>>157
思ったよかJServ安定してる。Intel Solarisいれると
勝手にはいっちゃったりするおちゃめさんだし。
個人的評価では
JServ > tomcat > websphere > jrun >>>>> InterStage
かなぁ。
InterStageっちゅうか、あれについてるDBがだめ。


178 名前: Java初心者 投稿日: 2001/04/26(木) 11:05
どなたか教えてください。
J2EEの対応OSはWin NT4.0/2000、Solaris、Linuxとなってますが、
Win 95/98で動かしたいのです。
「起動用のバッチファイルなどをいくつか修正すれば正常に動作する」
なんて話を聞いたことがあるんですが、具体的にどのファイルを
どう修正すればいいかご存知だったら教えてください。


179 名前: デフォルトの名無しさん 投稿日: 2001/04/26(木) 11:16
>>178
動かないの?知らなかった。
起動用のバッチってサーバ起動のやつですか?


180 名前: デフォルトの名無しさん 投稿日: 2001/04/26(木) 16:03
サーブレットを使用して
Linuxサーバー上でフォルダの所有権を変更したいのです。
(フォルダ生成時にroot以外の所有権を持たせても可)
何かいい方法はないでしょうか?


181 名前: デフォルトの名無しさん 投稿日: 2001/04/27(金) 00:08
フレームで分割されたHTMLをサーブレットで呼ぶにはどうしたら良いでしょうか?
メニュー(html)メイン(jsp+Bean)で構成されています。
今はフレームの構成が設定されているhtmlをfowardしています。そうすると、
HTTPエラーがそれぞれのフレーム内に表示されてしまいます。


182 名前: デフォルトの名無しさん 投稿日: 2001/04/27(金) 07:07
>>180
runtime.execでシェルスクリプトを実行すればいいよ。
csh chown..で直接実行してもいい。
でもnobodyであまり権限ないから気をつけてね。
>>181
言ってることが分からないけど、フレームを作成したいなら、
フレームメインと、それぞれのフレームに対応するサーブレット
作成すればいいよ。
特定のフレームを決め打ちして実行したいのなら、Formのtarget
指定すればいい。どっちかってぇとJavaScriptな話題なのかな?
ttp://www.irt.org/でほぼ解決すると思うよ。


183 名前: デフォルトの名無しさん 投稿日: 2001/04/27(金) 07:09
だれかoracleのutf-8をサーブレット環境で使ってる人
いますか?
文字の"−"が化けちゃいます。内部コードがutf-8
とJavaのunicodeではちゃうんでしょうかね。誰か
解決策ご存じでしたら教えて!


184 名前: デフォルトの名無しさん 投稿日: 2001/04/27(金) 07:55
>>183
http://www.asahi-net.or.jp/~hc3j-tkg/unicode/index.html


185 名前: 180 投稿日: 2001/04/27(金) 11:49
ご助言、ありがとうございます。

Runtime runtime = Runtime.getRuntime();
runtime.exec("chown 所有者 フォルダ名");

でうまくいきました。



186 名前: デフォルトの名無しさん 投稿日: 2001/04/27(金) 13:27
サーブレット初心者です。
今、書籍などで勉強中です。質問があります。
サーブレットってライフサイクルがありますよね。
(init()→service()→destroy()って言う流れで。)
で、最初のリクエストでinit()、service()が実行されて
service()メソッドがその後のリクエストを待つ。
destroy()が発行されるためにはコンテナ(エンジン)を再コンパイル
するか、もしくはdestroy()を明示的にオーバーライドしたプログラム
を再コンパイルしなければいけないって本にかいてあったんですけど、
これってほんとですか?
業務でつかうとなると、そんなコンテナの再起動は出来ないと思うし、
でも、そのままだとサーブレットの数が増えるにしたがって
サーブレットインスタンスのためにリソース足りなくなったりしない
のですか?
それとも、
サーブレットのインスタンスのリソースの消費率なんて微々たるもの
なんですか?
もしくはコンテナのほうでサーブレットの上限を設定できるとか?
うーん、だれかおしえてください。




187 名前: 182 投稿日: 2001/04/27(金) 13:40
>>184
情報ありがとうございます。やはりOracleutf-8
とJava内部でのUnicode実装が違うみたいですね。
ということはthinDriverでなくすると意外に
よめちゃったりするんだろうか。解決方法に
悩みますね。


188 名前: デフォルトの名無しさん 投稿日: 2001/04/27(金) 14:00
>>186
結構本当です。開発中はどのようにリセット
するかが問題になります。が、あまり問題に
ならない処理系もあります。経験的な話で,
申し訳ないですが、サーブレット起動の一番
頭のクラスファイルの日付で自動更新される
処理系が多いです。サーブレットスレッドの
上限はたいてい設定できると思います。
リソースは喰いまくりです。なるべく消費しない
ようにしましょう。



189 名前: 187 投稿日: 2001/04/27(金) 14:15
>>188
早速のレスありがとうございます。
やっぱりリソースくいまくりですか?
気をつけます。

>サーブレット起動の一番頭のクラスファイルの日付で自動更新される
>処理系が多いです。
↑すいません。ここでいう処理系っていうのはサーブレットコンテナの
ことでしょうか。
それとも、そういう処理(リソースを解放するプログラム)を自分で
つくろうということですか?



190 名前: 186 投稿日: 2001/04/27(金) 14:22
189です。
僕の名前が187になってすが186です。


191 名前: 188 投稿日: 2001/04/27(金) 18:45
>>189
サーブレットコンテナっちゅうかサーブレットエンジンですね。
みたかぎり非常に楽なのがJServ,Tomcat。
JRUNは今ひとつ不明な動作がありますね。
そうそう、JSDKは毎回サーバ立ち上げ直さないと
だめですね。stopとstartのコンビのバッチ作ってます。
リソースはやはりDBアクセス大きいですね。
connectionは1セッションに1つにしましょう。


192 名前: 181 投稿日: 2001/04/28(土) 09:00
フレームメインに下のように設定して
<FRAMESET>
<FRAME name="frame1" src"menu.html" >
<FRAME name="frame2" src="サーブレット" >
</FRAMESET>
このフレームメインを呼ぶようにすればいいとうのはわかりましたが、
問題は、サーブレット内でDBを検索して、
該当データがあったらフレームあり、
該当データがない時はフレームなしで単独の画面にしたいのです。
どういう方法があるでしょうか?
どなたかご存知の方お願いします。



193 名前: デフォルトの名無しさん 投稿日: 2001/04/28(土) 09:34
>>192
だからtarget決めるだけだと思うけど??
サーブレットがやるのは、その根っこの
htmlを吐くときに>>192みたいなフレームに
するか、フレームなしhtmlにするかだけでしょ?
targetきちんと決めればフレーム中のフレームとか
任意のところ狙えるじゃん。



194 名前: 181 投稿日: 2001/04/28(土) 11:54
忘れてた。サーブレットではJSPをFowardしてます。
今は、ただメインフレームを呼ぶと
サーブレットが起動して、サーブレット内で指定したJSPが
そのフレーム内に表示されます。

193さんのやり方だと、
まず、サーブレットによりメインフレームを吐き出し、
そうするとそのフレームで指定したサーブレットがまた起動、
というような1画面表示するのに2回サーブレットを起動させる
イメージでよろしいですか?


195 名前: 181 投稿日: 2001/04/28(土) 11:56
もう1つ質問。
<FRAME name="frame2" src="サーブレット" >
これをPOSTで呼びたいんですけど、それは可能ですか?


196 名前: デフォルトの名無しさん 投稿日: 2001/04/28(土) 22:45
>>195
JavaScriptと組み合わせれば可能だろうけど、なんでGETじゃダメなの?


197 名前: デフォルトの名無しさん 投稿日: 2001/04/30(月) 23:39
すみません、JSPでの文字コードの件なんですけど。
JSPに関係する文字コードって、

・JSPのコードを書いたときの文字コード
・JSPコード内の「ContentType」で指定してある文字コード
・そのJSPを実行する処理系の文字コード

 の3つが関係しあうと思うのですけど、揃えないといけないものは
どれとどれで、揃えなくて良いのはどれですか?

 例えば、Win環境でJSP書いて、空リス上で実行するときには、
ソースがSJIS、ContentTypeもSJIS、実行環境のデフォルト文字コードは
EUCになると思うんですけど、そういう場合は、ソースもContentTypeも
EUCで書かないといけないとか、そういうことはあるんでしょうか。
もSJIS、


198 名前: デフォルトの名無しさん 投稿日: 2001/05/01(火) 08:10
>>194
サーブレットと考えない方がいいとおもうんだけどな。
作り方にもよるけど必要なhtmlの数だけservletが必要だと。
もちろん同じservletで出力切り替えるのはできるけど
簡単に考えるならね。
>>195
たぶんセキュリティなんだと思うけど、そういうのは
セッションオブジェクトにつむのよー



199 名前: 186 投稿日: 2001/05/01(火) 09:38
>>188,191
188さんどうもありがとうございます。
現状WinNT+Apache + Tomcatでサーブレットを
うごかそうとおもっています。
(あくまで勉強用の環境ですが、、)
で、たびたびもうしわけないんですが、

>サーブレット起動の一番頭のクラスファイル
>の日付で自動更新される処理

ってもう少し詳しく具体的に教えてもらえませんか?
ウチの社員に質問されまくりで困ってます。
もしくは詳しいドキュメントとかあればおしえてほしいです。。



200 名前: デフォルトの名無しさん 投稿日: 2001/05/02(水) 00:50
age


201 名前: デフォルトの名無しさん 投稿日: 2001/05/02(水) 13:05
あれー、ここのスレ、見え方おかしくなってますね。
コメントきれてたりしてますね。おれだけかな。


202 名前: デフォルトの名無しさん 投稿日: 2001/05/03(木) 08:44
>>191
 JServって、Tomcatの昔のバージョンの名前じゃないんですか?
 別のモノ?


203 名前: デフォルトの名無しさん 投稿日: 2001/05/04(金) 23:39
すみません。どなたか助けて下さい。
ClassLoader loader = ClassLoader.getSystemClassLoader();
InputStream input = loader.getResourceAsStream("properties");
こんな感じにプロパティファイルを取得したいのですが、
どうしてもgetResourceAsStreamでストリームが取得できません。
サーブレットのクラスパスのルート(WEB-INF/classes/)にファイルを置いて
ありますがなぜか読み込めません。どうしてなのでしょう・・・

#助けて下さい。


204 名前: デフォルトの名無しさん 投稿日: 2001/05/04(金) 23:40
揚げ忘れました。


205 名前: デフォルトの名無しさん 投稿日: 2001/05/05(土) 01:01
なんとか解決出来ました。
System.getProperty("java.class.path")
でクラスパスを調べたところ、実はWEB-INFなんかの
サーブレットを収めるところは実はクラスパス、通ってなかったんですね。
それで、パスの通っている場所にファイルを置きましたところ
読み込めました!

#それではどうやってサーブレットは呼び出されるんでしょうか・・・(謎


206 名前: デフォルトの名無しさん 投稿日: 2001/05/07(月) 10:12
>>205
ZONE切ってるからでない?


207 名前: デフォルトの名無しさん 投稿日: 2001/05/08(火) 17:25
VisualAge3.5を使っています。
ViusalAgeのWebSphereテスト環境を使いたいのですが、
テスト用のWebサーバにサーブレットをどうやっておくのが
常道なんでしょうか?

先にフォルダにjavaファイルをつくってインポートすると、
classファイルもそこに生成されますか?
それともコンパイル→エクスポートを繰り返さなくてはならいとか?


208 名前: デフォルトの名無しさん 投稿日: 2001/05/08(火) 17:56
知ってるか?某F社のODBC-JDBCはqueryするだけでも
commitしないとだめなんだぞ。かなりクラクラ
きて、文句つけたら「仕様」なんだと...


209 名前: デフォルトの名無しさん 投稿日: 2001/05/09(水) 11:39
>>202
別ものみたいですよ。
Jserv開発チームから発展したJakarta-Projectが開発した
ServletコンテナがTomcatです。

くわしくは↓
http://www.t3.rim.or.jp/~yoko-k-h/java/servlet/engines/engines.html#tomcat


210 名前: デフォルトの名無しさん 投稿日: 2001/05/09(水) 13:58
VAJ3.5Professionalを使っています。
VAJでサーブレットを作成して、
コンパイルしたときにWebサーバのservletの実行フォルダに
自動的に出力するようにできますか?

VAJでWebアプリの作り方の常道みたいのがあれば
教えてください


211 名前: デフォルトの名無しさん 投稿日: 2001/05/09(水) 14:24
個別の環境はわからないなー。
うちはJDKとJSDKしか使ってないからな。
結構サーバーでコンパイルする人いるけど
必要ないと思います。開発は95/98/meで十分。
あとファイル日付更新管理するソフト作って
活用してます。


212 名前: 205 投稿日: 2001/05/09(水) 21:10
>206
ClassLoaderの取得をこのようにしたら大丈夫でした。
WEB-INF/classesの下のリソースも取得できるようになりました。

this.getClass().getClassLoader()

それにしてもクラスパスってよくわからないなー


213 名前: デフォルトの名無しさん 投稿日: 2001/05/09(水) 21:46
>>211
J2EE1.3やりたいので、Win98系じゃなくてせめてNT系にしましょうよ。


214 名前: デフォルトの名無しさん 投稿日: 2001/05/11(金) 02:20
J2EEとJ2SEの違いって、JTA?(トランザクションの管理する人)とか
EJBが使えるAPIがついてるってだけで、
TOMCATとかでJ2SEでやってたのを、J2EEにしてもJDBCのPOOLINGも
EJBでトランザクション管理とかも部品もしくはアプリケーションサーバ
などを買ってこないと出来ないのでしょうか?
その他、J2EEにするといいことってなんかあるんですか?
(というか、基本的な考え方が間違ってるのか?)


215 名前: デフォルトの名無しさん 投稿日: 2001/05/11(金) 10:47
データベースから受け取ったデータをブラウザに表示するプログラムをつくっています

データベースからレコードひとつずつ受けとりつつ、
それをHTMLにしてStringなどにいれるのがいいのか、
全部受け取ってからあとで加工するのはどちらがいいのでしょうか


データベースにURL TITLE COMMENTの3つの列があって、
ブラウザには
<TD><A HREF ="URL">TITLE</A>COMMENT</TD>
と言う風に表示します


216 名前: デフォルトの名無しさん 投稿日: 2001/05/11(金) 23:29
>>215
ServletからJSPを呼ぶってのはダメなのか?
その方がすっきりすると思うが。


217 名前: デフォルトの名無しさん 投稿日: 2001/05/12(土) 00:37
>>215
質問の意味がいまいちわかんないけど、こうしたいの?

Statement stmt = conn.createStatement();
try {
final String sql = "SELECT URL, TITLE, COMMENT FROM ...";
ResultSet rs = stmt.executeQuery(sql);
try {
while (rs.next()) {
String url = rs.getString("URL");
String title = rs.getString("TITLE");
String comment = rs.getString("COMMENT");
...
out.println("<TD><A HREF=\"" + url + "\">"
+ title + "</A>" + comment + "</TD>");
...
}
} finally {
rs.close();
}
} finally {
stmt.close();
}

即興だからバグは許して。


218 名前: 217 投稿日: 2001/05/12(土) 00:37
あ、ごめん。
インデントなくなっちゃった。


219 名前: デフォルトの名無しさん 投稿日: 2001/05/12(土) 01:07
>>214
JMAとかJNDIとかJTAとかって、その気になれば自分でも実装できる
だろうけど(まあ、その気になればRMI相当だって自分でプロトコル
実装できるしね)、そういうのがAPIになってて、今更作って試験して
という作業しないで済む標準な手段があるのって、すっごい楽でいいと
おもうけど。


220 名前: デフォルトの名無しさん 投稿日: 2001/05/12(土) 01:27
age


221 名前: 214 投稿日: 2001/05/12(土) 01:41
>>219
うん、確かにそれはすごく分かる。だって、楽したいもん。
でも、結局はベンダー(AP鯖など)に依存してて貧乏プロジェクトや
個人では使えないってことでよいのかな?
まぁ、個人で使うってことってないと思うけど(藁

貧乏プロジェクトで使いたいとなったら自分たちで実装して試験して
って、やってるくらいならJ2SEで無理やりゴリゴリ作っちゃったほうが
早いのかなって思う。


222 名前: デフォルトの名無しさん 投稿日: 2001/05/12(土) 12:42
>>210
とりあえずネットワークで共有しておいて
export で Directory 書き出しするとか。

たぶん、IBM的にはWebSphere Studioを組み合わせろ、
ってのが本流なのかな?(自分は使ってないけど


223 名前: デフォルトの名無しさん 投稿日: 2001/05/16(水) 23:07
まだServletはマイナーかなage


224 名前: デフォルトの名無しさん 投稿日: 2001/05/17(木) 02:44
>>223
つうか、すでにJSPが主流かもage


225 名前: デフォルトの名無しさん 投稿日: 2001/05/17(木) 10:51
今度スレあげるときはJSPとServletは一緒にすべきage


226 名前: デフォルトの名無しさん 投稿日: 2001/05/17(木) 13:10
サーブレット楽でいいじゃん。
関係ないけど、HORB使えって平野さんいってた
からこれから実装sage


227 名前: デフォルトの名無しさん 投稿日: 2001/05/31(木) 22:20
EJBを学び始めたんですがバリバリ使ってる人います?

うちのチームはサーブレットばかりか、Javaも初心者なので、
技術的なレベルの問題で使う機会はなさそう・・


228 名前: バカプログラマ 投稿日: 2001/06/02(土) 20:39
うちらのチームもJSP&Servletを使い始めましたが、みな初心者です。

で、MVCモデルにのっとって
(というかWebSphereStudioのジェネレータがはいたコードを書き換えて)、
プログラムを組んでいるのですが、
どうしてもJSPひとつにつきコントローラもひとつと言う形になってしまって
プログラムファイルの数が甚大になってしまいます。

ひとつのコントローラで複数のJSPからの要求をうまく処理する方法ってないものでしょうか?
初心者ですみません。


229 名前: デフォルトの名無しさん 投稿日: 2001/06/02(土) 20:44
ファイルの数が莫大なのってまずい?
たとえばコントローラをひとつのファイルにしてしまうと
みんながそのファイルをいじりたくなって、
効率がおちないかなぁ

おれも初心者だから教えてほしい


230 名前: デフォルトの名無しさん 投稿日: 2001/06/05(火) 11:54
生サーブレットってよくないか?
ちょっと思い立ってサーブレットBBS作ったけど、
便利だぞ。staticなメッセージクラスがexpireするときだけ
ファイルに書き込みだ!
でもクラス名考えないとstaticだからね。
しかも書き込みはWriteObject1行でおしまいだ。
同じ仕組みでchatもできる。


231 名前: デフォルトの名無しさん 投稿日: 2001/06/08(金) 00:26
サーブレットのサンプルソースが見られるところ知りませんか?
・掲示板
・オークション
・ショッピングカート
などを探してます。
自分で作ってみたんですが、できれば人のソースもみて改善すべきところや、
実装のセオリーをしりたいです


232 名前: デフォルトの名無しさん 投稿日: 2001/06/08(金) 08:35
>231
掲示板は掲示板日記で見つかると思う。
オークション、ショッピングカートは奥が深いのよ。
ただでは見せられない。了見狭い俺なのさ。


233 名前: 名無しさん@お腹いっぱい。 投稿日: 2001/06/08(金) 10:13
>>232
んなこといわず、インターフェースだけでもみせてくで


234 名前: デフォルトの名無しさん 投稿日: 2001/06/08(金) 15:46
>>233
しょーがないなー。
tabi100.com


235 名前: デフォルトの名無しさん 投稿日: 2001/06/15(金) 16:24
オークションで時間切れの出品物を削除するのは
SQL一発でOK?


236 名前: デフォルトの名無しさん 投稿日: 2001/06/16(土) 03:38
セッション管理なんですけど
クライアントが同じ画面を二つとか
三つ立ち上げた時ってどうやって
管理すればいいんでしょ。


237 名前: デフォルトの名無しさん 投稿日: 2001/06/16(土) 10:44
Javaサラブレット


238 名前: デフォルトの名無しさん 投稿日: 2001/06/16(土) 13:38
>>236
画面ごとにユニークなIDでも振ってhiddenタグでも使ったら?
各々の画面で保持したいオブジェクトはHashtableに突っ込んで置いて
それをユニークなIDをキーとしてsessionオブジェクトに入れておく、とかね。


239 名前: デフォルトの名無しさん 投稿日: 2001/06/17(日) 08:08
かき氷とservletはじめました
PerlのText::Template.pmみたいなことできる
ありものText文字列変換classないでしょか?
(Perlのハッシュ変数が便利すぎてservlet挫折かも)


240 名前: デフォルトの名無しさん 投稿日: 2001/06/20(水) 19:13
ふたつのWebサーバがいて、片方のサーバのServletへのPOSTリクエストを
もうひとつのサーバのServletへPOSTとして転送する方法ってないかなぁ。

sendRedirectだとリクエストは無視されるし、RequestDispatcherだと
同じサーバじゃないと転送できない・・・


241 名前: デフォルトの名無しさん 投稿日: 2001/06/20(水) 23:25
動画や画像ファイルにアクセス制御するのってどうやってますか?
ふつうに誰でも見れるところに置くのはちょっと出来ないのです。
ログインしたユーザーのみ見られるとかってできないかなぁ・・・


242 名前: デフォルトの名無しさん 投稿日: 2001/06/20(水) 23:27
>>241
ServletでMIME type(Content Type)をimage/jpegとかにしたらいいだけじゃない?HTTPわかってる?


243 名前: デフォルトの名無しさん 投稿日: 2001/06/21(木) 00:08
Responseのどこにファイル名を設定したらいいのでしょうか?
素人丸出しですみません・・・>>242


244 名前: 243 投稿日: 2001/06/21(木) 00:12
sendRedirect()じゃ、みんなが見える位置にしかファイルを
置けないですよね?


245 名前: 243 投稿日: 2001/06/21(木) 00:31
まず、HttpServletResponse#addHeaderで、
MIMEを設定して、それから
javax.servlet.ServletResponseWrapper#getOutputStreamで、
ServletOutputStreamを取得して、printメソッドで書き込めば
いいんですね?>>242
あってますか?


246 名前: デフォルトの名無しさん 投稿日: 2001/06/22(金) 15:55
基本的な質問かもしれないんですが、
リダイレクトを使うときは
out.printは使わないのがベターなんでしょうか?
closeもしくはflushすればエラーはでないのですが
closeとflushの違いがいまひとつわからないです

Error 500
要求の処理中にエラーが発生しました :http://localhost:8080/servlet/Test
メッセージ :null
ターゲット・サーブレット : null
StackTrace:
--------------------------------------------------------------------------------
Root Error-1: null
java.lang.IllegalStateException java.lang.Throwable() java.lang.Exception() java.lang.RuntimeException() java.lang.IllegalStateException() void


public void doPost(
javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response) {

try {

PrintWriter out = response.getWriter();
out.print("test");
out.close();
//out.flush();

ServletContext sc = getServletContext();
sc.getRequestDispatcher("Result.html").forward(
request,
response);

//out.print("test2");
} catch (Throwable theException) {

}
}


247 名前: デフォルトの名無しさん 投稿日: 2001/06/22(金) 21:29
>>246
flushだと、出力は続いているから、ブラウザと入出力が続いている。
延々と持ち続ければ、画面をどんどん更新したりするプログラムが
かける。closeすると縁が切れて、ブラウザは描画に専念する。


248 名前: デフォルトの名無しさん 投稿日: 2001/06/22(金) 21:41
つながってる状態でrquestDispatcher.foward
すなってことですね


249 名前: デフォルトの名無しさん 投稿日: 2001/06/23(土) 00:45
マルチポストになるのですがむこうではリプライがなかったのでサーブレット/JSPの
プロがいると思われるここへ書かせていただきます。
コアサーブレット&JSPと言う本で勉強しているのですがエクセル表示で詰まってます。
本どうりpage contentTypeでエクセル表示を指定、テーブルに値を代入
<%@ page contentType="application/vnd.ms-excel" %>
<TABLE BORDER=1>
<TR><TH>  </TH><TH> a</TH><TH> b</TH></TR>
<TR><TH>aaaa</TH><TD>100</TD><TD>200</TD></TR>
</TABLE>
のように書いてもエクセル表示できません。response.setContentTypeやデータを
タブ区切りにしても駄目でした。エクセル2000も入ってます。IEは5.5を使っています。
他になにか設定が必要なのでしょうか?


250 名前: 241 投稿日: 2001/06/23(土) 20:59
このようにしたらできるようになりました。ありがとうございました
MimetypesFileTypeMap ftm = new MimetypesFileTypeMap();
String str = ftm.getContentType("c:/aaa.gif");
response.setContentType(str + "; charset=Shift_JIS");

ServletOutputStream out = response.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(out);

FileInputStream fis = new FileInputStream("c:/aaa.gif");
int filesize = fis.available();
response.setContentLength(filesize);

byte[] bytearray;
bytearray = new byte[filesize];
Integer integer;
int i = 0;
int data;
while (i < filesize) {
 data = fis.read();
 integer = new Integer(data);
 bytearray[i] = integer.byteValue();
 i++;
}


251 名前: 241 投稿日: 2001/06/23(土) 21:01
つづき
bos.write(bytearray);
bos.flush();
bos.close();
out.flush();
out.close();
return;


252 名前: デフォルトの名無しさん 投稿日: 2001/06/23(土) 21:16
>>250
File file = new File("c:/aaa.gif");
fis = BufferedInputStream(new FileInputStream(file));
int filesize = file.length();
とか、
while (i < filesize) {
int size = fis.read(bytearray,i,filesize-i);
i += size;
}
とかやろうよ


253 名前: デフォルトの名無しさん 投稿日: 2001/06/24(日) 02:18
>>252
ありがとうございます。
java.io.*は初めて使ったのでこんなになってしまいました。逝ってきます・・・


254 名前: 249 投稿日: 2001/06/24(日) 07:01
レスつかないので号泣していたところ昨日なぜかエクセル表示できました。
なんもやってないのに。こないだは何やっても駄目だったのに。自分7不思議
に入れときます。


255 名前: デフォルトの名無しさん 投稿日: 2001/06/26(火) 11:07
タグライブラリについて教えて下さい。
JSPのタグを自作できるとの事ですがこれは結構重要な事なのでしょうか?
XMLをXSLやpaserで操作するようなものですか?それならXMLで事足りるような
気がするのですが。どうもpaserを自作するような感じに思えてしまうんですが。
トンチンカンな事ぬかしてたら叩いてください。


256 名前: デフォルトの名無しさん 投稿日: 2001/06/26(火) 16:15
TOMCATが生成してくれるjasper.logが、文字化けしちゃって
盛大に困りまくっているのですが、なんとかなりませんやろか?


257 名前: デフォルトの名無しさん 投稿日: 2001/06/26(火) 23:27
>>255
カスタムタグは便利ですよ。
JSP Spec を読んで,勉強してみてはどうですか?
(ちなみに、かなりトンチンカンな事をおっしゃってますので
お気をつけてください。)


258 名前: デフォルトの名無しさん 投稿日: 2001/06/26(火) 23:46
EJBはServlet、JSPほどメジャーになってないけど実際のシステム開発
にはどんどん導入されてるよ。EntityBean(CMP)とスレートレスSessionBean
は開発経験した。EntityBeanは使いどころ間違うとパフォーマンスが激烈に落ちるから
注意しないといけないけどね。EJB2.0で導入されたメッセージ駆動型Beanを
各アプリケーションサーバは実装したらもっと使われるようになるだろうね。
(今のとこメッセージ駆動型Beanに対応してるのはWeblogicくらいか?)


259 名前: デフォルトの名無しさん 投稿日: 2001/06/27(水) 00:01
PerlCGIが使えるレンタルサーバ、ウェブスペースは多いのに
JavaServletJspが使えるとなると高価な専用サーバくらいし
かないのは何故?TOMCATってただで導入できるはずなのに・・・


260 名前: デフォルトの名無しさん 投稿日: 2001/06/27(水) 00:04
>>256
文字化けって…
もしかして、Unicode?


261 名前: デフォルトの名無しさん 投稿日: 2001/06/27(水) 00:26
>>259 実際問題セキュリティ関係が難しいよ。全員がひとつの
プロセス内で動いているわけだから、UNIX のファイルパーミッ
ションを利用できないとか、ある人のサーブレットがリソース
(メモリ/CPU) 食いまくると他のサーブレットの速度が落ちる
とか。1 スレッドあたりの メモリ/CPU 使用率まで制限しようと
思ったら、プロバイダが Java VM 作るしかないね。後はユーザ
ごとに Tomcat 立ち上げるとかだけど、Tomcat が落ちたときの
リスタートは誰がやるか、とか。現状、プロバイダにとってセールス
トーク以上のメリットがないし。


262 名前: デフォルトの名無しさん 投稿日: 2001/06/27(水) 00:57
カスタムタグは使うだけが吉。作り方を覚えてる間にどんどん出てくるから。
(当初の)JavaBeansと同じ思想だ。


263 名前: 261 投稿日: 2001/06/27(水) 01:01
ちと意味不明だな。スマソ


264 名前: デフォルトの名無しさん 投稿日: 2001/06/27(水) 18:26
同時に存在するセッションの数を制限したいのですがぁー
Tomcatでー
どうしたらー
よいー?


265 名前: デフォルトの名無しさん 投稿日: 2001/06/27(水) 21:22
server.xmlのどっかに上限値がかいてあったと思う。


266 名前: デフォルトの名無しさん 投稿日: 2001/06/27(水) 23:13
>>265
それは、セッションのタイムアウトではなくて?
間違ってたらゴメソ。


267 名前: 266 投稿日: 2001/06/27(水) 23:14
うう、ゴメソ。
それはweb.xmlでした・・・。
逝って来ます・・・。


268 名前: 255 投稿日: 2001/06/28(木) 01:59
レスありがとう。かなりトンチンカンなやつです。ホンのいくらか勉強してみました。
サ−バーサイドでのサブルーチンですな。(またもやおかしい?)


269 名前: 255 投稿日: 2001/06/28(木) 04:59
今思いついた。これってプログラマとデザイナを分けるってこと?

<myjsp:unko><%--ここにはウンコを入れといてね(はあと)--%>
とデザイナが書いておけばいいというわけだな。これが最大の利点
なのかな?


270 名前: デフォルトの名無しさん 投稿日: 2001/07/03(火) 22:35
検索機能のユーザの入力補助で
参照サブウインドウを開くプログラムを作ってます
(企業コードをサブウインドウの中から選ばせる)

サブウインドウはDBから企業名と企業コードの一覧を
とってくるのですが、サブウインドウが開いてから
中身が表示されるまで3秒くらいかかってしまいます。
(レコードは40件くらい)

いくらがんばってもDBから引っ張ってくる限り
遅いのは覚悟すべきなんでしょうか?


271 名前: デフォルトの名無しさん 投稿日: 2001/07/04(水) 13:01
>>270
そのウインドウに入るときに、threadで、セッションに
突っ込んでおいたら?セッションにはいってなかったら
もう一度検索するってことで。


272 名前: デフォルトの名無しさん 投稿日: 2001/07/04(水) 18:28
>271
ありがとうございます

connectionPoolingなどいろいろ考えていましたが、
ページに入ったときにセッションにいれるのは
いい感じですね
タイミングとか難しそうですがためしてみます


273 名前: デフォルトの名無しさん 投稿日: 2001/07/04(水) 18:42
HTMLのselectのなかのoptionの値って
どうやって受け取ればいいのでしょうか?
<SELECT>
<OPTION value="0" name="option1" >option1 </OPTION>
</SELECT>
はだめみたいで
getParameter("option1");
はnullになってしまいました


274 名前: デフォルトの名無しさん 投稿日: 2001/07/04(水) 19:47
>>273
nameはselectの属性じゃないの?


275 名前: デフォルトの名無しさん 投稿日: 2001/07/06(金) 17:53
サーブレットを使うのに、IISにTomcatをアドオンさせて使おうと思ったら
アクセス時に

inetinfo.exe
例外:アクセス違反(0xc0000005)、アドレス:0x011f3d50

とかいうエラーが出ます。
これにはどう対処したらよいでしょうか?

リダイレクタのログ
[jk_uri_worker_map.c (334)]: jk_uri_worker_map_t::uri_worker_map_close, NULL parameter
[jk_uri_worker_map.c (184)]: In jk_uri_worker_map_t::uri_worker_map_free, NULL parameters

参考文献
http://www.ingrid.org/jajakarta/tomcat/tomcat-3.2.1/doc-ja/tomcat-iis-howto.html
http://www.nsg.co.jp/nbb/ss/joy/ig001018.html
http://www.dmz.hitachi-sk.co.jp/Java/Tech/servlet/tomcat.html


276 名前: VB厨房 投稿日: 2001/07/06(金) 18:28
今度はじめてSolaris+Servletシステム設計開発やるんだけど
なんか助言ある?


277 名前: デフォルトの名無しさん 投稿日: 2001/07/06(金) 20:23
>>273
それはサーブレットの問題じゃなかろう
HTMLも勉強しろや。

<SELECT NAME="test">
<OPTION VALUE="0" >option1</OPTION>
<OPTION VALUE="1" >option2</OPTION>
</SELECT>


278 名前: デフォルトの名無しさん 投稿日: 2001/07/06(金) 20:44
>>276 サーバサイドでは安易にシングルトンを使うな、かな。
他にも思い出したら書く。


279 名前: デフォルトの名無しさん 投稿日: 2001/07/06(金) 21:25
>276
業務が忙しくなる前に、APサーバ周りのツール類を使いこなせるようにすること

エディターでがんばっちゃう人もいるが生産性が断然ちがう


280 名前: デフォルトの名無しさん 投稿日: 2001/07/07(土) 21:42
>>278
なぜ?


281 名前: 278 投稿日: 2001/07/07(土) 22:49
>>280 サーバサイドのプログラミングはマルチユーザ、マルチ
スレッドが基本。安易にシングルトン使う人ってマルチユーザ、
マルチスレッド意識してない人が多いのよね。で、後で
synchronized つけようとしても全ユーザの全スレッドがその
シングルトンの部分でシリアライズされちゃったり。

それから、Java のシングルトンはシステムに対してひとつでは
なく、クラスローダーに対してひとつだということを意識して
おかないと後々やばいよ。

実例挙げればきりないけど、今までサーバサイドのフレーム
ワークの中枢部分にシングルトン持ち込んだ莫迦SEのアプリ
開発はことごとく動かなかったという経験則から (俺ではない)。
ツール程度なら問題ないかもしれないが十分注意。


282 名前: 278 投稿日: 2001/07/07(土) 22:55
ちなみにそいつは COBOLER。プロシジャ型言語しか設計したこと
ない人に Java の設計させてみると、大抵シングルトンとコマンド
パターンを設計の中核に持ってくるよ。


283 名前: デフォルトの名無しさん 投稿日: 2001/07/07(土) 23:16
>>281-282
サブレの経験はないがOOP畑の勘(わら)として、
凄く適切な解説だと思う。

プロシジャを中心に考えちまったら、
(少なくともOOPシステムであるJavaってものは)
全然旨く動かなくなるんだよな。

だから、OOPの効能を機能(=プロシジャ)ベースで説明しよう
などとしている入門書は、全部ドキュだ。焚書しろ焚書。


284 名前: 278 投稿日: 2001/07/08(日) 01:16
とりあえずコードレビューする人は grep で static 宣言引っ掛けて、
その変数/メソッドがマルチスレッド対応してるかくらい確認せれ。
大抵何ヶ所か未対応部分が見っかるぞ。個人的には static を使用
する部分には設計責任者の承認ハンコくらい必要だとも思っている
(極論だが; もちろん static final は除外して)。


285 名前: デフォルトの名無しさん 投稿日: 2001/07/08(日) 09:14
static じゃないメンバ変数もヤバいと思うぞ?


286 名前: デフォルトの名無しさん 投稿日: 2001/07/08(日) 10:02
>>281
激しく同意。XMLじゃないけどサーブレットにネームスペース
導入して欲しい..ってパッケージ宣言か(w
関係ないけどtomcatでstatic使ったchat作ったら、サーブレット
削除してもずーっとメモリーに残っていてかなりあせった。


287 名前: 278 投稿日: 2001/07/08(日) 22:09
>>285 もちろん。とりあえず static はクリティカルにマルチスレッドの
影響を受けやすいというコトで。

>>286 多分オートリロードを期待して前のオブジェクトがメモリ上に残った
ままになったのかな?>>281 でちょと説明不足だったけど static なイン
スタンスはクラスローダーに対して1個ってのはそう言う意味もあった。


288 名前: 280 投稿日: 2001/07/08(日) 22:13
>>278
さんきゅ。

使う必要ないとこで、適当にSingletonにしたらはまると。
SingletonってLogin管理するクラスとか、ConnectionPoolみたいなのに
使うと思ってたから、安易なとか言われても想像のつかないとこではあるが。

マルチスレッドなんだから、同期非同期意識してるよな?という意識が
いるってことね。


289 名前: 278 投稿日: 2001/07/09(月) 17:16
ログ出力とかキャッシュ機能みたいにシングルトンでまとめて管理しておきたい
部分はどうしても出てくるよ。シングルトンにすべきところとやっちゃいけない
ところの見極めが、よく意識しないと見えにくいかな。なんせ非同期の問題は
単体テスト通っちゃうんだから。

オブジェクトの集約関係があるでしょ。あれを洗い出せば、オブジェクトのイン
スタンスが全ユーザに対してひとつなのか、ユーザごとにひとつなのか、もしく
は毎回使い捨てなのかが明確になるはず。マルチスレッド初心者にはスレッドごと
にインスタンス使い捨て部分を任せたほうが良い。アプリケーションロジックを
実装した Bean を HTTP セッションに入れて、サーブレットからそれをつつく
だけのような設計にしてみ。少なくともその Bean 作る人のスキルをシングル
ユーザマルチスレッドまで落とせるから (だからオブジェクトの関係を意識
しないプロシジャ型設計はサーバサイドに向いていない)。

# 前に書いたエキスパート COBOLERs + 初心者 VB 使いたちのデスマーチは
# 毎回上記の問題を繰り返している…。これもスパイラル開発の一種? (藁


290 名前: デフォルトの名無しさん 投稿日: 2001/07/09(月) 18:21
私も同じコト考えてました。>>278-289 はかなり的確に表現してる
と思います。>>289 のようにインスタンスのスコープによってスキル
レベル分けるのが良いですね。

 ・リクエストスコープ (シングルユーザー、シングルスレッド) = 初心者向け
 ・セッションスコープ (シングルユーザー、マルチスレッド) = 中級者向け
 ・アプリケーションスコープ (マルチユーザ、マルチスレッド) = 上級者向け

そうなるとサーブレット実装する人は上級者ということになってしまい
ますが。。。


291 名前: デフォルトの名無しさん 投稿日: 2001/07/10(火) 23:32
激しくアゲとこう。


292 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 00:59
なんでtomcatはあんなんでしょうか?
フリーのものの中でも最悪の部類に入りそうなものなのに、
なぜかサーブレットエンジンとなると"TOMCAT!!"ってなるのがどうもねぇ。

他に良さそうなものって沢山ありそうなもんだけど、ないのか?


293 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 01:12
JRunRunRun♪


294 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 01:23
292desu
一応仕事はしてくれるってのが一番始末に悪い。
動いたり動かなかったり。。。こっちはもう心身ボロボロだっての!


295 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 01:35
>>292
Resinいいんじゃない?
ちょっとしか使ってないけど日本語は普通に通ったよ。(shift_jis)


296 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 01:59
>>295
それは知ってる。Resinの使いやすさや速度は。
でも今回は仕方ない。金ないし時間ないし。
それにオンボロtomcatにしても使いこなしている人だっている
わけだし。。。

今度ソースいじって自分で直すか。。。めんどくさ


それにしてもResinはバージョンアップの頻度が高いですな


297 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 15:19
DBBeanがデータベースの検索結果をresultsetが持っています。
JSPで検索結果を表示したいときは、resultsetをDBBeanから受け取るべきなのか、
それともDBBeanでVectorにいったん格納して、DBのコネクトをクローズしてから、
Vectorを受け取るべきか悩んでます。
検索結果は15列で最大で200行です。


298 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 16:17
データベース開発はまだやったことないんですがそろそろ勉強しておきたいと思ってます
JDBCに関するお勧めの本があったらぜひ教えてください
ちなみにODBCも触ったことがないのでそこらへんについても書かれている本がいいです


299 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 17:16
>>297 後者。理由はコネクションのクローズのタイミングを JSP 側が
意識しなくて済むから。でも他人とのインターフェースに安易に
Vector 使うなよ。インターフェースの曖昧化は抽象化とは違うぞ。
レコード1個に対して Bean のインスタンスを1個作れ。


300 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 17:50
Vectorの中にDBからとってきたレコードを格納するくらすを
格納してます

public class Emp {
String name;
String emp_id;

〜 後ろはaccessor 〜
}


301 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 17:50
public class DBBean{

public Vector getVector() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:oci8:@emp", "dbuser", "dbuser");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from T_EMP");
Vector vc = new Vector();
while (rs.next()) {
vc.add(
new Todofuken(rs.getString("NAME"), rs.getString("EMP_ID")));
}
return vc;
} catch (SQLException ex) {
ex.printStackTrace();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} finally {
try {
rs.close();
stmt.close();
conn.close();
} catch(SQLException ex){
ex.printStackTrace();
}
}
return null;
}
}


302 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 17:51
<TABLE>
<TBODY>
<%
Vector vc = dbBean.getVector();
Iterator iterator = vc.iterator();
while (iterator.hasNext()) {
EMP emp = (EMP)iterator.next();
%>
<TR>
<TD>
<% out.print(emp.getName()); %>
</A>
</TD>
<TD>
<% out.print(emp.getEmp_ID()); %>
</TD>
</TR>
<% } %>
</TBODY>
</TABLE>


303 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 17:52
301
誤)
new Todofuken(rs.getString("NAME"), rs.getString("EMP_ID")));
正)
new Emp(rs.getString("NAME"), rs.getString("EMP_ID")));


304 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 17:56
DBBeanに切断用のメソッドを作っておいて
ResultSet渡しで
JSP側で
finally{
dbBean.close();
}
ではだめでしょうか?
検索結果ごとにデータクラスを作らなくていいので、
コードは少なくなりそうですが・・


305 名前: 299 投稿日: 2001/07/11(水) 18:09
>>304 JSP への forward に失敗したらどうする?やるなら
チェーン元 (サーブレット側) でやれ。APサーバでDB
接続の開放忘れはかなりクリティカルだぞ。

って、よく見たら JSP 内完結型か…。

一人で作る分には JSP 内で finally も Vector 返しも良いが、
せめて Iterator か Enumeration にしといたほうが後で幸せ
かもな。それから JSP 内でレコードを取り出す場合に SQLExcepiton
が発生したらどうするんだ?ページのレイアウトが中途半端に
崩れることになるぞ。


306 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 19:30
なかなか経験豊かな方のようですね。アドバイス参考になります。
エラーページのことは考えてなかったですが、例外をキャッチして、
エラーページにforwardにするのかなと思ってます。
これは仕様によってでしょうけど。

サーブレット側でVectorに検索結果を格納するのと、
JSP側で展開するのでロープが2度になるので、
ちょっとスピードが気になるのですが、このあたりは
安全な方法で作ってみて、とろかったらスピードを上げてこうと思います


307 名前: 299 投稿日: 2001/07/11(水) 20:24
> サーブレット側でVectorに検索結果を格納するのと、
> JSP側で展開するのでロープが2度になるので、
> ちょっとスピードが気になるのですが、
まぁメンテナンシビリティ+拡張性と速度とのトレードオフという
いつものパターンだな。多分その程度ならDBの検索速度で十分
相殺されると思われる (レコードが数千まで逝ったら設計変える
必要があるが)。リソースが十分ならサーバサイドの Java は
かなり速いぞ。そしてクライアント1台落ちるのとサーバ1台落
ちるのじゃ規模が違うからな。とりあえずサーバサイドは安全に
動くもの作れや。パフォーマンスネックの検証するのはその後でも
十分だろう。

一人でわめいてみたが、人の好みにもよるので強制する気はない。
まぁ自分の好きなように楽しめや。


308 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 21:43
やっぱりJSPかなぁ。自作のHTMLライブラリで、
構築しているが、デザイン変更すんの面倒だからなぁ。
HTLMテンプレート利用すんのじゃだめ?
DB接続もSQLで陽にコントロールできるし楽だと
おもうんだがなぁ。


309 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 22:22
JSPとXML+XSLTって相性悪くない?そんなことない?
両方を一度に使うのってありえるのかな?
表示に関する処理をやらせるって考えるなら、
xalanなんかの処理をJSPの中でやることになるけど、
なんだかなぁ。。。


310 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 22:26
>>301
話それるけど、ちゃんとimplements Serializable
しようよ。
>>302
<% out.print(emp.getName()); %> じゃなくて、
<%= emp.getName() %> でしょ、ふつう。


311 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 22:36
>>309
条件入力のフォームはJSPで検索結果はXML+XSLT、って感じで使ったことはあるけど
両方同時にってのは無いなあ。


312 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 22:42
>>297
結果が200行程度ならServlet側でDBとの接続は完結しといた方がいいと思われ。
DWHのフロントエンド作るとかならいろいろ考えるところだが。


313 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 23:03
>310
ObjectOutputStreamにする気はないんですが
implements Serializable
すると何かいいことあるんでしょうか?
サーブレットの本とかでよくimplementsしてるんですが、
いまだに理由がわかりません

<%= emp.getName() %>
確かにそうですね。ありがとうございます!


314 名前: デフォルトの名無しさん 投稿日: 2001/07/11(水) 23:53
>>313

>implements Serializable
>すると何かいいことあるんでしょうか?

永続化できる。


315 名前: デフォルトの名無しさん 投稿日: 2001/07/12(木) 17:27
<SELECT name="hoge">
の値をservletで
request.getParameter("hoge");
すると選択されている値でなくて、
選択されている値の順番が出てしまいます。
値を受け取るにはどうすればいいのでしょうか?


316 名前: デフォルトの名無しさん 投稿日: 2001/07/12(木) 17:33
>>315 <OPTION> タグに VALUE 属性付けてないだろ。
HTML の入門書嫁。


317 名前: デフォルトの名無しさん 投稿日: 2001/07/12(木) 17:34
>>315
順番ってなに?


318 名前: デフォルトの名無しさん 投稿日: 2001/07/12(木) 17:35
>316
valueに番号が入っていました。
大変失礼しました


319 名前: デフォルトの名無しさん 投稿日: 2001/07/12(木) 17:37
はずかしいなぁ、もう。ってネタか。。。

ところでJakarta関連のツール、みんな使いこなしてる?
おれ、Antぐらいしか使ってないんだけど他のものはどうなんだろう


320 名前: 310 投稿日: 2001/07/12(木) 20:57
>>313
Beanをsessionに格納するときに、Serializableにして
永続化できるようにしておかないと、クラスタを組んでる
場合や、DBにセッション情報を持たせるようにした場合に
正しく動作しなくなります。

世の中に出回ってる書籍や雑誌の例では、Serializable
にしてないものも多いので注意しましょう。


321 名前: デフォルトの名無しさん 投稿日: 2001/07/12(木) 23:06
なるほど
sessionに入れるものが絡んでくるんですね
昨日いろいろSerializableの理由を考えていて、
APサーバーと関係があるのはなんとなくわかったのですが。
これですっきりしました


322 名前: 名無しさん 投稿日: 2001/07/12(木) 23:38
>>313
>>314も分かってないから安心しろ。


323 名前: ≠314 投稿日: 2001/07/12(木) 23:51
>>322 言ってる事は正しいと思うが...
ひょっとしてセッションを恒久化できると読んだ?
そういえば知らない人が見たらそう読めるかも。


324 名前: デフォルトの名無しさん 投稿日: 2001/07/12(木) 23:58