トップページphp
984コメント425KB

■■ Servlet/JSP(EJB含む) 質問スレ ■■

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/06/08 11:03ID:Kkr1yl67
って無いよな?
というわけでつくたよ。
0467nobodyさん02/12/22 00:13ID:???
>>466
管理コンソールかどこかに設定なかったっけ?
0468nobodyさん02/12/22 01:59ID:???
>>465
とりあえず、 request.getSession().getId().length() を、
どこぞにout。

参考↓
ttp://java.sun.com/j2ee/sdk_1.3/ja/techdocs/api/index.html
046946802/12/22 02:01ID:???
あ、ちなみにrequestは、JSPの暗黙インスタンスでもいいし、
Servletの doGet (あるいはdoPost) の引数でも良い。
0470nobodyさん02/12/22 14:08ID:5C2ox88F
Session管理って、もっとも確実でセキュリティの高い方法は、結局
のところHIDDENフィールドなんですかね?コーディング大変だけど・・・

SessionオブジェクトなんかはCookieを無効にされたら一発でアウトだし、
URL Rewriting はセキュリティ的に問題あるし・・・
0471nobodyさん02/12/22 14:10ID:???
>>470
Cookie も HIDDEN も URL Rewrite も平文パケットが飛ぶのは同じ
素直に SSL 使いなはれ
0472nobodyさん02/12/22 14:19ID:???
>>470
てゆーかHiddenって...。ソース見られたら終わりでは..。
0473age02/12/22 15:13ID:5C2ox88F
Servlet API のクラスの仕様が乗っている J2EE DOC ってのが
あるらしいのですが、見つかりません・・・

どなたか場所をおしえてください・・・
0474nobodyさん02/12/22 15:25ID:???
http://java.sun.com/j2ee/sdk_1.3/ja/techdocs/api/index.html
0475nobodyさん02/12/22 16:28ID:xvh5bsxK
Servlet Specよめ。
べつのServlet Context(別のWAR)では、Sessionは別になるってことは
Servlet Spec2.2 からの常識だろ。

Sessionを共有したいのなら、ひとつのWARにしろ。
0476nobodyさん02/12/22 19:24ID:???
>>475

IBMのWAS使ってるのなら、WASv4.0.4からはEARワイド(WAR間)でセッション共有できる
独自拡張機能があるでよ。WASv5なら最初から入ってる。
0477nobodyさん02/12/22 23:22ID:???
>>474
ありがとう!
0478nobodyさん02/12/23 13:04ID:sOBBiOys
destroyメソッドを実行させたいのですが、
もっとも簡単なテストの方法は何ですか?

Tomcatを再起動させるしかないのでしょうか?
0479nobodyさん02/12/23 13:51ID:???
System.gc();
運がよければ実行される。

Tomcatの再起動じゃdestroy()は走らないでしょ
0480nobodyさん02/12/24 12:35ID:SRQOAFB0
>476
WASv4.0.3を使用しています。
WASv4.0.4のEARワイド(WAR間)でセッション共有できる
独自拡張機能の詳しい資料や参考URLとか、ありませんか。
0481nobodyさん02/12/24 18:05ID:dttvkCa8
>>476
>>480
そんなもの、使うな。
Specじゃないけど、用意されているっていうことは、
そのデメリットを本当に考慮している人だけが後ろめたい気持ちで
コッソリと使うものだ。

素人は、素直にSpecどおりにしておけ。傷が広がらないうちに。
0482nobodyさん02/12/24 23:47ID:???
>>478

はい。このリリースノートみてみ。

ftp://ftp.software.ibm.com/software/websphere/appserv/support/fixpacks/was40/fixpack4/docs/404rn.html

でも479氏の言うとおりだと思うね。
積極的に使っていい機能ではありえない。
これを前提とするとポータビリティ性は根底から皆無になるよ。
将来的にまたWASがすっぱりこの機能を削るかもしれないことも
考えよう。
おんなじようなものとしては、WASv5でのセッション同期化機能も
そうだろうな。synchronized(session){...}や
synchronized(session.toString().intern()){...}を
しなくてもよくなるというものだろうけど
これも使うときは要注意ではないかな。
0483nobodyさん02/12/26 16:04ID:eh9DbOka
>>481
WASを V4.0.4にしました。
どうしてもWebApp間でセッション共有を行う為に独自の拡張機能を使用したいのです。

V4.0.4の新機能に、
@「Enterprise Application内でのWeb Application間のSessionの共有」
というものがあります。

また、拡張機能として、
A「Provide session sharing across Web modules in an enterprise application」
というものがあります。

これは、sessionshare.xml というファイルをWASのproperties配下に配置し、
内容は、セッションを共有したいEnterpriseAppnamesをカンマ区切りで記述する
と、セッションマネージャーがそのファイルを参照し、Enterprise Application内の
複数のWeb modulesでセッションを共有できるようになるそうです。

