トップページ⇒tech
967コメント369KB

JAVAサーブレットQ&A

■ このスレッドは過去ログ倉庫に格納されています
0001厨房 NGNG
日本語の参考書のまったく出てないサーブレット。
それに関するQ&A

0002名無しさん@お腹いっぱい。 NGNG
>> 1
ttp://www.t3.rim.or.jp/~yoko-k-h/java/servlet/reference.html#Books
を挙げておく。最近だともっと増えているね。

0003名無しさん@お腹いっぱい。 NGNG
掲示板程度でもサーブレットで組んだら何か良いことありますか?
0004>3 NGNG
掲示板程度なら生産性とかあんまり関係ないのでPHPの方が軽い分だけ適しているでしょう。
0005名無しさん@お腹いっぱい。 NGNG
SevletよりJNIの方が参考書は少ない。
実用性はJNIの方が高いと思うんだけど。
0006名無しさん@お腹いっぱい。 NGNG
JNIはただのインターフェースなので、ソース見てすぐに使えるけれど、
サーブレットは色々と細かいTipsがありそう。性能とか。
0007名無しさん@お腹いっぱい。 NGNG
とりあえず数冊出てるので間違い。>>1
0008名無しさん@お腹いっぱい。 NGNG
JavaServletっていまいちよくわかんないんですけど、
簡潔に説明して下さいませんか
0009名無しさん@お腹いっぱい。 NGNG
8>サーバーサイドジャバだよん

0010名無しさん@お腹いっぱい。 NGNG
XMLの本はスゴイ勢いで増えてのに・・・
なぜサーヴレット本はすくないの?
東鳩サーブレット ぽっぽっぽ
0011名無しさん@お腹いっぱい。 NGNG
ServletはCGIのようなシステムの代替案でしかない。

XMLはテキストデータフォーマットの標準化共通化の
最右翼。これがディファクトスタンダードになれば
どんだけのコストを削れるか。。。
0012名無しさん@お腹いっぱい。 NGNG
EJBとサーブレットっていまいち違いがわからない

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

って感じ?
両方勉強するひつようあり?
0013名無しさん@お腹いっぱい。 NGNG
11>
今まで彼女がいなかった奴がはじめて女ができた
ずっともてもての奴が今の彼女に飽きて違う女にしてみた

みたいな〜
0014厨房 NGNG
サーブレット初心者でもわかりやすい解説のあるHPありますか?
http://home.catv.ne.jp/dd/chiba/ken/Java/JavaMain.html
0015名無しさん@お腹いっぱい。 NGNG
>7はコテコテの理系っぽい.
0016名無しさん@お腹いっぱい。 NGNG
つーか厨房がサーブレットで何やるんだよ?
0017名無しさん@お腹いっぱい。 NGNG
XMLを動的に生成する場合だとServletの人気が高いですよね。
なぜなんだろ?
0018名無しさん@お腹いっぱい。 NGNG
自分が勉強しないことを棚に上げて資料が少ない
とほざいてる?
0019名無しさん@お腹いっぱい。 NGNG
Servletってのは CGIみたなもの。
特徴としては Perlの様に毎回起動されないので
・そのぶんのレスポンスが速い
・ServletEngine内である程度の永続性があるのでセッション管理が楽ちん
・Perlみたいな便利な正規表現は(標準では)無い
・Perlみたいなヒアドキュメントも無い(Printの嵐)
・Javaがネットワークに強いので負荷分散とかが楽チン

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

EJBってのは Beanの一種
J2EEに準拠したコンテナで管理されます。
一般にはDBと連携してることが多いです。
0020名無しさん@お腹いっぱい。 NGNG
んで Servlet自体はインタフェースなんで使い方っていっても
本を書くまでも無いことなんだと思います.
ServletEngineまわりのKnowHowのほうは必要あるかも。

