■■ Servlet/JSP(EJB含む) 質問スレ Part3 ■■
884 :
nobodyさん:2005/05/07(土) 17:25:31 ID:/pBZAjNL
ページの遷移でいったんページを移動して
ツールバーの戻るボタンを押したとき
JSP側のHTTPメソッドでGETかPOSTと違う事でデータの受け渡しなど多少動きに違いがあるのでしょうか?
それともブラウザ上の戻るボタンに関しては全く同じなのでしょうか?
885 :
nobodyさん:2005/05/07(土) 18:05:25 ID:U7wdq9wc
886 :
nobodyさん:2005/05/07(土) 18:23:56 ID:0AZAgz0s
887 :
nobodyさん:2005/05/08(日) 02:37:10 ID:elVIc2fQ
JSP/Servlet で画像掲示板作ってみたんだけど
瞬間的にOUt Of Memory エラーがでます
こういう場合はそうすればいいですか?
まずはヒープサイズのオプション
-Xms -Xmxあたりをしらべてみ
あと-Xloggcで出したログをGCViewerでみてみるとか
889 :
プログラマをされている方にお尋ねします。:2005/05/08(日) 11:07:47 ID:EcAkcyME
>>887、888
私は積極的に(GCに任せずに)不要になったオブジェクトには
NULL入れています。JDKの1.3あたりまでは、これでかなり
助かったことを覚えています(SWINGでGUIをつくっていました)。
「質問」 ユーザーからの入力(NAME,ADDRESS)を受け取り、
HTMLファイルをつくります。そのファイルを、みなさんでしたら
どうしますか。HTMLファイルは、ディレクトリ作って溜め込みますか、
それともSQLのデーターベースへHTMLのデーター全部入れますか?
もう、データーベースとファイルシステムの使い方さえわからなく
なりました。プロのかた、お助けください。お願い致します。
>不要になったオブジェクトにはNULL入れています
それは、GCに任せているのとどう違うの?
> 「質問」
HTMLファイルを作る必要がある?俺ならその部分はJSPで処理をする。
891 :
プログラマをされている方にお尋ねします。 :2005/05/08(日) 11:47:16 ID:EcAkcyME
>>890 こんにちは。どうもありがとうございます。
NULLを入れるのは、できるだけ早くメモリの解放をしたいときです。
ファイルハンドラが閉じられる後ではなくて、前にしたいときだとか。
例えばサーブレットでSTRINGBUFFにHTML溜め込んで、ファイル
ストリームへ吐き出すとします。もう、その直後にSTRINGBUFFを
NULLにしたい時には、積極的にNULL入れます。
GCは、ファイルストリームが閉じられてから
STRINGBUFFをNULLにしているかもしれませんし。
質問についてですが、HTMLファイルは、後で
何度も再利用される予定です。JSPで処理をする
ということは、必要なデーターだけをデータ
ベースへ溜め込んで、あとで利用するときは、
DBからそれをまた取り出すということですね。
プロの方は、みな、そうされているのでしょうか。
わたしは、HTMLどんどんつくってしまって、
一つのディレクトリに溜めています。これなら、
アプリケーションサーバーが動いてなくても、
あとで利用できますし。
そこで、考えたのが、HTMLごと、HTMLの内容全部を
VARCHAR として、DBへ溜めることだったのですが。。。
また、ご教示ください。大変勉強になります。
参照にnullを代入した瞬間にゴミ集めが行なわれるわけじゃないでしょう。
>>891 どこからも参照されなくなったオブジェクトはGCの対象としてマーキングされる
だけで、その都度GCされるわけじゃない。VMが適切なタイミングでまとめて
GCする。
ちなみに、JavaにおいてはNULLじゃなくてnullだ。
>>889 質問の意味が分からない。
何がしたいんだ?
あと、他の人も書いているけど、nullを入れても入れなくても、
メモリの回収はGCがする。いつするかはGC次第。
JDKのバージョンがあがって改良されているので、
古いJDKのバージョンだったら有効だったのかもしれない。
変数が適切なスコープにないってオチじゃないよね?
それならGC関係ないし、自分でnull入れたらどうこうって
なるだろうし。
896 :
プログラマをされている方にお尋ねします:2005/05/09(月) 13:58:27 ID:0n/h3hsi
>>895 お世話になります。HTMLファイルを自動生成しているんです(ユーザーの入力を得てから)。
生成されたHTMLは一つのディレクトリに溜め込んでおいて、あとで利用するときは、
一行ずつHTML読んで、OUT.PRINTLN()を使っています。
問題は、ディレクトリに溜め込まないで、SQLデーターベースへ(ユーザー入力ではなくて)、
作成したファイルごと、VARCHARのデーターとして溜め込めないかな、プロの方だったらこんな
ことするのかな、ということです。
いかがなものでしょうか。
GCにつきましては、たしか強制的にGCを呼び出す方法があったはずですので、
もう少し勉強してみます。どうもありがとうございます。
>強制的にGCを呼び出す方法
System.gc() ね。
ほとんどの場合、アプリから強制的に呼び出す必要はない。
GC処理そのものはかなりコストのかかる処理なので
アプリから強制的に呼び出したほうが効率的な場合よりも
パフォーマンスを低下させることの方が多く、逆効果。
>>896 DBに入れて、必要な場合にファイルとして書き出すぐらいなら
JSP使った方がいいと思うよ
899 :
nobodyさん:2005/05/09(月) 14:20:13 ID:PtO611Xm
>>896 ふつーはHTMLのガワだけ作っといて変化する部分(AME, ADDRESS)を埋め込んで出す、そのためにあるのがJSPやらテンプレートフレームワークやら、
鯖負荷が問題になる場合は静的HTML作っといてそっちにアクセスさせる、Servlet(だよな?)でファイル読んで表示したりはしない。
>>896 ユーザが「あ」と入れたら「あ」と書かれた*.htmlを作成して保存するの?
わざわざ*.htmlのファイルを作る意味が分からん。
いちいちファイルにするなりDBに格納するなりしてたら、ゴミが残るでしょ。
その保存したファイルをどうするのよ?
ログとして残したいだけなら「あ」だけDBにでもログファイルにでも残しときゃいいだけだし、
902 :
プログラマをされている方にお尋ねします:2005/05/09(月) 21:57:08 ID:0n/h3hsi
みなさん、どうもありがとうございます。896のようなことは、
する意味がありませんね。
901さんのご指摘は、もっともだと思います。
もっと、入力が複雑で、HTMLの作成もかなり面倒な
アルゴリズムですから、HTMLで残しておいているのですが、
設計が上手ではありませんでしたね。
どうもありがとうございました。勉強になりました。
903 :
nobodyさん:2005/05/09(月) 22:03:23 ID:9BI6J6UW
904 :
nobodyさん:2005/05/09(月) 22:31:52 ID:oj96+Y+F
905 :
nobodyさん:2005/05/09(月) 23:21:09 ID:VIkDkqEH
tomcatでサーバを起動してJSPを表示させる場合
初期設定では
http://localhost:8080/ みたいにURLがなっていると思いますが
これを任意の名称にURLを変更させる事は出来るのでしょうか?
実際に開発などで社内システムなどを作る時は
実際に使う時は各社内で任意になると思いますが
>>906 Servlet開発以前の基礎知識が不足していると思われるので、
先輩や同僚にみっちり教えてもらった方がよさげかもしれない。
ヒントになるかどうかわからないけど、
http://www.example.jp:8080/path/to/hoehoe の構成要素の一般的な解釈は
http ---> スキーム名
www.example.jp ---> ホスト名
8080 ---> ホスト上でのサービスしているポート番号
/path/to/hoehoe ---> サービス内でのパス名
になります。(厳密ではないかもしれないけど)
servletからjspに値を渡す事はできないのでしょうか?
イマイチservletとjspの連携が分からなくて・・・。
Servlet間で値のやりとりをするときは
Application、Session、Request
というスコープ(≒寿命)の違う格納域が用意されており、
一般的にそれらを利用します。
# もちろんデータベースなど外部のリソースも使えますが
JSPはServletの一形態でしかないので、
ServletからJSPへの連携でも同様の考えになります。
で、JSP環境では便利なようにそれらに対応する
application、session、requestという変数が定義済みになっています。
JSP2からは、受け取った値は式言語で扱うのが楽だな
現在、WebLogic 8.1上でServlet/JSP+EJB(+Webサービス)を
用いたWebアプリケーションを作ろうとしています。
そこで、認証に関して質問させてください。
満たしたい要件は次の通りです。
・ユーザはDBで管理されている
・権限毎にアクセスできる領域が異なる
・ユーザは日々増える
このような要件を満たす為に最初に思いついたのは、
TomcatにあるようなJDBC(DataSource)Realmを使う方法でした。
ところが、WebLogic8.1にはJDBCRealmに代わる物が無い。
「じゃ、自分で作るか」と思っていたのですが、
http://dev2dev.bea.com/pub/a/2004/01/whitepaper_tomcat_migration.html ↑このサイトで「WebLogic 6.0まではあったけど、7.0で無くなった」
という記述を見つけ悩んでいます。
というのも、わざわざあったものを無くしたというのは他の開発者たちが
JDBCRealmによる認証を使ってないからではないかと思ったからです。
ならば、みなさんはどのように認証を行っているのか知りたく、質問させていただきました。
913 :
nobodyさん:2005/05/12(木) 23:10:50 ID:SAjnBRZ0
JSPでDBからデータを取得して表示するとき
While文で
<td>\<%= result.getInt("price") %></td>
にするのですが
このときデータを取得するたびにデータの合計を加算させたい場合はどうすればいいのでしょうか?
<%= の中に変数などを入れても、なかなかうまくいきませんので教えてください
<% int total = 0;%>
・
・
<%
int price = result.getInt("price");
total += price
%>
<%=price%>
とかやればいいんでねーの?
915 :
nobodyさん:2005/05/13(金) 19:34:13 ID:iHOWVBQE
>>912 File Realm はバグだらけだからね、FRだけはやめたほうが
いいです。
916 :
nobodyさん:2005/05/13(金) 22:56:32 ID:f30Z4gnN
>>915 FileRealm にそんなにバグあったかなぁ。
いずれにせよ 8.1 ならデフォルトで組み込みの LDAP が使われるね。
>>912 DB 使うのが要件なら作るしかないんじゃないの?
917 :
nobodyさん:2005/05/14(土) 02:19:53 ID:YT4K1s3l
リストボックスの中のデータを指定のカラムから抜き出して
候補として表示させたいのですが
どうすればいいのでしょうか?
指定のカラムから抜き出したデータをリストボックスの候補として設定すればいいと思います。
こんな感じです。
1.指定のカラムからデータを抜き出す
(詳しいやりかたはあなたがお使いのデータの扱い方に従ってください)
2.リストボックスの候補として設定する
(詳しいやりかたはあなたがお使いのユーザインターフェイス出力方式に従ってください)
921 :
nobodyさん:2005/05/15(日) 11:54:49 ID:5xJ/seB9
>>916 LDAPが8.1?
WEBLOGICですよね、SUNのAPP.SERVERじゃないですよね。
>>920 わろた
>>921 WebLogic の内部で LDAP サーバが動いてる。7.0 から。
923 :
nobodyさん:2005/05/17(火) 21:15:14 ID:Wptu6pDN
windows serverのファイルサーバにサーブレットからアクセスする場合
ファイルサーバへのアクセス情報(アカウントやパスワード)は
サーブレット側に記述すればいいの?
それともサーブレットのコンテナ側に記述するの?
サーブレット側とサーブレットのコンテナ側がどうちがうのか説明してくれ
925 :
nobodyさん:2005/05/17(火) 23:11:55 ID:Wptu6pDN
サーブレットのコードに記述するのか、
サーブレットコンテナ(jbossとか)に設定するのか、ってことです
どうなんでしょう?
jbossはサーブレットコンテ以下略
どっちでもできるんじゃないの。
>>925 できる・できないで言えばどっちでもかまわんが、
そういう環境依存な情報はアプリよりコンテナに持たせた方がいいだろうね。
928 :
nobodyさん:2005/05/18(水) 19:24:26 ID:RnyP/LlE
JSPで、セッションのタイムアウトが発生したときに
特定の処理をおこなうようにするには、どうしたら
いいでしょうか?
開発中の環境は、NetBeans 4.0を使っています。
929 :
nobodyさん:2005/05/18(水) 21:30:14 ID:hY8x0JfO
セッションが無効かどうかを調べれば?
>>928 SessionListenerを使う。
クライアントのリクエストとは非同期に
セッション(変数)が無効になったのをキャッチしたいなら、
javax.servlet.http.HttpSessionBindingListener
これが利用できるけど、JSPで実装するのはトリッキーかな。
932 :
nobodyさん:2005/05/19(木) 21:45:06 ID:6L/NrBef
Tomcat4でしつもんなんですが、server.xmlに記述されている
FileLoggerオブジェクトってどう取得すれば良いんでしょうか?
933 :
928:
>>930,931さんありがとうございます。
やはりサーブレットを使わないとスムーズに実装できませんでした。
930さんのいうとおり、HttpSessionListenerをimplementした
サーブレットで、セッション破棄時の処理を行うようにしました。