実際試したのですが、1つのear内に複数のwebAppを作成した場合は、複数のwebApp間
でのセッションの共有はできるようになりました。

しかし、複数のearにまたがるwebAppでは、セッションの共有はできませんでした。

Aの拡張機能としては、正しいと思います。
@の新機能は、V4.0.4をインストールした時点で使用できるのか、
それとも何か設定をしないといけないのかが分かりません。
ご存知の方、どうか教えてもらえないでしょうか。

参考URL:http://www-6.ibm.com/jp/domino01/software/websphere.nsf/NewsWeb/92
C9F03BD3ADD24849256C210024EFAB?openDocument&&ViewName=NewsWeb
0484nobodyさん02/12/26 23:03ID:???
>>481

> しかし、複数のearにまたがるwebAppでは、セッションの共有はできませんでした。

これはできませんよ。設定がどうこうではなく,EAR間の
セッション(HttpSession)共有はありえないのです。
ちょっと考えてみればなぜかはわかると思いますが。

もしそんなことをしたいというのであれば,それはEAR/WARの
パッケージングの粒度を見直すべきです。前提がそもそも
誤っているということですね。そうなるとHttpSessionではなく
アプリ側で独自のセッション引継ぎを実装するしかないでしょう。
0485nobodyさん02/12/27 00:46ID:JMAqBuKI
Tomcatでjspを使ったのWebアプリを動かしてるんですけど、
そのサーバーがファイヤーウォール内にあるので、
逆プロキシで外部からアクセスするようにしました。
しかし、逆プロキシ経由すると、そこで
sessionオブジェクトが消えてしまうみたいなんです。
こういう場合sessionオブジェクトは使えないんでしょうか?

なんとか動くようにしたいんですけど、
なにかいい手はありませんか?
0486nobodyさん02/12/27 00:53ID:GgzWBaJJ


http://berry6.hp.infoseek.co.jp/
パートナーのいない人は急げ!
まったり、しっとり過ごしましょ(o^.^o)

0487nobodyさん02/12/27 01:08ID:RsSYigkg
>>484
「WASv4.0.4のEARワイド(WAR間)でセッション共有できる
独自拡張機能」というのは、
「EAR内での複数のWAR間でセッション共有できる」
ということなんですね。
EAR間ではセッションは共有できない、またできる
べきものではないのですね。わかりました。
どうもありがとうございました。
0488nobodyさん02/12/27 01:35ID:???
1回のPOSTでservletが数回実行されてしまうの
ですが対策ありますか?
0489nobodyさん02/12/27 05:32ID:???
>>488
どういう状況下でそうなったか、まず書け。
「Servletが」とは「同じServlet」なのか「別のServlet」なのか。
「1回のPOST」は本当に1回なのか。
049048802/12/27 12:04ID:???
簡単に書いてしまい申し訳ない
「Servletが」とは「同じServlet」のことです。
それが一度に何度も実行されないように下記の
対策2のようなonsubmitをformに施しております
ttp://www.atmarkit.co.jp/fjava/javafaq/servlet/servlet12.html
しかしサーブレット側ではdopostが2−4回程コールされてしまうので
ござる。
0491nobodyさん02/12/27 12:06ID:???
>>485
同じような問題に遭遇したことがあるが解決法はしらない
誰かおしえてくれー
0492nobodyさん02/12/27 12:14ID:???
>>490
そのonSubmitに書いたコードが間違っている。

にしてもこのページ良くないなぁ。
なんにも考えない奴がこのページ見たらJavaScript挟むだけでだけで安心しちゃうよ。

クライアントサイドスクリプトなんていくらでも改変・悪用が可能なんだから、
サーバー側での対処は必須。
クライアントJavaScriptはユーザーの利便性向上以上の目的で使ってはいけない。
0493nobodyさん02/12/27 12:16ID:???
>>485,491
そのプロキシがヘッダ弄ってるんじゃない?
049449002/12/27 12:42ID:???
>>492
アドバイスありがとうございます
しかしonSubmitに書いたコードが間違っているとは思えないのです
submitを連打した場合はalertで警告を出し、return false;
していて、動きもそのとおりだから。
この2chでも書き込みすると2回書き込まれちゃうときってありますよね。
それを100%防ぐのはムリなんですかね?
あとstrutsに関してこんなサイトみつけました。
ttp://www.freeml.com/message/struts-user@freeml.com/0000867
このようなことはJSP&サーブレットでもできるものでござるか?
0495nobodyさん02/12/27 13:04ID:???
>しかしonSubmitに書いたコードが間違っているとは思えないのです