引数がどうやってわたってきて どうすれば出力できるかって
ところだけ理解しちゃえば あとは普通のプログラムです。
Java特有の機能をつかっていろいろするのは また別の本を
読むのがいいでしょう
0021名無しさん@お腹いっぱい。NGNG
>>18
同感。
少なくともJavaでコード書いたことあるやつなら
そのへんのHPでServletの簡単なプログラムの作り方
ぐらいは理解できる。そうすれば、次は排他制御とか
インターフェースの切り分け方とか具体的な疑問が
出てくる。じゃぁそういうこと書いた本はありませんか
という質問に最低なるもんなんだが...
もしかするとJavaすらやったことないのかも。だったら
まずServletよりも前の段階で学ぶことはいっぱいある。
0022>21NGNG
排他制御とか インターフェースの切り分け方とか書いた本はありませんか
0023名無しさん@お腹いっぱい。NGNG
排他制御とインターフェースの切り分けってなんですか?

DBとかの排他制御みたいな感じ?
0024名無しさん@お腹いっぱい。NGNG
htmlを生成するとき

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

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

ってやるのって違いはでる?
面倒なので後者でやる場合が多いけど
(JSPを使えばいんだろけど)
0025名無しさん@お腹いっぱい。NGNG
誰か、MSのCOM+と比較してほしい。
0026名無しさん@お腹いっぱい。NGNG
>24

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

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

もし聞かれたらこんな感じで答えるけど、満足?? >> 22
002821NGNG
そいや、クライアントから渡された文字列がgetParameter*()で文字化けとかも実際にやっていれば出そうな疑問だけどこういう実装依存なとこがある話は書籍だとつらいですか。かえってMLとかのアーカイブ検索したほうがいいかもね。
0029名無しさん@お腹いっぱい。NGNG
>> 24
後者は以下のコードと同じ.

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

なんのことかわからなかったらまず String の API Document を読め.
0030名無しさん@お腹いっぱい。NGNG
multipart/form-data もサポートされてないね
003122NGNG
満足っす
0032名無しさん@お腹いっぱい。NGNG
26>29>
満足っす

まずはJAVAからっすね。
サーブレット書きながら、
いきつもどりつ勉強しとります。
0033名無しさん@お腹いっぱい。NGNG
cookieのことなんですが、IE5.5とJSQDK-1.0.1を使ってます。
cookieをブラウザに送って、ブラウザからクッキーを受け取ることは
できるのですが、そのcookieがどこにできたのかなぞです。

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

0034名無しさん@お腹いっぱい。NGNG
インターネットキャッシュの中にないか?
0035名無しさん@お腹いっぱい。NGNG
ないんですよ〜

すごいなぞ

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

0036>33NGNG
クッキーが実際にファイルに書き込まれるのは、
ブラウザを閉じたとき。
0037>28NGNG
MVCの切り分け、悩みます。切り分けとはいえ、MVCそれぞれ
の結合度が強く、例のアーキテクチャパターンの本に書いて
あるデメリットをまともにくらいました。

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

ありがとうございます!
0039名無しさん@お腹いっぱい。NGNG
VisualAge3.5についてるWTEって
サーブレットチェーンできんのかあああ!?
0040名無しさん@お腹いっぱい。NGNG
素直にWebsphereそのものを入れちゃいえばいいのに。
開発者ならタダだよね。
0041>40NGNG
39には同感。
40の言うことは正論なんだけど。
WSS+VAJ+WAS+DB2をまともに動かすには512MBくらいメモリ必要でしょ。
うちはビンボーだし。マシン買うには上の上の上まで説得しないと
稟議通らないし。

004239NGNG
業務でもWebsphere使ってません。
っていうか今はJavaの仕事してません。

仕方ないので、JavaWebServer落として来ました。
004340NGNG
>>41
>うちはビンボーだし。
あらら、それは失礼。
0044???????????????BNGNG
VAJの無料バージョンにもサーブレットのテスト環境みたいのあるの?
J2EE対応でタダのRAD ないか
00455流SENGNG
>例のアーキテクチャパターンの本
ってどの本でしょうか?
サープレット/JSPを使ったシステムのいい見本
って有りませんか?どうも、自分の設計に自信が
もてないんですが。
0046名無しさん@お腹いっぱい。NGNG
charset=iso-2022-jp
にしてもネットスケープで文字化けします

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

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

