JAVAサーブレットQ&A
■ このスレッドは過去ログ倉庫に格納されています
0001厨房
NGNGそれに関するQ&A
0002名無しさん@お腹いっぱい。
NGNGttp://www.t3.rim.or.jp/~yoko-k-h/java/servlet/reference.html#Books
を挙げておく。最近だともっと増えているね。
0003名無しさん@お腹いっぱい。
NGNG0004>3
NGNG0005名無しさん@お腹いっぱい。
NGNG実用性はJNIの方が高いと思うんだけど。
0006名無しさん@お腹いっぱい。
NGNGサーブレットは色々と細かいTipsがありそう。性能とか。
0007名無しさん@お腹いっぱい。
NGNG0008名無しさん@お腹いっぱい。
NGNG簡潔に説明して下さいませんか
0009名無しさん@お腹いっぱい。
NGNG0010名無しさん@お腹いっぱい。
NGNGなぜサーヴレット本はすくないの?
東鳩サーブレット ぽっぽっぽ
0011名無しさん@お腹いっぱい。
NGNGXMLはテキストデータフォーマットの標準化共通化の
最右翼。これがディファクトスタンダードになれば
どんだけのコストを削れるか。。。
0012名無しさん@お腹いっぱい。
NGNGEJB=便利な部品
サーブレット=プログラム
って感じ?
両方勉強するひつようあり?
0013名無しさん@お腹いっぱい。
NGNG今まで彼女がいなかった奴がはじめて女ができた
ずっともてもての奴が今の彼女に飽きて違う女にしてみた
みたいな〜
0014厨房
NGNGhttp://home.catv.ne.jp/dd/chiba/ken/Java/JavaMain.html
0015名無しさん@お腹いっぱい。
NGNG0016名無しさん@お腹いっぱい。
NGNG0017名無しさん@お腹いっぱい。
NGNGなぜなんだろ?
0018名無しさん@お腹いっぱい。
NGNGとほざいてる?
0019名無しさん@お腹いっぱい。
NGNG特徴としては Perlの様に毎回起動されないので
・そのぶんのレスポンスが速い
・ServletEngine内である程度の永続性があるのでセッション管理が楽ちん
・Perlみたいな便利な正規表現は(標準では)無い
・Perlみたいなヒアドキュメントも無い(Printの嵐)
・Javaがネットワークに強いので負荷分散とかが楽チン
Printの嵐がやだってんで Bean+JSPってことが多いと思います。
EJBってのは Beanの一種
J2EEに準拠したコンテナで管理されます。
一般にはDBと連携してることが多いです。
0020名無しさん@お腹いっぱい。
NGNG本を書くまでも無いことなんだと思います.
ServletEngineまわりのKnowHowのほうは必要あるかも。
引数がどうやってわたってきて どうすれば出力できるかって
ところだけ理解しちゃえば あとは普通のプログラムです。
Java特有の機能をつかっていろいろするのは また別の本を
読むのがいいでしょう
0021名無しさん@お腹いっぱい。
NGNG同感。
少なくともJavaでコード書いたことあるやつなら
そのへんのHPでServletの簡単なプログラムの作り方
ぐらいは理解できる。そうすれば、次は排他制御とか
インターフェースの切り分け方とか具体的な疑問が
出てくる。じゃぁそういうこと書いた本はありませんか
という質問に最低なるもんなんだが...
もしかするとJavaすらやったことないのかも。だったら
まずServletよりも前の段階で学ぶことはいっぱいある。
0022>21
NGNG0023名無しさん@お腹いっぱい。
NGNGDBとかの排他制御みたいな感じ?
0024名無しさん@お腹いっぱい。
NGNGpw.println("<html>");
pw.println("<head>");
<以下略>
ってやるのと
a += "<html>";
a += "<head>";
<中略>
pw.println( a );
ってやるのって違いはでる?
面倒なので後者でやる場合が多いけど
(JSPを使えばいんだろけど)
0025名無しさん@お腹いっぱい。
NGNG0026名無しさん@お腹いっぱい。
NGNG1.
+するたびに、それまでのaのStringオブジェクトが持ってる文字列に
足しこまれた文字列を連結した新しいStringクラスを、内部でnewしてる。
よって、メモリ食ってるかも。(このご時世に文字列のメモリ消費なんて
カスのようなもんだろうけど)
2.printlnは行末に改行文字挿入して出力してる。
002721
NGNGん、誤解されたかな。servlet勉強していくとそういう疑問が
でてもいいかなと言う意味で別に排他制御がservlet特有のトピックス
であるというつもりはないよ。ただ、インスタンスが一つ作られて
init()が実行されて、あとは複数のコネクションに対してメソッドが
呼ばれるということは理解しておく必要がある。ここまでは
servletの本なら絶対書いてあるし、あとは、別に普通の
プログラムでのスレッドセーフな話と同じだから一般のJavaの本
でいいよね。面倒ならjavax.servlet.SingleThreadModel
を使うって手もあるけど。
排他共有する情報をDBに任せるのなら、
DBを呼び出すオーバーヘッドがでかくなるから
コネクションプーリングとか。
で、うちにあるこの辺に触れた本だと、
「XMLとJavaによるWebアプリケーション開発」
とか
「Javaサーブレットパーフェクトガイド」
かな。
インターフェースの切り分けつーと、MVCモデルで
JSPとの連携とかそのへんの最近の話題は一般書籍
では見たことないから、雑誌中心になるね。旧来の
やり方だとCGIとかとさほどかわらんから、その応用。
もし聞かれたらこんな感じで答えるけど、満足?? >> 22
002821
NGNG0029名無しさん@お腹いっぱい。
NGNG後者は以下のコードと同じ.
a = new StringBuffer(a).append("<html>").toString();
a = new StringBuffer(a).append("<head>").toString();
なんのことかわからなかったらまず String の API Document を読め.
0030名無しさん@お腹いっぱい。
NGNG003122
NGNG0032名無しさん@お腹いっぱい。
NGNG満足っす
まずはJAVAからっすね。
サーブレット書きながら、
いきつもどりつ勉強しとります。
0033名無しさん@お腹いっぱい。
NGNGcookieをブラウザに送って、ブラウザからクッキーを受け取ることは
できるのですが、そのcookieがどこにできたのかなぞです。
c:\windows\cookies
にできるのかと思ってもないし???
0034名無しさん@お腹いっぱい。
NGNG0035名無しさん@お腹いっぱい。
NGNGすごいなぞ
response.addCookie(cookie);
でつくったクッキーを
request.getCookies();
して、ブラウザに表示できるんだけど???
0036>33
NGNGブラウザを閉じたとき。
0037>28
NGNGの結合度が強く、例のアーキテクチャパターンの本に書いて
あるデメリットをまともにくらいました。
各画面遷移毎(極端なはなし、フォームの送信ボタンごと)に
サーブレットをつくっていると、いくつあってもきりがないし
かといってまとめてしまうと、害虫に出すとき仕様を説明する
のがめんどくさい。
0038名無しさん@お腹いっぱい。
NGNGありがとうございます!
0039名無しさん@お腹いっぱい。
NGNGサーブレットチェーンできんのかあああ!?
0040名無しさん@お腹いっぱい。
NGNG開発者ならタダだよね。
0041>40
NGNG40の言うことは正論なんだけど。
WSS+VAJ+WAS+DB2をまともに動かすには512MBくらいメモリ必要でしょ。
うちはビンボーだし。マシン買うには上の上の上まで説得しないと
稟議通らないし。
004239
NGNGっていうか今はJavaの仕事してません。
仕方ないので、JavaWebServer落として来ました。
0044???????????????B
NGNGJ2EE対応でタダのRAD ないか
00455流SE
NGNGってどの本でしょうか?
サープレット/JSPを使ったシステムのいい見本
って有りませんか?どうも、自分の設計に自信が
もてないんですが。
0046名無しさん@お腹いっぱい。
NGNGにしてもネットスケープで文字化けします
以下の過程で使用すべき文字コードってなんでしょうか?
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の指定をしてみよう。
004847
NGNGデフォルトでus-asciiが指定されたと規格上は見なされるから、二つの間で矛盾が生じる。
ただhttp転送においてレスポンスヘッダ中のcontent-type:ヘッダは必須だから、ここ(3)での
charsetの指定も必須となる。だから、2のMETAタグ中でcontent-typeの指定は,やらないほうが
無難ね。<META>タグ中での指定が必須となるのは、ユーザがブラウザの保存機能で
htmlデータをローカルに保存することが想定される場合。この場合は、メタ情報がなくなる
から、htmlデータ中にメタ情報を置く必要がある。
004947
NGNG>デフォルトでus-asciiが指定されたと規格上は見なされるから、二つの間で矛盾が生じる。
(2と3のうちcharsetを指定していない側のcharsetは)デフォルトで〜〜、二つの間で矛盾が生じる。
ね。
0050名無しさん@お腹いっぱい。
NGNG1 ソースを書く文字コードは何を使っても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>");
005147
NGNG基本的にはプラットホーム依存だけど、-encodingオプションで
明示的に指定してあげる限り、なに使ってもOK。それ以上は
あなたの環境がわからないので答えられません。
>と言うことは、METAタグも追加して、
>そこでも文字コードを指定してあげるベきなのですね
いや、できるだけMETAタグの使用は避けた方が
無難。やってもいいけどやるなら正確に。
コードは示された部分だけでは問題なさそうなので、
>pw.println("<html><head>");
の部分を
pw.println("<html><head>あああ");
みたいな感じに日本語入れて、Netscapeではなくて、
telnetで直接80番ポート叩いて生の出力を確認するのが
おすすめ。あ、あと一つ確認するけど、この後のコード
で日本語を含むstringオブジェクトを変な感じにエンコーディング
の変換してpwに突っ込んでいるとかそういうことないよね。
たまーにgetByte()とか使ってバイト列に戻すとか妙な
ことやっている人いるんで。
0052名無しさん@お腹いっぱい。
NGNG怪しいことはしてないと思います。
(getByte()とかはいれてないです)
0053名無しさん@お腹いっぱい。
NGNG> 明示的に指定してあげる限り、なに使ってもOK
エディターで書かれたコード
↓
コンパイル時にコードを使用しているコードを明示指定
↓
unicodeに変換される
ですよね
ここ最近文字コードで悩みっぱなしで、
なかなか先に勧めないので、
横着してブラウザも、エディタもunicodeにしちゃってます
とりあえずエディタで使用する文字コードの謎はとけました
ありがとうございます
0054JRun3.0
NGNGJRunも2.3から3.0へとバージョンアップしました。
ところが、これベンダーが代わったらしく
管理ツールが大幅に変更になってしまいました。
おかげで、サーブレットのクラスファイルを何処においていいのやら
さっぱりわかりません。
ドキュメントを探しても2.3のばかりです。
3.0の有用なドキュメント等ご存知でしたら教えてください。
0055名無しさん@お腹いっぱい。
NGNGadminServerを立ち上げるとチュートリあるがでてくるから、
そのとおりにやってみては?
日本の資料は確かにふるいんで訳に立たなくて苦労した想い出がありました
00566流SE
NGNG>>例のアーキテクチャパターンの本
>ってどの本でしょうか?
"Pattern oriented software architecture -- A system of patterns"
個人的に、GoFのDesign Pattern よりもわかりやすく面白いと
思ってます。
0057名無しさん@お腹いっぱい。
NGNGサポートしてくれないんだろ?ってことは所詮お遊び言語としてしか
使えないような気がするんだが・・・・・
JSPでシステム構築しても、結局は信頼性がおけない。
そんなんだったらASPでコード書いた方がマシってスレ違いですか?
すいません。
0058名無しさん@お腹いっぱい。
NGNG今ごろ何言ってんの
使ったこと無いくせに
0059名無しさん@お腹いっぱい。
NGNGrestartをかけて、ブラウザからアクセスすると、
「このサイトは大変混雑うんぬん」と言われてはじかれます。
ポートを8100から8010とかにかえてみたりしたのですが、
どうもつながったりつながらなかったりです。
インストールしてあるのはローカルのPCでアクセスするのも
ローカルのPCです
adminサーバは順調につながります
同じような現象が起きたかたいらっしゃいますか?
0060名無しさん@お腹いっぱい。
NGNG0061名無しさん@お腹いっぱい。
NGNG0062名無しさん@お腹いっぱい。
NGNG0063名無しさん@お腹いっぱい。
NGNG0064はとサーブレット
NGNG0065名無しさん@お腹いっぱい。
NGNG>JRUN
EJBのセッション管理とかってSERVLETより楽そうなんだけど、
やっぱりどっちも勉強すべき?
EJBをメインで足りない所をServletで補うスタイルで
勉強すべきかなぁ
0066はとサーブレット
NGNGC:\Program Files\Allaire\JRun\docs\pdfのマニュアルですか?
英語やないですか。
0067NTTGM
NGNG0068名無しさん@お腹いっぱい。
NGNG/opt/jrun/docsのなかのPDFです
ServerSideJava勉強するなら英語は覚悟しましょうよ
だって日本語の情報少ないじゃん〜
とか言いつつ日本語でEJBの解説ページないかな〜
って聞いてみたりして
0069名無しさん@お腹いっぱい。
NGNGあとで簡単に戻せますか?
JRUNのマニュアルを詠んだられIISの設定を書き換えちゃうようなことが
かいてあったんでちょっと恐いです
0070名無しさん@お腹いっぱい。
NGNGこっそりとではなく責任をとるつもりでやれ。
0071えっ!
NGNGもしかして、
String A = request.getParameter("a");
A = new String(A.getBytes("8859_1","JIS_AutoDitect");
とかやるのって最低っすか?
よくやっちゃうんですけど。
0072あぅ。
NGNGしまった。間違った。
A = new String(A.getBytes("8859_1","JIS_AutoDitect");
>A = new String(A.getBytes("8859_1","JIS_AutoDitect"));
だ。右括弧1こ足んなかった。
0073名無しさん@お腹いっぱい。
NGNGこれはpostされる文字なんでいいんでないの?
自分で決められないし。
007447
NGNG>これは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=72
NGNGレスありがとうございます。
47さんの「getBytes最悪」で、getBytesだけに意識がいってしまいました。
で、8859_1は、BEAのサイト(アドレス失念)のオラクルとの接続、とかいう所に
あったのをそのま使ってました。
そろそろUTF-8って方も勉強しなくちゃ、なんですね。
もっと精進しなくては。
0076名無しさん@お腹いっぱい。
NGNGJavaサーブレットからは何でDBアクセスするんですか?
サーバ側で実行するからJDBC-ODBCブリッジですか?
あと、サーブレットがアプレットより優れている点て何ですか?
0077名無しさん@お腹いっぱい。
NGNG優れている点と言うよりも、種類が違うのだから、
状況で使い分けるものだと思います
アプレットの場合クライアントPCのブラウザで
アプレットが使えるどうか、対応しているバージョンは
どうか、ダウンロードにかかる時間
などを気にしなくてはいけないですが、
サーブレットの場合はGETが使えるブラウザが入っていれば
OKなので、クライアントのPCをいじれない場合は
便利です
0078名無しさん@お腹いっぱい。
NGNGhttp://rdc.wizard.co.jp/documentation/
これくらいっきゃ知らねぇ。
他にもぼしゅー
0079名無しさん@お腹いっぱい。
NGNG0080今皿
NGNGCGIがJavaScriptより優れている点は何ですか?
という質問と同質ですね。
0081名無しさん@お腹いっぱい。
NGNG0082名無しさん@お腹いっぱい。
NGNG<%@ include file="hogehoge.jsp" %>
と
<jsp:include page="hogehoge.jsp"/>
はどう使い分けたらよいのでしょうか?
CQ出版社の「OPENDESIGN増刊 JAVA SERVER PAGE詳細」て本を
買ってみましたけれど、「動的/静的なリソース(ファイル)」
という言葉が漠然とあるだけで、よく理解できませんでした。
0083名無しさん@お腹いっぱい。
NGNG実行結果をインクルードするのと、実行前のソースをインクルード
することの違いじゃない?
0084名無しさん@お腹いっぱい。
NGNG定番スレってわけでもなさそうなので、とりあえずageず。
0085名無しさん@お腹いっぱい。
NGNG正しい指定の仕方で悩んでいます
(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名無しさん@お腹いっぱい。
NGNGJRUNのservletディレクトリ以下に置いたアプレットを、
呼び出す方法が不明です
file://だとディレクトリ構造とパッケージの名前に
したがってcodebaseを記述すれば呼び出せるのですが
http://だとcodebaseの記述をどうするかが分かりません
servletディレクトリに置いたアプレットを
codebase=http://hostaddress:portNO/servlet
として呼び出そうとしても、見付けられないようです
servletフォルダ以下にはappletを置いても呼び出せないのでしょうか??
0087名無しさん@お腹いっぱい。
NGNG置き場所としてmyappをbuild.batでビルドしたらエラーが出ました。
TOMCAT3.2のバグですかね?
Apacheのクラスがないみたいなエラーでした。
0088名無しさん@お腹いっぱい。
NGNGbuild.xmlの13行目が/>でxml的に閉じられていないようです。
あと、CLASSPATHにtool.jarが要ると思います
0089名無しさん@お腹いっぱい。
NGNG>servletフォルダ以下にはappletを置いても呼び出せないのでしょうか??
馬鹿すぎて放置されているようだが…できません。
0090名無しさん@お腹いっぱい。
NGNG0091バカ学生
NGNGA、B、Cと3つのサーブレットがあります。
Aでログイン(認証)を行い、成功すると、セッションを生成して、
Bにリダイレクトして、BのdoGetを行います。
このときは、URLにも、sessinID(ながい文字列)が付いていて、
特に問題はありません。
その後、Bのdogetで生成されたHTMLフォームに対して書き込み、
BのdoPostを行い、CのdoGetへ、リダイレクトします。
このとき、Cでsessionがgetできないのです。
Aで生成したセッションは、Bをまたいで、Cに持っていくことは
できないのですか?または、私のプログラムミスですか?
どうぞ、よろしくお願いします。
0092馬鹿社会人
NGNG頭いいよ。
俺の方が馬鹿だ。
0093名無しさん@お腹いっぱい。
NGNG関係ないけど、
HttpSession て クッキーでやるんじゃないの? クエリー使うの?
実装依存という気もしますが。
逃避的回避策としては
RequestDispatcher.forward 使うのはダメですか。
0094バカ学生
NGNG>>92
卒論でいっぱいいっぱいです。
>>93
>HttpSession て クッキーでやるんじゃないの? クエリー使うの?
クッキーではなく、セッションを使いたいのですが、
勉強不足でよくわかりません。
RequestDispatcher.forwardというのは、初めて見ました。
APIで調べても、いまいちわからず・・・
サーブレットの日本語APIなんてあるのでしょうか。。。
0095名無しさん@お腹いっぱい。
NGNGHTTP 自体にセッションという概念はなくて、
(基本的に毎回接続しなおすと思って良い)
HttpSessionっていうのは、クッキーなりクエリーなりを使って
そういう下回りを意識せずに
セッション == 永続的な接続情報保持を
実現する仕組み(というかクラス)です。
Forward は、HTTP 的に飛ばすのではなくて、
現在のストリームに対して servlet を流し込むというか、
サーバの内部でリダイレクトを解決する仕組み、のようなもの、です。
なので、同じサーバ(WEBアプリケーション)上の servlet/JSP に対して
使うのが普通です。
#といいつつフォロー求む
0096名無しさん@お腹いっぱい。
NGNG勘弁してくれ
0097名無しさん@お腹いっぱい。
NGNG個人名を出すな!
っていうかプログラム系の本って間違いだらけじゃない?(特に個人が執筆してるやつ)
自分も DirectX の本買って書いてある通り覚えたら思いっきり間違ってた。
たまたま自分のコンピュータでは動いてたが他のコンピュータで動かしたら
起動しなかったり途中でハングったり大変だったよ。
0098バカ学生
NGNGsession変数を、メソッドの中でなく、外で
グローバル宣言(?)したらできました。。
メソッド内だと、だめなんですか?
ただ、サーブレット間を行き来するときに、
なぜかセッションが消えていたり、復活していたり、
なんか動きが怪しいです。
0099名無しさん@お腹いっぱい。
NGNGそれだと thread-safe じゃないのでヤメてください。
つーか getSession で毎回取得すればいいのに。
0100名無しさん@お腹いっぱい。
NGNGだって7刷もしてるのに全然訂正が入らないってのはひどいじゃない。
初心者向けの本だってのにさ。
0101バカ学生
NGNGthread-safe というのがわからないのですが。。
>getSession で毎回取得すればいいのに。
これは、getSession(true);ということですか?
リダイレクト先で、また新しいセッションを作って、
またリダイレクト先で・・・というふうに、
複数セッションを作れるのですか?
それとも、最初にセッションをつくり、以後は、
getSession(false);で、最初のセッションを取得すると
いうことですか?
■ このスレッドは過去ログ倉庫に格納されています