じゃぁネットワーク監視してPOSTが2回飛んでないことを確認したら?
アクセスログでも良いけど。
そうでなかったら受け取ったServletが自分自身のdoPostを余分に呼んでる。


>このようなことはJSP&サーブレットでもできるものでござるか?

できる。

ていうかサーバーサイドで対処する方法なんていくつもあるんだから、
その中から要求仕様に合ったものを自分で選べばヨシ。
049648502/12/27 17:51ID:pFyW/X+i
>>493
プロキシがセッションidを削ってました。どうもです。

Apacheのmod_proxyを使ってるんですけど、
削らないように設定する方法はわかりませんか?

あと、セッションidが削られるのを直せないとしたら、
sessionの代用は何をつかうのがいいでしょうか?
Stringを1つ保存するくらいなんですけど、
やっぱりクッキーでしょうか?
0497nobodyさん02/12/28 12:10ID:???
>>485
sessionidが削られる環境=cookieも削られる、筈。
ていうか、同一。
049849702/12/28 12:12ID:???
あ、>>485 ていうか、>>496 へのレス。
049949002/12/29 12:07ID:???
>>497
その場合ユーザー認証はどのようにして
実現します?
0500_02/12/29 12:12ID:LE3o8C1x






http://freeweb2.kakiko.com/dengeki/indexe.htm




0501nobodyさん02/12/29 12:14ID:???
Cookieでなく URL-rewriting にしたら?
050249702/12/29 13:30ID:TRvxBQ36
>>499

>その場合ユーザー認証はどのようにして

やっぱりDB使うしかないんじゃないかな。
そういうケースとか、"ロードバランサかましてる"時とか、
Session情報を保持できない時の常套手段。
0503nobodyさん02/12/29 13:52ID:???
どうしてSessionそのものとSessionを維持する手段を分けて考えられないのかね。
ここの連中はアホばっかり?

Cookie使えないならURLリライティング使えばいいだろ
DB云々なんてのは全然関係ない、レイヤの違う話。
0504nobodyさん02/12/29 15:16ID:???
>>503
>>501で既出な話をそこまで偉そうに言えるお前がすごい。
050549702/12/29 15:20ID:5NDJvXMb
>>503
あのね、漏れは、>>499

>その場合ユーザー認証はどのようにして実現します?

の、問いに対して「自分だったらこういうアプローチを取る」と、
答えただけなんだけど。...ていうか仕事で実際そうしてるし。

501=503 ?? 自分の意見が無視されたのが、そんなにくやしいのかね。
ていうか、「ユーザ認証の処理」に対して「URLリライティング」を適用するっていうのを、
>>499に具体的に提示してやれよ。それこそ、「レイヤが違うん」じゃないの?

話聞けよ。アホ。
0506nobodyさん02/12/29 15:54ID:???
ユーザー認証とSessionをごっちゃにしてる>>497の勘違いを指摘せずに
「DB使うしかない」なんて更に見当違いの話持ち出したってそれこそ泥沼だな・・・

Sessionさえ維持できれば497が既に知ってるであろうユーザー認証の手段が使える。


>の、問いに対して「自分だったらこういうアプローチを取る」と、
>答えただけなんだけど。...ていうか仕事で実際そうしてるし。