いろいろ試して頭が混乱してしまいました
0047名無しさん@お腹いっぱい。NGNG
>以下の過程で使用すべき文字コードってなんでしょうか?
>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の指定をしてみよう。
004847NGNG
付け加えるけど、2と3のどちらかでcontent-typeのcharsetを指定していない場合は、
デフォルトでus-asciiが指定されたと規格上は見なされるから、二つの間で矛盾が生じる。
ただhttp転送においてレスポンスヘッダ中のcontent-type:ヘッダは必須だから、ここ(3)での
charsetの指定も必須となる。だから、2のMETAタグ中でcontent-typeの指定は,やらないほうが
無難ね。<META>タグ中での指定が必須となるのは、ユーザがブラウザの保存機能で
htmlデータをローカルに保存することが想定される場合。この場合は、メタ情報がなくなる
から、htmlデータ中にメタ情報を置く必要がある。
004947NGNG
文章わかりにくいなぁ。反省。
>デフォルトでus-asciiが指定されたと規格上は見なされるから、二つの間で矛盾が生じる。
(2と3のうちcharsetを指定していない側のcharsetは)デフォルトで〜〜、二つの間で矛盾が生じる。
ね。
0050名無しさん@お腹いっぱい。NGNG
ありがとうございます!

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>");
005147NGNG
>1 ソースを書く文字コードは何を使ってもOK。
基本的にはプラットホーム依存だけど、-encodingオプションで
明示的に指定してあげる限り、なに使ってもOK。それ以上は
あなたの環境がわからないので答えられません。

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

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

0053名無しさん@お腹いっぱい。NGNG
>基本的にはプラットホーム依存だけど、-encodingオプションで
> 明示的に指定してあげる限り、なに使ってもOK

エディターで書かれたコード
↓
コンパイル時にコードを使用しているコードを明示指定
↓
unicodeに変換される

ですよね

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

とりあえずエディタで使用する文字コードの謎はとけました
ありがとうございます
0054JRun3.0NGNG
Apacheを1.3.6から1.3.14へバージョンアップしたのと同時に
JRunも2.3から3.0へとバージョンアップしました。
ところが、これベンダーが代わったらしく
管理ツールが大幅に変更になってしまいました。
おかげで、サーブレットのクラスファイルを何処においていいのやら
さっぱりわかりません。
ドキュメントを探しても2.3のばかりです。
3.0の有用なドキュメント等ご存知でしたら教えてください。
0055名無しさん@お腹いっぱい。NGNG
>54
adminServerを立ち上げるとチュートリあるがでてくるから、
そのとおりにやってみては?
日本の資料は確かにふるいんで訳に立たなくて苦労した想い出がありました
00566流SENGNG
>45
>>例のアーキテクチャパターンの本
>ってどの本でしょうか?

"Pattern oriented software architecture -- A system of patterns"
個人的に、GoFのDesign Pattern よりもわかりやすく面白いと
思ってます。
0057名無しさん@お腹いっぱい。 NGNG
ていうか、JAVAってSUNに超大金払うか、パートナーにならないと
サポートしてくれないんだろ?ってことは所詮お遊び言語としてしか
使えないような気がするんだが・・・・・
JSPでシステム構築しても、結局は信頼性がおけない。
そんなんだったらASPでコード書いた方がマシってスレ違いですか?
すいません。
0058名無しさん@お腹いっぱい。NGNG
>57
今ごろ何言ってんの
使ったこと無いくせに
0059名無しさん@お腹いっぱい。NGNG
あの〜JRUN3.0のdefaultServerがどうも不安定です。
restartをかけて、ブラウザからアクセスすると、
「このサイトは大変混雑うんぬん」と言われてはじかれます。
ポートを8100から8010とかにかえてみたりしたのですが、
どうもつながったりつながらなかったりです。

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

同じような現象が起きたかたいらっしゃいますか?
0060名無しさん@お腹いっぱい。NGNG
tomcat使ったら?
0061名無しさん@お腹いっぱい。NGNG
EJBも使いたいのです

0062名無しさん@お腹いっぱい。NGNG
ASPに戻ったら?
0063名無しさん@お腹いっぱい。NGNG
.aspならスレ違い
0064はとサーブレットNGNG
JRunってJ2EEのペットショップみたいなサンプルついてないのですか?
0065名無しさん@お腹いっぱい。NGNG
なんかPDFの詳細なマニュアルにJ2EEの解説も詳しく書いてあった
>JRUN

EJBのセッション管理とかってSERVLETより楽そうなんだけど、
やっぱりどっちも勉強すべき?
EJBをメインで足りない所をServletで補うスタイルで
勉強すべきかなぁ
0066はとサーブレットNGNG
>65
C:\Program Files\Allaire\JRun\docs\pdfのマニュアルですか?
英語やないですか。
0067NTTGMNGNG
http://www8.tok2.com/home/NttWkk/
0068名無しさん@お腹いっぱい。NGNG
66>
/opt/jrun/docsのなかのPDFです

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

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

とか言いつつ日本語でEJBの解説ページないかな〜
って聞いてみたりして
0069名無しさん@お腹いっぱい。NGNG
会社のIIS3.0にこっそりJRUNとかTOMCATをくっつけてみたいのですが、
あとで簡単に戻せますか?

JRUNのマニュアルを詠んだられIISの設定を書き換えちゃうようなことが
かいてあったんでちょっと恐いです
0070名無しさん@お腹いっぱい。NGNG
>69
こっそりとではなく責任をとるつもりでやれ。
0071えっ!NGNG
>>47
もしかして、

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

とかやるのって最低っすか?
よくやっちゃうんですけど。
0072あぅ。NGNG
>>71
しまった。間違った。