DBを使うことと認証がどうしてリンクするの?
きちんと理解できてないのならもう少しよく勉強した方がいいよ。
DB?コンテナが用意してくれているセッション管理の機構を自分で再実装してるのかね(笑
それともユーザー名とパスワードをリクエスト毎に持ちまわってるのかね(笑
050749702/12/29 20:30ID:V00Mpbw5
>>506
>DBを使うことと認証がどうしてリンクするの?

確かに話飛び過ぎたかもしれんが、漏れがやった具体的な方法というのは
>>506がシステム屋なら知ってると思うが)一般的に「そのWebシステムを使用するユーザ(例えばその会社の社員)」についての
情報ってのは、普通ソレ専用のDBに溜めてある。
で、単純にAPサーバにあるWebシステムに「ログオン」する時に、そこに保存してあるIDやパスとの比較を
行い、以降の処理を行う。

...っていうか普通のSEだったら、こんなの「何あたりまえの事言ってんの?」って感じだと
思うんだが...。
で、この後、

>Sessionさえ維持できれば497が既に知ってるであろうユーザー認証の手段が使える

これって、要するに「ログオン状態(State)の変遷の保持」の事言いたいんだよな。
で、ここでポイントになるのが漏れが>>502で言った、
「ロードバランサとかかましている時」=「Session状態をC/Sで一致させる為の手段が無い時」
に、どうするのか、って事。

いくらURLRewrite使ってもさ、もしロードバランサとかでAPサーバ振り分けられちゃったら、
「そのSessionIDに一致するインスタンスがサーバにない」って事になるよな。
(つーかクラスタ組めばいい感じになるAPサーバも世の中にはあるが)

要するにだ。もう一度>>502の漏れの書き込みを読んでみろよ。漏れの経験上の一意見として、

>そういうケースとか、"ロードバランサかましてる"時とか、Session情報を保持できない時の常套手段。

として、DBを使うって、言った、んだよ。
お前、実務経験無いだろ。学生か?
050849702/12/29 20:41ID:V00Mpbw5
>>507
自己レス。すまん。つーか「状態変遷の保持」。つまり、>>506>>503で言った

>どうしてSessionそのものとSessionを維持する手段を分けて考えられないのかね。

漏れは「Sessionが維持できない」ケースとして、例を出したんだよ。「こんな事あったな」って。
でその時はログオン後、仕方が無いので、要所要所でDBから読んで処理した。
(全部のWebページ毎、では無いが)
特に、インターネットに接続された外部のユーザがアクセスしてくる
システム(ただしそれほどクリティカルでない)で、かつそれぞれクラ環境がバラバラで、
Cookie使用禁止な所もあれば、プロキシの設定がアレな所もある。

最初は普通にSessionで管理していたんだが、客側の都合で「このままで動くようにしてくれ」
言われてしまった。で、こんな処理を書いた訳だ。

実際Sessionで管理できれば楽なんだけどな。ま、こんなケースもあると。
0509nobodyさん02/12/29 22:40ID:???
おちけつ
0510nobodyさん02/12/30 01:22ID:???
どうも自分の間違いを素直に認められない方のようで(笑

>>502
>>その場合ユーザー認証はどのようにして
>やっぱりDB使うしかないんじゃないかな。

「その場合」で無い場合(=Cookieが使用できる場合)のユーザー認証に
DBは必須ではないような書き方ですね。

>情報ってのは、普通ソレ専用のDBに溜めてある。

へー「DB」っていうのはそう言う意味で使ってたの。502と矛盾してますよ。
しかしずいぶん程度の低い話になったね。

>で、ここでポイントになるのが漏れが>>502で言った、
>「ロードバランサとかかましている時」=「Session状態をC/Sで一致させる為の手段が無い時」
>に、どうするのか、って事。

話がすり替わってるよ。
いつの間にこんな特殊な(※)環境の話になったのかね。
409の環境に関する情報は「Cookieが使えない」ぐらいしか出てないようだけど(笑
※素朴なServletコンテナの実装からすると特殊な、という意味ね。念のため

>お前、実務経験無いだろ。学生か?

実務経験あってもわかってなきゃ意味ね−な。理解してる学生バイトの方が数倍使えるよ(笑
051149702/12/30 03:37ID:5wRLF/Jd
>>510
今このスレ遡って読み返してみた。正直な話、いつの間にか話飛んでたよ。
間違いがあったのは認める。...ムカつくけどな、お前。
ガキの噛み付き方丸出しだし。
(って、それに煽られて興奮気味になんだかわからない事書き込みしてる漏れも相当ガキ丸出しだが....)

つーか元の話ってのは、「Sessionが削られている」から始まって「ユーザ認証ってどうしてます?」
って話だろ?
それで、漏れは>>508に書いたような事が勝手に頭によぎってそう書いたんだよ。
つーか「理解してる学生バイト」(ちなみにシステム屋で学生バイトなんているのか?)
ならわかると思うが、

>話がすり替わってるよ。いつの間にこんな特殊な(※)環境の話になったのかね。

と思うなら、

>へー「DB」っていうのはそう言う意味で使ってたの。502と矛盾してますよ。

矛盾なんて無ェだろ。

つーか、もう、なんか元の話と関係無くなってるので、この辺で。
他の方々、アホさらしてすんません。
0512初心者02/12/30 07:07ID:UlqXA/Qv
これからJSPを始めようとしているんですが、誰か、
>>34>>55で紹介されてる、

Apache_1.3.22-Mod_SSL_2.8.5-OpenSSL_0.9.6b-WIN32.zip
OpenSSL-0.9.6c-Windows.zip
jakarta-tomcat-4.0.3.zip
の3点をうぷして頂けないでしょうか?

後、>>55さんのページに書かれてた LawWebOffice モジュール とは何ですか?
これも必要なんでしょうか?

よろしくお願いします。
0513nobodyさん02/12/30 12:50ID:???
>>512
場を和ませようとしたのか?
まずぐぐれ
0514nobodyさん02/12/30 17:21ID:???
なんか荒れてるねー。つーか荒れてる訳では無いのか。
不毛な争いはちょっと置いといて...。

>>512
とりあえず
Apache関係の日本の総本山 → http://www.apache.jp/
JAKARTAプロジェクト関係の日本の総本山 → http://www.ingrid.org/jajakarta/
行ってみれ。
0515まーまー02/12/30 17:36ID:???
>>511 (497?)
オレもSEのはしくれなので言いたい事はわかるんだけど、
相手の環境考えなきゃ。それこそその筋の人間なら、頭の中で話つながるんだけど、
自宅でサーバ立てようって向きには、「何言ってんの?」って思われても仕方が無いと思う。

>>510
Sessionと、Session維持を分けて考えろとか、良いとこ突っ込んでんだけどねー。
君、口悪すぎ(笑)

肩持つ訳じゃないけど、511は本人も言ってる通り、「そういう例」を
ただ何の気無しに言ったんだと思うよ。経験した話として。
たぶん、これってただそれだけの話。
0516初心者02/12/30 17:42ID:UlqXA/Qv
いや、マジなんすけど。
直でぐぐってもヒットしないし、>>514さんの辺りを見ても中々見つかりません。
0517nobodyさん02/12/30 20:34ID:???
>>516
ttp://www.apache.org/
ttp://jakarta.apache.org

このくらい、押さえとけ。
0518初心者02/12/30 22:14ID:UlqXA/Qv
>>517
バージョンの違う奴なら落として>>56のページを真似してみたんですけど、
どうしても上手く起動しません。
Apacheのhttpd.confの継ぎ足した所のSSLについての部分でエラーが起きている
みたいなんですが、ページに書いてあるのと同じバージョンなら上手くいくので
はないかと思いまして。
0519nobodyさん02/12/30 22:28ID:???
2ちゃのServlet関係スレってレベル低いね〜
質問者は仕方ないとして、答えてる奴の8割くらいは、ただの素人だな…

たまにマトモな奴もいるようだけど…

0520nobodyさん02/12/30 22:32ID:???
>>518
Apache2.0系とApache1.3系はモジュールの実装の仕方が違うぞ!
ついでに、Tomcat3.X系と4.X系も違う!

古いバージョンが欲しいのなら、>>517 のサイトをくまなく探せ!
必ずあるから!
0521初心者02/12/30 22:48ID:UlqXA/Qv
>>520
ありがとうございます。
Apacheは、Apache_1.3.27-Mod_SSL_2.8.12-OpenSSL_0.9.6h-Win32.zip
SSLは、OpenSSL-0.9.6h-Win32.zip
Tomcatは、jakarta-tomcat-4.0.6.zip
を解凍して使用しました。

http://members.tripod.co.jp/emasuken/open/apache_mod_ssl_tomcat.txt
の通りにしようとしたら、出来ない所がいくつかありまして。
たとえば、c:\app\opensslの下にbinディレクトリは存在しませんでした。

>>517のサイトも、もう一度まわってみます。
0522nobodyさん02/12/30 23:51ID:???
>>519 のレベルの高い回答望む。俺ら素人だから。
0523nobodyさん02/12/31 00:33ID:???
(・∀・)バカガツレタ
0524初心者02/12/31 08:15ID:UeevlrXN
やっぱり、全く同じバージョンのは見つかりませんでした。
OpenSSLを解凍してもbinディレクトリが出来ない場合、作ればいいのでしょうか?
0525初心者02/12/31 08:31ID:UeevlrXN
SSLキーの作成って所が全く上手くいかないんですよね。
コマンドプロンプトで、以下のように命令を送ると、
C:\app\openssl\bin>openssl req -config openssl.cnf -new -out my-server.csr

以下のエラーが出ます。
Using configuration from openssl.cnf
error on line -1 of openssl.cnf
812:error:02001002:system library:fopen:No such file or directory:.\crypto\bio\bss_file.c:104:fopen('openssl.cnf','rb')
812:error:2006D002:BIO routines:BIO_new_file:system lib:.\crypto\bio\bss_file.c:106:
812:error:0E064002:configuration file routines:CONF_load:system lib:.\crypto\conf\conf_lib.c:91:
0526nobodyさん02/12/31 12:28ID:???
>>524

Apach Tomcat OpenSSL

の内、どれが見つからないんだ?
で、お望みのバージョンはいくつなんだ?

Tomcat4.0.3と4.0.6は、セキュホ対策以外は同じ物だぞ!
0527nobodyさん02/12/31 12:53ID:???
>>525

http://bitlink.co.jp/server/win_apache.htm
0528nobodyさん03/01/01 05:43ID:3/OpWna1
質問なんですが、今ここにAServletとBServletがあるとします。
これらはそれぞれ、本来は別々のリクエストで起動するのですが、
ある時だけ、AServletからBServletにdispatchする事があります。
その際に、getParameterする値を書き換える事はできるでしょうか。
要するに"get"に対して、"setParameter"みたいな...。

...って、本当はこんな事しなくても、MVCで言えばちゃんとServletが
コントローラに徹していて、実際のモデル(ビジネスロジック)をBeanに
分けて実装してあれば、わざわざdispatchなんかしなくても完結できるんですけどね....。
0529初心者03/01/01 08:10ID:G2l2vXwo
>>526
>>527
おお、ありがとうございます。
とりあえず、SSLを実装しない形では、他のサイトを探してJSPが走る形には出来ました。
(まだ、さわり程度のサンプルjspしか試していませんが)
>>527さんの所も読んでみて、SSLの実装にもチャレンジしてみますね。
0530nobodyさん03/01/01 18:31ID:OtnMrmxA
HttpSessionオブジェクトを使用したセッション管理を行った場合、
SessionIDが付加された形でクライアントのrequestが送信されて
きますよね?
ってことはセッション管理は各クライアント毎ということになりますから、
クライアントが同一ならブラウザを何個立ち上げてもHttpSessionオブジェクト
は共有されるはずですよね?

Servletで上記のセッション管理をgetSessionを使用して実現してみると
クライアントごとに値が保持されるのですが、
(同一クライアントであれば、ブラウザを何個起動しなおしても値は保持される)

JSPの暗黙オブジェクトであるsessionを使用して同一の機能を実現して
みると、ブラウザごとに値が保持されてしまいます。
(ブラウザを起動するたびに値が初期化されてしまいます)

これはなぜなのでしょうか?
0531nobodyさん03/01/01 19:12ID:gMpGNAZi
>>530

直接、HttpのRequestとResponseをみてみるのが早いかと。

Requestで、cookie は同一のものが送られている?
Responseで、set cookie は同一のものがセットされている?

それをまず、確認してみたら?
0532nobodyさん03/01/01 20:25ID:WxVSzOcR
>>530
Sessionの寿命って、どう設定してる?
ていうか、この場合の「クライアント」の定義って、
「その瞬間、サーバにリクエストを投げたヤツ」って思うんだけど。
つまり、「ハード的な台数の別」でなくて、立ち上げたブラウザの個数分、
クライアントなんだと思うが。その辺の認識は、どうか。
053353203/01/01 20:36ID:WxVSzOcR
ちなみに「Session」というのは、1回の「HTTP Request→Response」チェーンの事を言うのであって、
「このクライアントはさっきから接続したままです」っていう「状態」を表すものは、
HTTPにはそもそも存在しない(HTTPはStateless Protocol)。従って、
「Sessionの維持された状態」を表すには、他の、何か別の物を利用して実現するしなければならない。
それが例えばJavaServletの場合、HttpSession(と、その周辺)の機構だったりする。
..って考えた場合、「クライアント」ってどこを指してる?

(いや、話には全然関係無いんだけど、よく混同してる人がいるので、念のため。)
053453003/01/01 20:44ID:OtnMrmxA
>>532
SessionIDってクライアント端末のCookieに保存されるのですよね?
だったらSessionのスコープって「ハード的な台数の別」になるのでは
ないのですか?なんか私アホなこと言ってる?
Sessionの寿命は各セッションオブジェクトの寿命であって
Sessionのスコープとは関係なくないですか?

>>531
Cookieを使用したセッション管理の話ですか?
それこそ各クライアント端末に格納されるのですから
各クライアント端末ごとにセッション管理されるはずですよね?
(何個ブラウザを立ち上げても値は共有されるはず)
ちょっとやってみます。
053553003/01/01 20:49ID:OtnMrmxA
>>533
HTTPがステートレスであることはわかります。
私が使用している「セッション」はHttpSessionオブジェクトを使用して
実現される値保持の状態を指します。
また「Session」という言葉はHttpSessionオブジェクトを指しています。
「クライアント」とはクライアント端末を指します。
0536nobodyさん03/01/01 20:57ID:RNLf2SvW
★★★★★★★★★★★★★★★★★★★★★★★★
激安を超えた!超激安!
新品アダルトDVDが1本500円から!
個人でも1本から買える!オンラインDVD激安問屋!
GO!GO!DVDドットコム!
http://55dvd.com/
只今福袋も売り出し中! 売り切れ御免!
★★★★★★★★★★★★★★★★★★★★★★★★
0537nobodyさん03/01/01 21:18ID:gMpGNAZi
>>534

Cookieは同一PCでブラウザを複数起動しても必ず同じものが送られるとは限らないよ。
IEとネスケでも、違うポリシーだったような。
(ネスケの場合は、同じCookieを、IEの場合は、ブラウザのプロセスごとに違うCookieだったかな?)

メモリー上のみのクッキーの場合は、ブラウザを新たに起動すれば違うCookieを送るときもある。

このへん、最近のIEの場合は、どうなっているかわからないので、
まー、とりあえず確かめて報告してくれると嬉しいなり。
053853003/01/01 21:43ID:OtnMrmxA
>>537
うーん、先入観ってこわいですねぇ・・・
Cookieってクライアント端末に格納されるっていう話だったので
てっきり一端末一Cokkieファイルみたいなイメージに囚われていました。

IEにて試してみたら、CookieおよびHttpSessionによる両セッション管理とも
ブラウザのプロセスごとに異なるセッションとして値を保持しました。

537さんは「違うCookieを送るときもある」と表現していますが、
この実験結果から、IEの場合はブラウザのプロセスごとに必ず異なるセッション管理
を行うと考えてよさそうですね。

ところで、HttpSessionを使用した場合、Cookie情報としてSessionIDのみ
クライアントに送信され、次回のrequestからそのSessionIDが付加されますが、
このSessionIDはメモリに保存されているのですか?
0539nobodyさん03/01/01 22:03ID:gMpGNAZi
>>538
> このSessionIDはメモリに保存されているのですか?

そうでしょう。
細かいことは、CookieについてのRFCを読んだほうがいいと思うけれど。
(わたしも詳しくは知らないです。)

あた、そこらへんのCookieの寿命・スコープを制御したかったら、
session関係のAPIだけではだめで、
javax.http.Cookie あたり、特に setMaxAge(..)
あたりが参考になるかと。
0540nobodyさん03/01/02 11:46ID:ovQ10hvA
JSPで、HTMLエスケープてどうやるでしょうか?
beanからgetPropertyでとってきたものXSS脆弱性だらけで
私困っています。どうか教えてください。
0541nobodyさん03/01/02 13:49ID:LuTmMgnD
JSPで
<%! public String getName(){ return "Bob"; } %>
みたいな感じでpublicでメソッドを宣言できますが
publicにすると何かいいことあるのですか?
他のページで使用できるとか?
0542nobodyさん03/01/02 13:52ID:???
>>541
俺は嫌い
0543nobodyさん03/01/02 14:07ID:1txGAB/5
ゾンビについて知り尽くした男のページ
http://www.geocities.co.jp/Outdoors-Marine/4547/ ( 中島みゆき )
0544nobodyさん03/01/03 13:09ID:CIudwpGx
サーブレットからjdbcを使いデータベースの内容を出力するプログラムを作っているのですが、
DBから取得している筈のデータが表示されません。(そもそも取得に成功しているかわかりません)
コマンドラインから実行する形のプログラムは動作しているのですが、どなたか同様な症状に合われた方がいらっしゃいましたらお教え頂けないでしょうか?


環境は以下の通りです。
redhat inux8
postgres7.3
tomcat4.1.18
j2sdk-1_4_1_01
0545nobodyさん03/01/03 13:23ID:???
どこで取得データがロストしてるのか分からなければ答えようもない。
とりあえずSystem.err.printlnしまくって、どこまで上手くいってるのか報告しる!
話はそれからだ。
0546nobodyさん03/01/03 14:13ID:???
>>544
せめて取得部分のソースぐらい書け
054754403/01/03 15:37ID:CIudwpGx
>>545さん546さん

レスありがとうございます。

以下取得部分のソースです。
どこまで上手くいってるかは現在確認中です。
お願いします

Connection conn = null;
try {
String url = "**";
String user = "**";
String password = "***";
conn = DriverManager.getConnection(url, user, password);
conn.setAutoCommit(false);

Statement stmt = conn.createStatement();
ResultSet rs = null;
try {
rs = stmt.executeQuery("SELECT name, price FROM test");
while (rs.next()) {
out.println("<tr><td>" + rs.getString(1) +
"</td><td>" + rs.getInt(2) +
"</td></tr>");
}
} finally {
rs.close();
stmt.close();
}
conn.commit();
}
0548nobodyさん03/01/03 15:51ID:???
>>540
自分でTablib作って処理する。
またはJSTLを使う。
0549nobodyさん03/01/03 15:51ID:???
catch句を作ったほうがいいな。
その中でエラー内容を表示させるようにしる!
0550nobodyさん03/01/03 15:52ID:???
>>549>>547宛ね
055154403/01/03 17:15ID:CIudwpGx
>>550 さん

根本的に理解してませんでした。
JDBCのドライバをCALALINA_HOME/share/libにコピーしたら動作しました。

すいませんでした
0552nobodyさん03/01/03 19:37ID:xHt5cVHG
JSPを行う場合、J2SEよりJ2EEの方がいいって話だけど、一体何が違うのさ?
0553nobodyさん03/01/03 19:44ID:nrlj3bO8
   ,.´ / Vヽヽ
    ! i iノノリ)) 〉
    i l l.´ヮ`ノリ <先生!こんなのがありました!
    l く/_只ヽ    
  | ̄ ̄ ̄ ̄ ̄|
http://muryou.gasuki.com/saitama/
0554nobodyさん03/01/04 04:13ID:Eze7pD0s
複数フレームで構成されている画面があります。
あるフレームAを表示させるためのActionクラス処理で発生したエラー内容
をstruts:errorsにより表示する時に、エラー表示を全画面(_top)に表示さ
せることはできないでしょうか?
(フレームAには表示させることができますが)
Strutsフレームワークでは不可能なのでしょうかね。
0555nobodyさん03/01/04 09:31ID:U0/Cv6SQ
>>552
>JSPを行う場合、J2SEよりJ2EEの方がいいって話だけど

APIのJavaDoc嫁!
Servlet関連のクラスはどっちにある?
0556nobodyさん03/01/04 09:35ID:U0/Cv6SQ
>>554
>複数フレームで構成されている画面があります。

「フレームが切られている」のは、クライアント側の都合。HTMLがブラウザにレンダリングされる時に
わかる話。
Struts....というよりサーバ側で処理されるそれらで、どうしてJavaScriptレベルで判定されるような
その「都合」がわかるのさ。
なので、一度クライアント側でターゲットを"_TOP"に指定して、それらを表示する
仕掛けを組む必要がある。
055755603/01/04 09:41ID:U0/Cv6SQ
(続き)
それでも無理やりそうしたければ、クライアントからコンテンツをGETする要求を
サーバに投げる(Submit等)時に、常に"_TOP"にしておいて、エラーが無いか判定し
エラーが無ければ"_TOP"からコンテンツを全て再描画するつもりで、順次GETしていく
しかない。
...ただしその場合、もし他のフレームに「そのユーザ毎に固有の情報」(例えばDBから取ってきた
値の列挙があったりする、とか)がある場合、それらは再び同じように取得するか、あるいは
Sessionにしまっておいて、再描画に取り出す等の工夫が必要。
0558nobodyさん03/01/04 10:33ID:???
どんなWebアプリでもフレームを使ったページって非常にやっかいだよな。
0559nobodyさん03/01/04 13:26ID:KyaSNzBm
servletでHTMLのエスケープする定石のようなメソッドを御教授して下さい。神様!
0560nobodyさん03/01/04 13:45ID:U0/Cv6SQ
>servletでHTMLのエスケープする定石のようなメソッド
何が言いたいのかわからん。
056155703/01/04 14:11ID:U0/Cv6SQ
↓これの事か?

http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/net/URLEncoder.html
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/net/URLDecoder.html

ていうか、別にServletと関係無いし。
そして、APIのドキュメントくらい、ちゃんと嫁。(基本
0562nobodyさん03/01/04 14:45ID:KyaSNzBm
>561
サンクス

便乗質問ですが、みなさん画面遷移ってどうやってるんですか?
例えば、フォームからの入力をDBに登録する場合、

画面A → 画面B         →DBに登録   → 画面C
入力 入力内容の確認 登録完了

MVCとか考えるといったい何をどこで処理したらいいのかわからんです。

056356103/01/04 15:31ID:U0/Cv6SQ
View .. JSPでHTMLのフォームを使って入力画面、と表示時の処理。

Controller .. ServletはViewから要求された処理を行う為、
    Httpで送られたParameter等の下処理や、
    適切な処理(ビジネスロジック)を持つBeanにそれらを受け渡す為の
    橋渡し的な処理を行う。

Model .. Beanとして実装し、実際に渡ってきた値を使用して、
    DBに登録するなりなんなりの固有の処理を行う。
    尚この時のBeanは、それがServlet部品である事をなるべく
    意識しないで使えるように設計する。(例えばHttpServletRequestとかを
    引数に取らないようにする)

俺はいつもこんな感じ。
0564nobodyさん03/01/04 17:09ID:???
>>562

strutsでいうと、
入力・・・jsp
入力内容の確認・・・form
登録・・・action
登録完了画面への遷移・・・struts-configで定義したのをactionで指定

てな感じか?
0565nobodyさん03/01/04 20:01ID:bqVpTHnl
今 resin2.14 と apache1.3.27 でstrutsを勉強してるんだけど
struts-configを変更した後って再起動しないと反映されないじゃん
javaファイルを変更してリロードするだけでコンパイルしてくれるresinが好きで導入してるんだけどstruts-configの変更を反映されないのはつらい・・

tomcatとかも再起動が必要だと思うけど実際の開発でもstruts-configを変更するたびに再起動してるんかな・・。結構変更するファイルだと思うんだけど
誰か解決策知ってる人いたら教えて・・
0566nobodyさん03/01/04 21:02ID:???
>>565

<action path="/admin/reload" type="org.apache.struts.actions.ReloadAction"/>
■ このスレッドは過去ログ倉庫に格納されています