A = new String(A.getBytes("8859_1","JIS_AutoDitect");
>A = new String(A.getBytes("8859_1","JIS_AutoDitect"));
だ。右括弧1こ足んなかった。
0073名無しさん@お腹いっぱい。NGNG
47のはソースで使うの文字コードで
これはpostされる文字なんでいいんでないの?
自分で決められないし。
007447NGNG
>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だった気がする。
007571=72NGNG
73&74さん
 レスありがとうございます。
 47さんの「getBytes最悪」で、getBytesだけに意識がいってしまいました。
 で、8859_1は、BEAのサイト(アドレス失念)のオラクルとの接続、とかいう所に
 あったのをそのま使ってました。
 そろそろUTF-8って方も勉強しなくちゃ、なんですね。
 もっと精進しなくては。
0076名無しさん@お腹いっぱい。NGNG
JavaアプレットからはネットワークJDBCドライバでDBアクセスするわけですが、
Javaサーブレットからは何でDBアクセスするんですか?
サーバ側で実行するからJDBC-ODBCブリッジですか?

あと、サーブレットがアプレットより優れている点て何ですか?
0077名無しさん@お腹いっぱい。NGNG
サーブレットもJDBCですよ

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

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

0078名無しさん@お腹いっぱい。NGNG
>>68

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

これくらいっきゃ知らねぇ。
他にもぼしゅー
0079名無しさん@お腹いっぱい。NGNG
age
0080今皿NGNG
76さんの質問は
CGIがJavaScriptより優れている点は何ですか?
という質問と同質ですね。
0081名無しさん@お腹いっぱい。NGNG
79>サンキュー
0082名無しさん@お腹いっぱい。NGNG
JSPなんですけれど、上手く理解できない部分がありました。

<%@ include file="hogehoge.jsp" %>
と
<jsp:include page="hogehoge.jsp"/>

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

CQ出版社の「OPENDESIGN増刊 JAVA SERVER PAGE詳細」て本を
買ってみましたけれど、「動的/静的なリソース(ファイル)」
という言葉が漠然とあるだけで、よく理解できませんでした。
0083名無しさん@お腹いっぱい。NGNG
>>82
実行結果をインクルードするのと、実行前のソースをインクルード
することの違いじゃない?
0084名無しさん@お腹いっぱい。NGNG
あげるべきか、上げざるべきか。上のスレでservletの話題出てないから
定番スレってわけでもなさそうなので、とりあえずageず。
0085名無しさん@お腹いっぱい。NGNG
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
0086名無しさん@お腹いっぱい。NGNG
問題がしぼれたのでもう一度整理します

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

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

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

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

servletフォルダ以下にはappletを置いても呼び出せないのでしょうか??
0087名無しさん@お腹いっぱい。NGNG
Apache + TOMCAT3.2 final 使ってるんですが、マニュアル通りサーブレットの
置き場所としてmyappをbuild.batでビルドしたらエラーが出ました。
TOMCAT3.2のバグですかね?
Apacheのクラスがないみたいなエラーでした。
0088名無しさん@お腹いっぱい。NGNG
>87
build.xmlの13行目が/>でxml的に閉じられていないようです。
あと、CLASSPATHにtool.jarが要ると思います
0089名無しさん@お腹いっぱい。NGNG
>>86
>servletフォルダ以下にはappletを置いても呼び出せないのでしょうか??
馬鹿すぎて放置されているようだが…できません。
0090名無しさん@お腹いっぱい。NGNG
ありがとうございます
0091バカ学生NGNG
すいません、セッションについて教えてください。

A、B、Cと3つのサーブレットがあります。
Aでログイン(認証)を行い、成功すると、セッションを生成して、
Bにリダイレクトして、BのdoGetを行います。
このときは、URLにも、sessinID(ながい文字列)が付いていて、
特に問題はありません。
その後、Bのdogetで生成されたHTMLフォームに対して書き込み、
BのdoPostを行い、CのdoGetへ、リダイレクトします。
このとき、Cでsessionがgetできないのです。
Aで生成したセッションは、Bをまたいで、Cに持っていくことは
できないのですか?または、私のプログラムミスですか?
どうぞ、よろしくお願いします。
0092馬鹿社会人NGNG
>>91
頭いいよ。
俺の方が馬鹿だ。
0093名無しさん@お腹いっぱい。NGNG
>>91
関係ないけど、
HttpSession て クッキーでやるんじゃないの? クエリー使うの?
実装依存という気もしますが。
逃避的回避策としては
RequestDispatcher.forward 使うのはダメですか。

0094バカ学生NGNG
ありがとうございます。

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

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

RequestDispatcher.forwardというのは、初めて見ました。
APIで調べても、いまいちわからず・・・
サーブレットの日本語APIなんてあるのでしょうか。。。
0095名無しさん@お腹いっぱい。NGNG
>>94
HTTP 自体にセッションという概念はなくて、
(基本的に毎回接続しなおすと思って良い)
HttpSessionっていうのは、クッキーなりクエリーなりを使って
そういう下回りを意識せずに
セッション == 永続的な接続情報保持を
実現する仕組み(というかクラス)です。

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

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

0096名無しさん@お腹いっぱい。NGNG
原田洋子の「JavaServlet」って本。序盤から誤記・誤字だらけ
勘弁してくれ
0097名無しさん@お腹いっぱい。NGNG
>>96
個人名を出すな!
っていうかプログラム系の本って間違いだらけじゃない?(特に個人が執筆してるやつ)
自分も DirectX の本買って書いてある通り覚えたら思いっきり間違ってた。
たまたま自分のコンピュータでは動いてたが他のコンピュータで動かしたら
起動しなかったり途中でハングったり大変だったよ。
0098バカ学生NGNG
91の問題はクリアしました。
session変数を、メソッドの中でなく、外で
グローバル宣言(?)したらできました。。
メソッド内だと、だめなんですか?

ただ、サーブレット間を行き来するときに、
なぜかセッションが消えていたり、復活していたり、
なんか動きが怪しいです。
0099名無しさん@お腹いっぱい。NGNG
<<98
それだと thread-safe じゃないのでヤメてください。
つーか getSession で毎回取得すればいいのに。
0100名無しさん@お腹いっぱい。NGNG
>>97
だって7刷もしてるのに全然訂正が入らないってのはひどいじゃない。
初心者向けの本だってのにさ。
0101バカ学生NGNG
>>99
thread-safe というのがわからないのですが。。

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

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


■ このスレッドは過去ログ倉庫に格納されています