■■Servlet/JSP(EJB含む)質問スレ Part4■■
543 :
nobodyさん :
2006/01/20(金) 02:22:10 ID:Km1ruKpb 【実現したいこと】 Web上のリンクをクリックすると、 ExceLファイルが開いて(IE内でなくてもよい) 修正して、Web上に(Excelのツールバーの上書き保存ボタン等で)保存するには どうすればいいのでしょうか? 環境はApache+TomcatでWebdavは設定しました。 (VBScriptではWeb上のExcelファイルを、 Fileオブジェクトを生成し、Excelファイルを開き 上書き保存ボタンでWebに上書きできることを確認しました。) しかし、現状JSPで作成したHPがあり、ファイルへのリンク機能のみだったのですが、 今回、ファイルの更新もできるようにしたいと思いました。 ご教授のほどよろしくお願いいたします。
544 :
543 :2006/01/20(金) 02:23:40 ID:???
>>543 の環境は、OS:XPでoffice2000です。
545 :
nobodyさん :2006/01/20(金) 13:23:28 ID:yXtCuLJZ
PHPとJavaScriptの組み合わせしかないと思い込んでるのかもしれないけど、以下の問題についてご教授願います。 「Submit前」のFormの値をPHPで取り出す方法を思案中。 pseudoでもちろん動かないけど、やりたいことはこんな感じ +++++++++++ ... <form name="aaa"><input type"text" name="bbb" value="" onChange="register_value()"></form> ... <script> function register_value() { <? $ccc ?> = document.aaa.bbb.value; } </script> +++++++++++ 他にメインのFORMがあっていろいろやってるので、ここではどうしてもSubmit前に処理する必要がある(と考えてください..)。 結局的にやりたいことは、FORM上の値を、SUBMITする前に(つまり $_POST['bbb'] ではなく)その場で(この場合はonChangeの度に)PHPの値$cccに渡したい。 JavaScriptの「document.aaa.bbb.value」ではなく、PHP独自で現document上のFormの値を取り出すことは可能なのでしょうか?
546 :
545 :2006/01/20(金) 13:24:34 ID:yXtCuLJZ
誤爆...。 失敬
jspでタグリブをコメント(<!-- タグリブ -->)にしても実行されてしまいます。 タグリブを動作させないためには、削除するしかないのでしょうか。
ルーク、<%-- コレを使え --%>
>>547 なぜ<!-- -->でカスタムタグが動作しなくなると思うのか不思議で仕方ない。
ブラウザが見た目に表示しないというだけじゃないか。
sendRedirectした場合は、このメソッドからリターンされるのでしょうか
Javaの文法わかってますか?
いえ、メソッド内でスレッドを終了しているのかなと思いまして。 exit()てきなことですかね。
その下にSystem.outにでも出力してみればすぐ分かることだろうが。 アホ
>>552 もしそうだったらレスポンス返らないだろ。
>>555 なぜ?
exit()したらServletコンテナが終了するよ。
>>556 多くのサーブレットコンテナの実装はsendRedirect()の内部で
レスポンスを返すようにしていると思う。
そうするとsendRedirectの中でexitしててもレスポンス返せる。
550の勘違いの上で議論してもあんまり意味ないね、
細かい指摘でスマン
>>557 どうみてもTomcatのソースはsendRedirect()の内部でレスポンスを返すようなコードになってません。
本当にありがとうございました。
>>557 細かい指摘であることは謝る必要ないが、間違った指摘であることは謝ったほうがいいと思われ。
557の勘違いの上で議論してもあんまり意味ないね。
560 :
557 :2006/01/28(土) 19:54:24 ID:???
気に障ったみたいでごめんなさい。 Tomcatを意図してたわけではないんだけど、 Tomcatのソースを確認してみたら558さんの言うとおり sendRedirect()を抜けてからレスポンスを返し(=ストリームをフラッシュ)てますね。
561 :
nobodyさん :2006/01/29(日) 17:18:37 ID:gKzYFANK
jspをやろうと思ってソースコードを読んでみたのですが どこにも public static void main() が無いです。 不良品でしょうか?
どういう釣りだ、それは
HellowWorld.javaを継承しています。
HashMap、Propertyクラスで、keyをiteratoerで取得できますが、 putした順番または、設定ファイルに書いた順番で取り出すことは可能でしょうか
>564 LinkedHashMap 使え
>>565 ありがとうございます。
apiをみてみたのですが、PropertiesクラスにはLinkedはなかったのですが、
Propertiesにはないのでしょうか。
BufferedReaderで読込んで、LinkedHashMapに登録しかないでしょうか。
その時、unicodeのデコードの仕方がわかりません。
>>566 Properties って結局 String だけを出し入れすると決めて作られている HashMap だ。
イテレータの取り出す順番が入れた順番通りになる
……というのが保証された Properties は無いから
public class LinkedProperties extends Properties とでもして
put/putProperty と get/getProperty あたりをオーバーライドして自作しれ。
Class(各クラス)の振るパスを取得することは可能でしょうか。 getResourceAsStreamで読込んでいるテキストに、 更新したデータを書き込めなんていわれたので、 こいつのOutputStreamのパスがほしいでやす
>>568 ClassLoader#findResource
しかし、サーブレットなんだからgetRealPath使ったほうがいいな。
solarisやHPで、javaアプリが動いている最中に、ロード済みのファイルを上書き更新すると、 更新したクラスの処理に遷移した瞬間に、メモリエラー?のような、わけのわからないエラーになります。 同じ現象に悩まされた人はいるでしょうか?
>>567 ありがとうございます。
Properties のソース見たら、データ読込んで自身のputを読んでいたので
内部にLinkedHashMap持たせ、そこにプットします。
HashTableを継承じゃなくて、委譲だったら、持っているHashTableを変更するだけでよかったのですが・・
>>573 public java.lang.String getParameter(java.lang.String name)
要求パラメータの値を String として返します。
パラメータが存在しない場合は、null を返します。
要求パラメータは、要求とともに送信される追加情報です。
HTTP サーブレットの場合、クエリー文字列内または
POST された形式のデータ内にパラメータが格納されています。
パラメータに 1 つの値のみが含まれていることが確実な場合にのみ、
このメソッドを使用してください。パラメータに複数の値が含まれている
可能性がある場合は、getParameterValues(java.lang.String) を使用します。
……という事で仕様。
>>574 ありがとうございます。
GETが先に呼ばれるので、サーブレットの仕様としては
パラメータ配列の1番目はGETのパラメータということですね。
どーしてもリクエストをシリアライズしたかったので、↓なクラスを作りました。邪道ですか? public class CompactRequest implements Serializable { private String characterEncoding; private Map attributeMap = new HashMap(); public CompactRequest(HttpServletRequest request) { Enumeration enumeration = null; String key = null; this.characterEncoding = request.getCharacterEncoding(); enumeration = request.getAttributeNames(); while (enumeration.hasMoreElements()) { key = (String)enumeration.nextElement(); this.attributeMap.put(key, request.getAttribute(key)); } } public String getCharacterEncoding() { return this.characterEncoding; } public Object getAttribute(String name) { return this.attributeMap.get(name); } }
そんなコート書いた同僚が居たら そいつの席の周りを画鋲だらけにしたくなるほど邪道。 まずクラス名がおかしくないか。 あとパラメータ等を全部そのまま渡したら層を分ける意味がないし。
>>577 そーですか。
ちなみに私は、入力フォームビーンを
BLのデータマッピングビーンとしても使用してます。
超邪道でしょうか。
どんなフレームワーク使ってるかもわからんのに、入力フォームビーンとかいわれても知ったことではない。 バカの誇示ってとこか。
580 :
nobodyさん :2006/02/12(日) 17:57:56 ID:yYs6F7tU
はじめましてこんにちは。
Tomcatの質問になってしまうかもしれないのですが、
URLに.jspというような拡張子を表示したくないのですが、
エイリアスを設定することってできるんでしょうか?
たとえば、
http://hoge.com/aaa.jsp というようなアドレスにアクセスするときに、
http://hoge.com/aaa でアクセスできるようにしたいのです。
OSはWindowsなので、UNIXのシンボリックリンクのようなことはできないんです。
それから、ファイル名を全部index.jspにして、それぞれディレクトリを作るということも
ディレクトリが多くなってしまのでしたくありません。
Tomcatの設定で何かありませんでしょうか。
web.xmlでurlパターンをマッピングすれば?
582 :
nobodyさん :2006/02/12(日) 18:17:29 ID:yYs6F7tU
584 :
nobodyさん :2006/02/13(月) 14:12:00 ID:+1PT7SHK
すいません、教えてください。 今開発中のWebアプリをIFRAME内で動かしたいと言う案件が来まして その調査中なんですが、 どうもIFRAME内でリンクすると、sessionが初期化されてしまうようなんです。 これってばどうしようもないことなんでしょうか? 通常ブラウザで動いているときはそんなこと無いんですが・・・。
585 :
nobodyさん :2006/02/13(月) 17:12:24 ID:eySr8YL8
JDBCで、SQL文でinsert文を発行する場合Resultsetオブジェクトは必要になるのでしょうか? もし必要ないなら、そのままstatementオブジェクトをクローズしてOracleを 切断してしまっても構いませんか?
586 :
584 :2006/02/13(月) 17:32:35 ID:???
すいません、事故解決したっぽいです。
>>585 すれ違いだが、そもそもJDBCでinsert文を発行する方法わかってる?
588 :
nobodyさん :2006/02/14(火) 12:54:17 ID:z6Mrtg3V
サーブレットの方からインサートでOracleの表に2バイト文字のデータを 送信すると、Oracleの表の方で格納した文字データがどうしても文字化けしてしまいます。 何が原因なのでしょうか?また、解決方法はありますでしょうか?
原因特定を 『Oracle とサーブレットを使っている』 だけでやれというのか。文字コード設定がわかるエスパーきぼんぬ
まあ文字コードを統一すればいいと思うよ
まあ何事もそうだが、まずは問題の切り分けをしようぜ。 insertの直前にsystem.outに問題の文字列を出力してみることからはじめよう
>>591 System.outなんかすすめるんじゃねえよ。
デバッガ使えよ。
>>588 どの時点で化けているのか?から切り分けよう
リクエストパラメータを受け取った時点で化けているのか?
Javaアプリ内では化けていないが、DBに入れると化けるのか?
593 :
nobodyさん :2006/02/16(木) 17:44:53 ID:M8Q43SeU
こんにちは、tomcatの問題なんですが、jspを実行しよとしたら、以下のエラーが出てしまうんで、なんか解決方法ありませんか? 自分の理解では、「コンパイラが存在しない」らしいけど type 例外レポート メッセージ 説明 The server encountered an internal error () that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: No Java compiler available org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:387) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 原因 java.lang.IllegalStateException: No Java compiler available org.apache.jasper.JspCompilationContext.createCompiler(JspCompilationContext.java:224) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:559) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>>593 「コンパイラが存在しない」
そのものズバリです。JSPの実行にはコンパイラが必要です。
JDKじゃなくてJREがインストールされているとか、
JDKがインストールされていても、環境変数JAVA_HOMEがJDKをちゃんと指してないとか。
もしEclipseだったら「インストール済みのJRE」を見て
C:\Program Files\〜・・・じゃなくてちゃんとJDKインストールディレクトリが
指定されているかどうかをチェック。
595 :
nobody& ◆vGPd8m6uvw :2006/02/16(木) 17:55:50 ID:M8Q43SeU
一応自分の環境変数は以下になっていますが、いろんなサイドにも同じもの書いてありますが、、、 export JAVA_HOME=/opt/java export CATALINA_HOME=/opt/tomcat5 export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/tools.jar: export CLASSPATH=.:$CATALINA_HOME/common/lib/servlet-api.jar: export CLASSPATH=.:$CATALINA_HOME/common/lib/jsp-api.jar: export CLASSPATH=.:$CATALINA_HOME/common/lib/mysql-connector-java-3.1.11-bin.jar:
596 :
nobody& ◆QWv3R1XL8M :2006/02/16(木) 17:58:23 ID:M8Q43SeU
javaもjdkインストールさているし、、、 java version "1.5.0_04" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_04-b05) Java HotSpot(TM) Client VM (build 1.5.0_04-b05, mixed mode, sharing)
/opt/java にはJREじゃなくてJDKがインストールされているか?
598 :
nobody& ◆QWv3R1XL8M :2006/02/16(木) 18:08:22 ID:M8Q43SeU
JDKです。普通のjavaもちゃんとコンパイルできるから
Tomcatの起動時にはその環境変数は有効?
600 :
nobody :2006/02/16(木) 18:54:44 ID:M8Q43SeU
ルートに環境変数をいれたので、有効と思いますけど、なんか確認方法がありませんか? すみません、問題が複雑化してる。。。
関連する重要な環境変数は CATALINA_HOME/bin/shutdown.sh 又は startup.sh の実行時に出力されるから それで確認するといい。 それから、この問題には関係無いけど CLASSPATH の設定のやり方がおかしいぞ。 export CLASSPATH=.:$JAVA_HOME/lib/tools.jar: export CLASSPATH=$CLASSPATH:$CATALINA_HOME/common/lib/servlet-api.jar: export CLASSPATH=$CLASSPATH:$CATALINA_HOME/common/lib/jsp-api.jar: export CLASSPATH=$CLASSPATH:$CATALINA_HOME/common/lib/mysql-connector-java-3.1.11-bin.jar: こうしないと最後の設定しか有効にならんぞ
すみません。JBoss4に非常に興味があるんですが、 日本語の解説でテルページとか書籍とかありますか? 書籍とかだと出版予定はいつ頃になるでしょうか。 #なきゃ自分でサイト起こせ?
よろしくお願いします RedHatLinux9を使ってApacheとTomcatの連携をしたいのですが コネクターのコンパイルがうまくいきません ぐぐっていろいろなやり方を試したのですがどうしても連携することができません 使用しているソフトは httpd-2.0.46 Tomcat4 コネクターは jakarta-tomcat-connectors-jk2-src-current javaはj2sdk-1_4_2_10-linux-i586 を使用しています。
「うまくいきません」 「連携することができません」 でわかったらネ申だな・・・
そもそも、現在非推奨になっているJK2をなぜ使うのかが激しく疑問
608 :
nobodyさん :2006/02/19(日) 21:52:30 ID:/BUf/kK5
すいません、うちの会社(IT系ベンチャー)は、 パソにソフトをインストールするのに 許可が必要なのですが、 (管理者権限がないので自由にインストールできない) JAVAのインストールを希望したところ、 個人の勉強になってしまうという理由で入れさせてくれません。 どうすればいいでしょうか?
それは、「おまいはもっと他に勉強することがあるだろ?」ってことではあるまいか?
JSPとPHPとどっちがWEBプログラミング開発しやすいでしょうか? 開発するWEBプログラミングはネットショップです。 よろしくお願いします。
>611 「開発しやすい」じゃ抽象しすぎて答えようがない。 どのアイドルで一番チンコ勃つ?って聞くのと同じ。 というか、そんな質問する人が手を出していいものじゃない>ネットショップ
616 :
nobodyさん :2006/02/21(火) 14:05:29 ID:x/bdHv1B
端末の情報をJSPを使ってブラウザに表示する方法があるという 話を聞いたのですが本当でしょうか? httpサーバが無ければブラウザに表示することはできないと 思うのですが、JSPを直接Javaで実行すれば良いという話なのですが、 とても信じられないのですが、真偽のほどをよろしくお願いいたします。
何が言いたいの
でんぱー
619 :
602 :2006/02/22(水) 20:00:04 ID:???
3はそれなりに解説出てますけど。 4はまだのようですねぇ。 ううむ。 とりあえずJBoss4.0.3SP1落としてきていじってみてます。 おもしろいね。
>>619 「開発者ノートシリーズJBoss」は4対応らしい
かなり前にちょっとだけJSPとか勉強していたのですが、 sqlと繋ぐためのデータソース(っていうんでしたっけ)を ブラウザから設定できるマネージャみたいなツールが Tomcatについていたような記憶がおぼろげながらあるんですが、 何処からどうやってアクセスするんでしたっけ? たしか、JSPなどからデータベースへアクセスするためには そのデータベース名とパスワードとかを Tomcatの設定ファイルに手書きで追加する方法もあったと思いますが、 その辺の事をブラウザで追加できるようなツールだったと思うのですが… Tomcatは5.5が入ってます。教えてください。お願いします。
普通にjdbcでパラメタ設定してつなぐところまではできたのか?
サーブレットでresponse.sendRedirectした後にreturn文を書くべきでしょうか?
>>621 配布元で提供しているドキュメントぐらい読んでから質問しろよな。
625 :
621 :2006/02/23(木) 10:07:24 ID:???
>>624 いえ見たのですが、その、テキストでの設定方法しか見当たらないもので
質問させて頂いてる次第です。ほかの解説サイトなどの覗いてみたのですが
どこもテキストでの設定方法を掲載している所しか見当たらなくて・・・
tomcat admin managerでググれば出てくる。 その程度のことなら手で設定したほうが早い。
627 :
621 :2006/02/23(木) 10:23:56 ID:???
>>626 ありました!まさに探していた物です。
ありがとうございました。
requestオブジェクトからservletContextを取得できないでしょうか。
ServletContext application = request.getSession().getServletContext();
jspから直前のservletのパスを取得することはできるのでしょうか?
>>631 weblogicのrequestオブジェクトみたら、dispatchしたかとかサーブレットのパスとかあったので値が取れそうだが
インターフェーズにメソッドがない・・・。
結局むりかぁ・・・
634 :
nobodyさん :2006/02/26(日) 08:43:51 ID:NPCAqJtB
JSPと関係ないんですが、Tomcatのスレがないのでここで質問させてください。 Tomcat5.0.28を使っていますが、CGIの出力が文字化けしてしまいます。 中身はこれだけです。 #!/usr/bin/perl print "Content-Type: text/html\n\n"; print "<html><body>"; print "CGIテスト"; print "</body></html>" ここで、"CGI"は出力されて、"テスト"の部分は??????になります。 解決方法が分かる方いましたら、教えてください。
なんかすごいのが来たな
>>634 >#!/usr/bin/perl
あの、このスレのタイトルは読めますか?
>>634 優しい俺が教えてやろう、Apacheの設定部分を変えればいいと思うよ^^
634はTomcatでCGIを実行しているということなんじゃないか。 ファイルの文字コードとLocaleが違うという可能性があるが、これだけではわかりませんね。
639 :
nobodyさん :2006/02/27(月) 22:14:42 ID:YDzLn1vQ
>>639 つっこみどころ満載だ
・J2SEにはそんな型はない
・J2EEにもそんな型はない
・そもそも、HttpRequestなんて型は聞いたことがない
642 :
640 :2006/02/27(月) 22:35:26 ID:???
>>641 >ググレば出てくるだろ。
うわ、ホントだ!
C#とかRubyにはHttpRequestってあるんだ!!!
もはやネタなのか本気なのか判断に苦しむ質問ばかりだ
644 :
639 :2006/02/27(月) 22:43:26 ID:YDzLn1vQ
発見しました。 サンキュウ。
639がなにを発見したのか、非常に気になる・・・
646 :
639 :2006/02/27(月) 22:59:12 ID:YDzLn1vQ
質問はおろかどうして解決したのかすら分からんが、解決してめでたい
648 :
nobodyさん :2006/02/28(火) 17:21:44 ID:qp0JmiBB
ここで質問すべきかどうか悩みましたが、Web系ということで。。。 JSP+Servletで作られているあるページがあります。 ここにJNLPへのリンクを追加してSwingのクライアントアプリをダウンロードさせます。 まぁJColorChooserなんですけど、Chooserで選択されたRGB値を元のJNLP のリンクの張られたページで取得することは可能ですかね? 選択されたRGB値をまたリクエストに乗っけて業務ロジックまで持って行きたいので・・・ (JavaScriptで持てたりとか、hiddenで持てたりとかそれはなんでも良いんで)
普通にJWSアプリから送信すればいいじゃん。 色が拾いたいだけならJWSじゃなくてJavaScriptで作ればいいし、Javaでやりたいならアプレットでいいんじゃないの?
650 :
nobodyさん :2006/03/03(金) 13:44:31 ID:EyNjjtcX
ファイルのダウンローダを作りたいのですが、 サーバ内でのファイル名は12345.datのような管理用のファイル名になっています。 これをユーザーがダウンロードする時はprogram.zipのように変更したいのですが、 何かよい方法はないでしょうか。
>>650 そのファイル名をヘッダにセットすればいいんじゃないの?
652 :
650 :2006/03/03(金) 13:54:12 ID:EyNjjtcX
詳しく教えてください! ヘッダって、contentType=〜とかって部分ですか?
>>652 そう。そのヘッダに、
Content-Dispositionを追加する。
Content-Disposition: attachment;
filename=hogehoge.jpg; modification-date="Fri, 3 Mar 2006 14:05:04 +0900"
とかね
>652 つーか、ファイル名をセットしてないのか?
655 :
650 :2006/03/03(金) 14:18:41 ID:EyNjjtcX
はい。していません。 主任が知らないことを勝手にやると怒られるので
>>655 それでよくまともにダウンロードできるな。
・・・イヤな予感がするのだが、
もしかしてファイルをストリームに書き込むのではなく、
ダウンロードしたいファイルに直リンしてるとか???
別にそれでもいい場合はそれでいいじゃん
前回アクセスパスのリファラーは、どんなタイミングでも、IEなら必ず取れるのでしょうか?
>>658 結論を先に言うと、必ず取れるわけではない。
ノートンなどがリファラ送信を妨害したりするので
パソコン初心者でもリファラを切ってる可能性は大いにある。
世界シェア 10% に登る Firefox を使う人なら尚更だし、
他にもオプション設定でリファラを切れる IE コンポーネントのタブブラウザは多い。
仮にリファラ送信があるとしても 内容を完全に信用してはいけない。
リファラ偽造なんてスパムの常套手段だしな。
ForwardActionでリダイレクトってできないですか?
661 :
nobodyさん :2006/03/06(月) 16:00:46 ID:ZdLLPcti
WebベースのシステムをJavaで開発することになったのですが、 分からないことがあるので教えてください。 【やりたいこと】 商品マスタを検索するシステムなのですが、パフォーマンス的な問題から 商品マスタの内容を初回呼び出し時に1回だけ全件読み込んで、メモリ上の 商品マスタから検索するようにし、2回目以降の呼び出しからはデータベースに アクセスせずにメモリ上の商品マスタから検索するようにしたい。 環境:RedHut Linux Java Struts Apache2.0 + Tomcat5 PostgreSQL ググっても全然見あたらないので、どなたかヒントでも教えてくださいまし。
ほんとにパフォーマンスの問題があるのか疑問。 主キーを設定してないだけとか、コネクションプーリングしてないだけとかじゃねぇの?
663 :
661 :2006/03/06(月) 19:12:02 ID:ZdLLPcti
本当にパフォーマンスの問題かどうかは検証してないのですが、 客がこの方式を必須としているので、どうしても外せません。 どなたか出来る方法をご存じないでしょうか。
データキャッシュは、、製品では見たことあるが。 まあはっきりいってやめたほうがいいと思うが。 読んだデータをハッシュで保持して使いまわすんじゃだめかね。
要件言ってないからよーわからんが・・・ ふつーにサーブレットコンテキストに入れれば終わりじゃねぇ? あるかないか見に行ってなければ検索、同期処理も入れれば完了。 当然、鯖再起動するまでDBとデータ取れないがそれでよければ。
商品マスタの内容を初回呼び出し時に1回だけ全件読み込んで、メモリ上の 商品マスタから検索するようにし、2回目以降の呼び出しからはデータベースに アクセスせずにメモリ上の商品マスタから検索するようにすればいいじゃん。 特別な「やり方」なんてものはない。 そういうふうに実装すればいいだけじゃないのか? シングルトンオブジェクトかstatic変数にデータを持たせるようにして、 そのデータが空っぽなら、DBを検索して取得。 空っぽじゃなかったらそのまま返す。 これじゃダメなの?
>666 や ら な い か ?
Hibernateの二次キャッシュ使う プロジェクトでHibernate使えればの話だけど
2003ServerでTomcatにPHP4を連携させると、NTサービスが落ちる・・・ 素直にIISかApacheを上に使うべきなのかな・・・
jspにフォワードすると、サーブレットアクセス時のリクエストパラメータはリセットされるのでしょうか?
されません。 リダイレクトしたら消えます。
>>670 request.getParameter("xxx")をしたら、jspでパラメータが取れませんでした。
ちなみに、フォワードのパスに、?value1=aaa のパラメータをつけて、
jspでrequest.getParameter("value1")したら、aaaが取れました。
そーゆーものでしょうか?
データ重複を意味するエクセプションクラスはあるでしょうか?
675 :
nobodyさん :2006/03/12(日) 11:16:52 ID:OgFgeAfm
class DataTyohukuException implements Exception
implementsするのっ?!!
677 :
nobodyさん :2006/03/12(日) 14:43:47 ID:QZ63Zl7Z
jstl.jar と standard.jar を WEB-INF に配置して
以下 JSP を起動すると
<%@page contentType="text/html; charset=Windows-31J"%>
<%@taglib prefix="c" uri="
http://java.com/jsp/jstl/core "%>
<html>
<body>
<c:out value="こんにちわ"/>
</body>
</html>
org.apache.jasper.JasperException: 絶対URI:
http://java.com/jsp/jstl/core はweb.xmlとこのアプリケーションを配備したJARファイルのどちらかでも解決できません
というようなエラーが出ます。
原因わかりますでしょうか?
ちなみにローカル PC で試してます。
java.sun.comだろ。
680 :
677 :2006/03/12(日) 15:38:44 ID:QZ63Zl7Z
681 :
677 :2006/03/12(日) 16:38:02 ID:QZ63Zl7Z
以下 JSP を起動すると
<%@ page contentType="text/html; charset=EUC-JP "%>
<%@ taglib prefix="c" uri="
http://java.sun.com/jsp/jstl/core " %>
<%@ page language="java" pageEncoding="EUC-JP" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%
List list = new ArrayList();
list.add("aaa");
list.add("bbb");
request.setAttribute("list", list);
%>
<!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
</head>
<body bgcolor="#FFFFFF">
<c:forEach var="item" items="${list}">
${item}
</c:forEach>
</body>
</html>
${item}
と表示されてしまいます。
原因わかりますでしょうか?
>>681 Web App 2.4 で作ってないとか。web.xmlは2.4で書いている?
683 :
677 :2006/03/12(日) 17:37:12 ID:QZ63Zl7Z
>>682 2.3でした。
2.4の書き方に変更したらうまく行きました。
どうもです。
Tomcatの5.5.15使ってるんだけど タグファイルの dynamic-attribute ってまだサポートされてないのかな? タグファイルの中で <%@ tag dynamic-attributes="attrs" %><% String name = (String)attrs.get("name"); ・・・ %> こんなコード書くとattrsが見つからないって怒られてしまう。
685 :
684 :2006/03/12(日) 20:35:46 ID:???
ごめん。勘違いでした。 タグファイル内でJSTL使ってるにも関わらずタグライブラリ宣言してなかった。 でもなんでそれで変数宣言のエラーがでるのやら・・ ともかく無事動作しました。Tomcatでもサポートされてます。 お騒がせしました。
686 :
nobodyさん :2006/03/13(月) 09:42:04 ID:AXRgIRUk
JSP でのリクエストデータ取得にて <% String userName = request.getParameter("userName"); out.println(userName); %> だとうまく行くんですが ${requestScope.userName} とすると何も表示されなくなってしまいます。 なぜかわかりますでしょうか? ちなみに <% request.setAttribute("test", "test"); %> ${requestScope.test} は test と表示されます。
getParameterの戻り値の型は?
>>687 根本的に使い方を間違ってるから。
${requestScope.userName} でリクエストパラメータ値を取れたらオカシイ。
689 :
nobodyさん :2006/03/13(月) 22:05:44 ID:+jbYbRxP
>>688 そうなんだ?
じゃあリクエストパラメータをスマートに表示するのは
どうすればいいんだ?
${param.userName}
691 :
nobodyさん :2006/03/13(月) 22:25:41 ID:+jbYbRxP
おおお!!!
助けてください! 今EJBのリモート呼び出しを使用しています。 環境は、呼び出し元がWEBで、先がDB処理用になっていて、 ネットワークは物理的に分かれており、その間にfirewallがあるため、 EJBのプロトコルしか利用できません。 その中で、WEBでCSVファイルをアップして、それをDBに登録しろといわれ、 CSVのサイズが2M以上有り、EJBでやる以上、2Mをメモリにロードしなければなりません。 今の環境上、2Mもロードすると、サービスができなくなります。 FTP、SCPなどは開通させてくれません。 何かよい手はないでしょうか?
オブジェクトを分割しろよ
EJB関連の質問です。 ハードコーディングを避けるため、各種設定をファイルに記述して、 その内容で挙動を変えたいと思っています。 しかし、単にjarの中にファイルを含めて、コード中で new File(ファイル名) などとしてもアクセスできません。 どのようにすればファイルにアクセスできるでしょうか?
>>694 java.util.ResourceBundleでも使えば?
体よく、Javaでの納品を避けられてるのかもな(w 2MBのファイルのやり取りにDBは使いたくない。 毎日更新されるんだろ? CSV生成のエクセル入力だかを、最初からウェブに切り替えさせるか、更新処理だけクライアント側で専用アプリケーションでDB更新させて最小限の更新に止めるべき。 ファイルの記述がおかしい場合の検証とか面倒だし、バッファオーバフローもおきやすくなるけどな。
> その間にfirewallがあるため、 > EJBのプロトコルしか利用できません。 > その中で、WEBでCSVファイルをアップして、それをDBに登録しろといわれ、 > CSVのサイズが2M以上有り、EJBでやる以上、2Mをメモリにロードしなければなりません。 なんか、〜なので〜しないといけないというのが全然理由になってない気がする。
>>697 EJB知ってるの!?
もっとよく考えてみよう
>>697 ファイアウォールがあるとRMI/IIOPしか使えないのか?まったく理解に苦しむ理由だな。
同じ内容のwarをデプロイ名を変えて(ちがうWARアプリケーションとして)デプロイした場合、 つまり、同じ内容のクラスが、2つの区別されたWEBアプリケーションとして起動された場合、 同じ内容のクラスが共に存在しますが、それらは1つのものとしてWEBコンテナに管理されるのでしょうか? つまり、A、B名でアプリケーションがある場合、Aのクラスを変えた場合、 Bはその修正されたクラスのコードで扱われることになるでしょうか。 クラスは共にパッケージ名も同じで、おのおののWEB-INF/classesに入っています。
同じjarに詰め込んで起動してると共有してるけどな。 起動が別でjavavmが別なら別。
>>703 いえ。weblogicを使用しているのですが、1つのweblogicで2つのWEBアプリケーションを動かすということです。
java vmは1つで動いていました。jarファイルは物理的に分かれています。
>>704 同一JVM上でも、別アプリならクラスローダが違うからOKだよ
>>705 ありがとうございます。
助かりました。
jspのエラーページに、サーブレットを指定することは可能でしょうか?
708 :
nobodyさん :2006/03/18(土) 14:28:13 ID:H2i35bVY
ソースの文字エンコーディングは何にしてる? ISO-8859-1が一般的? UTF-8?
Windows-31J
新規で作るなら、 全部UTF-8にしたほうがいろいろ幸せだよ
全部をUTF8にすると… IEだとUnicode用のフォントが割り当てられるから、お客さんからクレーム orz またPostしたデータがUTF8で取れないケースがある
>>708 日本語使えない文字エンコーディングが一般的なわけないだろ
714 :
nobodyさん :2006/03/19(日) 15:12:54 ID:R+Ibm8gi
一つのサーブレットに対して一つのインスタンスを作って リクエスト分スレッドを立てて処理してる、であってる?
>>714 スレッドプールという仕組みがあるので
リクエスト分のスレッドというのは正しくない。
もっと多くスレッドが用意されているかもしれないし、
足りなければ増やされるし。Servletコンテナの設定次第。
716 :
nobodyさん :2006/03/19(日) 18:29:16 ID:R+Ibm8gi
一つのサーブレットに対して複数のインスタンスが作られることはない? ないとすると 同じインスタンス変数を全てのスレッドが参照できる?
ソースに日本語埋め込むと保守性悪いよ。 まさかコメントに日本語使えないと困りますか?
>>718 後に誰が見るかわからないし、客が見るかも知れないから
日本語でコメント書けた方がいいな。
トラブル起こすくらいなら避けるだろ。 本末転倒。
英語のコメントが読めない/書けないトラブルが発生します。
読めないのは他の人に頼めるが、書けないのは致命的だな。 brokenでもいいんだけど、書けない=>書かないは絶望的
723 :
nobodyさん :2006/03/21(火) 09:18:03 ID:wSge3oRZ
jspやhtmlからサーブレットにベクトル画像を渡して、 サーバ側でベクトル画像をビットマップ画像に変換するような事を 考えています。phpやperlではGDというグラフィックライブラリを使う みたいなのですが、javaではそういったライブラリは無いのでしょうか??
>>723 ベクトル画像というのがSVGならApache Batikというのがありますが。
725 :
nobodyさん :2006/03/21(火) 10:02:21 ID:wSge3oRZ
>>724 ベクトル画像はvmlで描いたものです。
vmlではだめでしょうか??
あんまり鯖側でやりたくない処理だな。 利用者が多くなるとスケールしなくなるよ。
>>708 UTF-8。
それがJava標準。
XMLもUTF-8が標準、
最近のLinuxもUTF-8が標準、
あのM$ですらドトネトでShift_JIS(Windows-31J)ではなく
Unicodeを推奨している。
そして最近のデータベースサーバもUTF-8が標準になった。
よってUTF-8で統一。
さもないとエンコーディングの手間が省けない。
>>718 日本語入りStringはすべてResourceBundleまたはJakarta Commons Configuration
または Spring Framework で外部ファイルに記述する。
コメントは
コンパイルオプションに-encodingを追加して
native2ascii.sh(.exe)またはApache Antの<native2ascii>タスクで
ASCIIコードに変換してからコンパイルなりJavadoc生成なりすれば
万事解決。
でもメールはISO-2022-JPだからね。 UTF-8で処理するとどうしても化ける。
730 :
nobodyさん :2006/03/23(木) 22:51:59 ID:mJKQp3xR
レベルの低いことをおたずねしてすみません。 今、jspのjavascript中に定義した変数を submitによりサーバ側に渡して、処理を行うことを考えている のですが、うまくサーブレットに渡りません。 教えていただけましたら大変助かります。 以下がそのプログラムです。 プログラム中のdocument.getElementById("l_x").value = buf_x; およびdocument.getElementById("l_y").value = buf_y;をサ ーブレット側のrequest.getParameter()等で読み込めないので しょうか?? <form name="fm" method="POST" action="../../Servlet"> <input type="submit" value="保存" OnClick="return save();"/><br> </form> <script> function save(){ var buf_x=""; var buf_y=""; buf_x += LogX[i] + "|" buf_y += LogY[i] + "|" document.getElementById("l_x").value = buf_x; document.getElementById("l_y").value = buf_y; document.fm.submit(); } </script>
これはまた色々とツッコミどころ満載ですね とりあえずスレ違いな
733 :
nobodyさん :2006/03/24(金) 15:57:15 ID:xohjbFYV
>>732 730です。ご返答ありがとうございます。上のプログラムは多少間違っていました。
MIMEタイプの指定ですが、具体的にどのようにすればよいのでしょうか??
先ほど、一度試しましたが、どうしてもサーバ側でrequest.getParaを行うと
nullが出てしまいます。
JSP初心者なもので、大変困っております。
プログラムの詳細を言っていただけると大変助かります。
どうか、おたすけ下さい。
MIMEで設定しても、メーラにその機能がなければ見れないし。残念。 utf-8対応メーラって少ないよ。RFCにないし。
日本語メールはJISで送る。それがRFCだし、ほとんどのメーラの仕様。
apacheとTomcatを連携させたのはいいのですが、その環境に .htaccessを有効にすることはできないのでしょうか?
>>737 できる。
もし、本題が.httaccessを有効にすることではなく
基本認証を有効にすることであるなら、Servletコンテナの認証機能を使えばよい。
>>737 つserver.xml, context.xml
HTMLメールはゴミ。 メール鯖で捨てられる所も多いよ。
MUAでも捨てられるな。うちがそう
743 :
nobodyさん :2006/04/09(日) 16:53:39 ID:w+aWNdK3
携帯でショッピングサイトを製作していて困ったことになっているので質問させてください。 ショッピングカートはセッションで保持しています。 携帯ではクッキーが使えない?のでjsessionidをURLに付加してリクエストを送信しています。 ここまでは問題ないのですが、 カート情報を保持した状態でHTMLの静的ページからカートに商品を入れるようなことをしたいのです。 どういうことかというと、 商品を検索、一覧から選択→カートにいれる→買い物を続ける の流れの中で "今週のおすすめ品"みたいなページ(客がつくるらしい)がHTMLでつくってあって それを選ぶと先ほどまでと同じようにカートに追加されるようにしたいのです。 HTMLからsessionidは渡せないのでどうしたものかと・・・。 よい解決法がありましたらご教授ねがえないでしょうか?
俺なら HTML を include して JSP で表示を行う。 これなら jsessionid は死なないで済む。 ブラウザの URL に拘る必要がある場合は交渉して不要にしてもらう
URLにjsessionidがついてる時点であれだから、URLの問題はokな気がする
746 :
743 :2006/04/10(月) 14:22:44 ID:a6jXcl8b
url-patternで*.htmlだったらインクルード用のjspを呼び出すようにしてみました。
<jsp:include page="<%=request.getServletPath()%>"/>
するとincludeしたときにもurl-patternにマッチするらしく
1 〜〜.htmlを呼び出す
2 インクルードjspへ遷移する
3 インクルードで*.htmlにマッチ、1に戻る
で無限ループになってしまいました。(100週くらいすると勝手にエラーで落ちる)
ほかの方法として
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=13526&forum=12&4 のようにhtmlに対してフィルターをかけることができないか模索中です。
レベルの低い質問で申し訳ありませんが引き続きおねがいいたします。
Tomcat5.5について質問なのですが、 JSP+Beanで動かす場合のclassファイルの置き場所はどこでしょうか。 4系とは違うのですか?
>>747 Tomcat5.5についての質問ではないし、マルチだし。
消えろ
とぉーんまキャット
751 :
nobodyさん :2006/04/29(土) 18:32:04 ID:kQOF8iLN
サーブレットのプログラム内でファイルを出力すると 環境によってファイルの位置が微妙に変わってしまいます。 例えばeclipseからコンテナを起動してファイルを出力するとeclipseのホームディレクトリに出力されます。 これをどのような場合でも コンテキストルート/WEB-INF/file に出力したいのです。 そのためにコンテキストルートまでの絶対パスを取得したいのですが方法がわかりません。 わかる方教えてもらえませんでしょうか。
getRealPathかなんか。
TomcatとEclipseでOKならいいけど、 「どのような場合でも」となるとコンテナによっては アプリケーションのディレクトリには出力できないこともあるよ。 そういうときはデータ用としてどこか外部のディレクトリを使った方が ポータビリティが高い。
サーブレットからなら getServletContext().getRealPath(""); でいいんでない?
getServletContext().getRealPath("/"); じゃないの?
getRealPathってサーバ上のディレクトリか。 もう一つURLを表すパスを返すメソッドもあったよな
JSP2.0に対応していないとELは使えませんが、JSTLは使用できるのでしょうか
> JSP2.0に対応していないとELは使えませんが、 JSP1.2でも使えます。ただし、JSPボディ部に直接書けるのは2.0からです。 > JSTLは使用できるのでしょうか 使えます。
>>758 ありがとうございます。
現在weblogicを使用していますが、weblogicのjarファイルにjavax.servlet.jsp.elパッケージがありません。
この場合このバージョンのweblogicでは、elは使用できないのでしょうか。
>>759 JSP仕様に含まれるのは2.0から。
JSP1.2まではデフォルトで追加ライブラリ無しで使えるわけではない。
761 :
nobodyさん :2006/05/03(水) 01:48:24 ID:kMBht7v/
くだらない質問なんですけど、 Googleの検索エンジンの実装ってServlet使ってたりするんでしょうか
>>761 聞いたタイミングがGWってこともあるのかもしれんが、まだ誰もレスしないってことは
中の人に聞くしかないってことかと。
なぜなら、Servletはエンジンを実装する技術じゃないからです。
さすがに検索だけならPerlやCでやったほうがいいだろう。 株価や銀行預金、ネットワークストレージといった、 データをサーバに頻繁に間違いなく確実に保存するサービスを 行使するならServletのほうがうってつけだが。
「やったほうがいい」とまでは思えない。 すごく単純な検索ならやってもまあいいか、ぐらいには思うこともないこともない。
>>759 ありがとうございます。
設定の参考になるサイトとかはあるでしょうか。
>>760 すいません。いまいちやり方がわからないのですが、
commons-elのjarをクラスパスに通すだけで使用できるのでしょうか。
web.xmlにも設定が必要なのかなと思い調べてみましたが、
jsp2.0のものばっかりだったので・・・
768です。 758が言っていた、「JSPボディ部」とは、HTMLをべたで書いている場所ということですね。 勘違いしてました。 jsp1.2では、タグリブのアトリビュート内にしかかけないんですよね。
<a href="ウェブアプリ自身のパス/hoge.jsp"> と出力したいんだけど、ウェブアプリのパスってどうやって得るのが良いでしょう?
>>770 HttpServletRequest#getContextPath()。ServletAPIをもっと読もうよ
772 :
770 :2006/05/14(日) 21:44:46 ID:???
<%=request.getContextPath()%>/hoge.jsp とか、いちいち書かないといけないわけがないと思ってたんだが・・・ 標準のtaglibsでなんかないのかね。
Strutsならhtml:linkタグを使うし どちらかというと、Webフレームワークに頼る部分なのかも
質問です。 レスポンスのHTMLをゆっくり出したいのですが、できますか?
${request.contextPath}/hoge.jsp
>>774 JSPでは無理。JavaScriptでdocument.writeでhtml1行筒出力
数行ごとにウェイトいれるとか?
ゆっくり出したいなんて要件、初めて見た。 簡易アニメとかパラパラマンガなのかな?
そこでAjaxですよ。
EJBやサーバーサイドJava技術を学習するのにお勧めの書籍ってどんなものがありますか?
ない。仮に現時点での良書があっても、Java EE 5で上書きされちゃう。 ネットの情報探したほうがいいよ。SunのSDCとかIBMのdeveloperworkとか@ITとかさ。
>>777 JSPで無理なら、サーブレットでやればいいじゃない
マジレスすれば、フィルター作って出力中にウェイト入れてやればいい。
784 :
nobodyさん :2006/05/21(日) 01:39:53 ID:yJz5Uytv
初めまして。Java初心者です。 ここで質問すべき内容では無いのかももしれませんが・・。 HTTPヘッダ(リクエストヘッダ)に値をセットするには どうしたら良いのでしょうか? JavaのServlet側では、req.getHeader("hoge")で値が取り出せるのは 分かりました。 が、送信側でどうやったら良いのか解りません。 他のHTTPヘッダ(user-Agentとか)と同じ感じでデータを取り出したいのですが・・。 METAタグを使用したらHTTPヘッダに値がセットできるというような事を見つけて、 <META name="hoge" content="abcde"> <META http-equiv="hoge" content="abcde"> とか試して見ましたが、もしかして全然見当違いな事をしてるんでしょうか・・? 試してみたのは以下のような環境です。 1.test.htmlに上記METAタグを記述してPOST 2.POST先にはローカルのTOMCAT上で動いているServletを指定 3.servletでreq.getHeader("hoge");としてみたが、値取り出せず(NULL) どなたかご存知な方、ご教授いただけないでしょうか? 宜しく御願いします。
response.setHeader
ありがとうございます。 それはつまり、「次にリクエストを投げようとする画面」を出力する際の レスポンスに、予めsetHeader()で値をセットしておけという事でしょうか?
787 :
" :2006/05/21(日) 02:37:14 ID:???
>>786 状況的には、自分がブラウザでアクセスしてるんでしょ?
そのブラウザが値を送ってないなら、サーバ(Servlet)側で値が取れるわけないよね。
LiveHttpHeadersとかIEHttpHeadersとかで、やり取りを観察してみたらいいと思う。
あとhtmlのmetaタグは関係ない。
>>786 次のリクエスト時に値abcdeをリクエストヘッダhogeで送ってくれ、と
ブラウザに指示を出すにはどうしたら良いか?
ということかな。
で、それによって何をしたいんだ?
何をしたいのかによってはCookieが使えそうだが。
Javaのプログラムからリクエストを発行するなら URLConnection#setRequestProperty
皆さんありがとうござます。 やりたい事というのは、認証のみのポータル画面(新規作成)があり、 既存のアプリへシングルサインオンを行いたいんです。 このポータルと各アプリへの情報引渡しにHTTPヘッダを使おうと思っていました。 なので、処理の順番を書くと、 1.ポータルでログイン 2.サーバ側で認証を行い、メニューを表示 3.メニューのリンククリックで、各アプリの処理へ遷移し、 遷移先のサーブレットでユーザ情報を受け取り、 今までのログイン処理を行わずに各アプリのメニューを出す といった感じです。 で、まだポータルの方の処理が出来上がっておらず、とりあえず既存のアプリに 対してベタ書きのHTMLからリンクしてみて、HTTPヘッダに情報を渡せるかどうかを 試していたところです。
なぁ、Javaのエンジニアってさぁ 「方法」が目的になってるよね。 いちど目を覚ましたほうがいいよ。 自分たちでどんどん面倒なことを増やしているだけの馬鹿です。 会社(顧客)から金をもらって、パズルを解くのが趣味の連中ですよ、お前らは。
792 :
" :2006/05/21(日) 06:08:52 ID:???
Javaのエンジニアと誰を比較してそう言ってるの?
そういう傾向があるのは認めるがスレ違いなのでよそでやってくれ
>>791 なぜJavaエンジニアに限定されていると思うのか
>>794 方法が目的になっている(ことが多い)ってことじゃないのかと。
素直に目的を達成しようと思えば、 当然のように出来てるからってのもあるな。
799 :
nobodyさん :2006/05/22(月) 03:28:39 ID:Oh8EsbuK
>>791 同感。
Javaでプログラミングすると、本来ちからを入れるべきのアルゴリズムの方に頭を使う余裕がなくなるんだよね。
昔のVBの時代は、アルゴリズムに集中できてよかったよ。
Javaでは新しい開発手法がどんどん出てくるから 修得して効率が上がってくるころに陳腐化してしまう というのはあると思う。
JSF+EJB3でやっと落ち着いたけどね。
EJBは糞。絶対流行らん .netの方が10000倍マシ
>>803 まあ、2.1までのEJBは糞だと思うけど
EJB3のどのあたりが糞?
JSFで落ち着くかなぁ。 あれで皆満足するとは思えないよ。
JSFもEJB3も、もうちょっと現場で鍛えられる必要がありそう Servlet/JSPの初期バージョンの頃みたいに、標準仕様に加えて実装が提供する拡張機能を使うことになるのでは? ただし、EJB2まではそもそも現場の実情とかけ離れたものだったから ようやくJ2EE(JavaEE)が、使える統合環境になるきっかけにはなりそうな気がする
単にVBだと制限多くてあるもの使うしか無いからアルゴリズムに専念するしか無いのと、 Javaではまともなフレームワーク使ってないから、面倒な所まで実装する手間が多くてアルゴリズムまでたどり着けずに疲れちゃうってだけでは? まあVBが簡単にできるってのはそう言う製品だし当たり前。 VBだと制限多くて使いにくいと思わないほうが、スキルの低さを露呈している。 Cもまともなフレームワークが無いという点ではVBと同じだ。 JavaのEJBは結構いいとおもうけど。JSPはあんまりメリット無い。JSP使うくらいならPHPで十分だ。
> JSPはあんまりメリット無い。JSP使うくらいならPHPで十分だ。 はぁ?
さくっと作りたいならPHPでいいんじゃないか。 ただ堅いシステム作るなら、やっぱJavaだ。Javaのが軽いしね。
さくっと作りたいなら、PHPなんか使わずJavaだろ。 Studio Creatorあたりで。
動作環境までさくっとやりたいならPHP。
Tomcatインストールがそんなに難しいか? Javaでそこらへんのツール使えばほぼコーディングなしでできるようなシステムを、PHPなら面倒なコーディングしないといけない。 その時間にJDK+Tomcatのインストールは終わるだろ。
さすが末端プログラマは自分が動作させることしか考えてないな。 運用コストがどれだけ違うと思ってるんだ。 今までショボイHPしか持っていなかった顧客が運用するのに Javaの敷居がどれだけ高いと思ってるんだ。
まああれだ。
>>812 は手段が目的になっているいい例だ。
批判という手段が目的になってるからさ。
はじめにSJISで取得して、状況に応じてUTF-8にしたいのですができません。 setCharacterEncodingは一度しか指定できないものなのでしょうか?
javadoc位読んでくださーい 答えが書いてありますから
書いてないですが??
>>815 その発想が末端プログラマ。
技術の選定に運用コスト度外視などあり得ない。
>820 >動作環境までさくっとやりたいならPHP。 に対してのレスでなに語りだしてんだ。狂犬かおまえはw そもそも仕事で使う話だったか?運用コストの評価基準もケース次第だろう?
質問する場所を間違えました。すいませんでした。
どっちかつーと質問の方法がなって無いと思うがな まあイッてらっしゃい
>>822 仕事の話じゃないの?
素人の趣味の話なら好きなの使えばいいじゃん。
・・・
趣味でサーバサイドJavaも酔狂だと思うけどね。
自分のPC上で動かすだけならWebアプリという時点でばかげているし、
ネット上に公開するならそれこそ、運用コストがバカにならん。
Servletコンテナは事実上、自宅鯖しか選択肢が無い。
趣味でイントラでWebアプリとか言うなよw
視野の狭い人だなぁ
PHPが使われてるシステムってJavaより多いでしょ
829 :
nobodyさん :2006/05/25(木) 03:16:01 ID:QeGeWT1o
>>809 PHPより、Javaでプログラム書く方が動作が重くならないか?
変数1つ参照するのにset/getメソッドをワザワザ使ってアクセスしたり、
多段階の継承をしたら、どう考えたって処理が増えて重くなると思うが。
>>829 どう考えても処理が増えて重くなる多段階の継承しか考えられないという、己の限界の吐露ですか?
getter/setterくらいで遅くなると気にするのなら Cとかアセンブラ使った方がいいと思うが
継承やメソッド呼び出しのオーバーヘッドと スクリプト言語であるPHPの実行速度を比べる方がどうかしている。
お前らオブジェクトのメモリ上の使用バイト数を見ないでそんな事いってるんだろう。 PHPやCが文字列を生成するときのバイト数は ほぼそのまま文字のバイト数を使用する。 一方、オブジェクト指向であるJavaは、 メソッドや変数をてんこ盛り含んだStringオブジェクトを生成している。 つまらない仕事をするために呼び出すオブジェクトが 他の言語に比べてメモリ馬鹿食いだし、newのコストも大きいのは明らか。 結局そういう言語仕様に原因のあるコストを、 ユーザープログラムの方で考慮しなくてはならなくなる。 便利なんだか不便なんだか。
で?スクリプト言語であるPHPの実行の方が速いと言いたいの? ネット証券のオンライントレードシステムのような、 大量のトランザクションの同時処理・高レスポンスが要求されるシステムをPHPで作ってみてから言えや。
PHPの方が速いよ
>>833 PHPの言語やらライブラリの前ぶれのない仕様変更にふりまわされるコストの方が高い。
>>835 それにしちゃ、応答性能や多量のトランザクションの並列処理が要求されるシステムで使われないよね。
証券やチケットの販売サイト等は大抵、Javaか.NETだ。
PHPのバージョン間の互換性のなさはJava以上に苦労させられるよな・・・
>>833 ではJavaのStringオブジェクトの
メモリ上の使用バイト数はどれくらいなのでしょうか。
具体的に何バイトか教えて頂けないでしょうか。
もちろん「n文字の場合はmバイト」という形になるかと思います。
また後学のためにも、Javaのオブジェクトのメモリ使用量を
調べるor計測する方法もポインタだけで良いので教えて頂けると助かります。
ちなみに私は、オブジェクトの占有メモリにメソッドは関係ない
と認識していたのですが、こちらも参考になる資料などありましたら
教えて頂けないでしょうか。
なんだか教えてクンで申し訳ないのですが、よろしくお願いします。
840 :
nobodyさん :2006/05/26(金) 04:57:09 ID:9JidkkLu
Tomcat5とActivePerlの連携をWindows2000で試しています。 web.xmlの設定を行って、WEB-INF/cgi配下に設置したcgiを動かす事には成功したのですが、 同じディレクトリに配置した非cgi(txt,html,画像ファイル)にアクセスできません。 ログを見るとrunCGI (stderr)が非cgiに対して出ていて、そりゃCGIとして解釈しちゃダメだろ、とは 思うのですが、この問題を打開して同一ディレクトリからCGI・非CGIを込みでアクセスさせる設定とか ありますか? server.xmlでcontextを同じところに割り振ってみたのですが、そうすると当然こちら優先で 肝心のPerlが解釈されなくなる状態。うーん。
WEB-INF配下は普通見れないようにするんじゃないか?
WEB-INF下って見れるようにできたっけ・・・
見れないよ。 それ以前にCGIはApacheでやった方がいいよ。
WEB-INF配下はクライアントから直接アクセスできない
>>840 静的ドキュメントはWEB-INFの下に置く必要がない。
WEB-INFと同じ階層に置くか、Apacheと連携してるなら
ApacheのDocumentRootに置くべし。
てか、そもそもcgiをWEB-INFの下に置くのもおかしいな。 やっぱApacheとTomcat連携させてApache側でCGI処理させるべし。
>>841 -
>>846 レスありがとうございます。
確かにWEB-INF配下は通常サーブレット等の置き場所なので、アクセスできないのはTomcatから見れば
当然でした。web.xmlではCGI関連がこの設定でデフォルトコメントアウトされている・・・
その後いじってみて、 param-valueにWEB-INF/..とかなり想定外の書き方をすればルートから見て
CGIを動作させることは可能。ここでurl-patternの中に*.cgiで拡張子指定ができれば、振り分けが
できそうなのですが。現状認識に失敗しています。
もちろんワイルドカード一個で指定すればPerlスクリプトは動作するのですが、これはあらゆるファイルが
マップされて肝心のJSPが動作しなくなる。
実用外ということで、IISかApacheでの構築になりますね・・・ちょっとCGI連携には期待してたんですけど。
連投失礼します。 さっきのurl-patternの中に*.cgi設定ですが、書き方をミスってて正確に書き直したところ、 打開に成功しました。現在ルート上からCGIとJSPが同時にアクセスできる状態です。 サブディレクトリからもCGI呼び出しを行うことが出来ました。 あとは*.plや*.pmに同時にマッピングできるかどうか。 とりあえず実験終了ということで。回答してくださった方、ありがとうございました。
いや、呼べたとしてもApacheでやった方がいいよ。マジで。
やったほうがいいとかそういう議論の前に、持ち込む意味はあるのかと問いたい。
ま、実験なんだから好きにしろとしか。 もちろん俺はやらないが。
大量のトランザクションの同時処理・高レスポンスが要求されるシステムをPHPはおろかperlでがんばってる所も有るね。 ヒント:ミクシ
853 :
840 :2006/05/26(金) 22:46:14 ID:???
>>851 単にMTとかがTomcatだけで動いたら面白いじゃん、ってことですよw
なんらかの不具合が確認できたら、それはそれで今後のNGを説明する根拠になりますし。
後はバージョンアップのバグフィックス報告を楽しむネタだけでも。
>>852 Mixiと、証券やチケット販売サイトの大量のトランザクションの同時処理なんて
比較にならんと思うが?
>>852 ヒント:PHPよりはPerlの方が優れている
一番裁けるのは.net
むしろ分散もStarfire導入も可能なjavaのほうが捌ける。 トム猫に依存するとアパッチ3に成った時に困ることに成ると思うなあ。 まあPHPのほうがマイナーアップデートレベルでも困ることのほうが多くて、MTとか大変だけどな。
>852 一応動いている程度のサービスレベルのやつを例として上げるのはどうかとw
ミクシって日本最大のSNSじゃなかったっけ? SNSなんてちっぽけと言われればそれまでだが。実際ミクしやってる会社もベンチャで零細だしな。
mixiみたいに数100万人も会員がいるSNSは、一応動いてるだけでも技術力いるぞ。
> トム猫に依存するとアパッチ3に成った時に困ることに成ると思うなあ。 apache3 なんて出るの?
おまえら スレタイ見ろ
Java帝国の存亡の危機なんだよ。 ただいまperl廚が侵略中。
mixiはJavaではまともに動かないと主輪wれ
それもない。 mixiのボトルネックはデータベースだから。
866 :
nobodyさん :2006/05/28(日) 21:16:47 ID:oiWgbc2/
すみません。久々にJavaをやってみようと思ってJSPの本を1冊買ってきて、そのまま環境設定しました。
JDK1.5.0_04 Tomcat5.5.9 OS:Windows2000
本に書いてあるとおり設定したんですが、JDKをインストールしてパスを設定、TOMCATをインストールしてjsp-apiとservlet-apiにクラスパスを設定。
以上のあと、samples1というフォルダをwebapps内につくりそこにSample.jspをつくるとうまく表示されました。
その後、samples1フォルダ内にWEB-INFフォルダをつくり、さらにその中にclassesフォルダをつくりサーブレットを作りました。
コンパイルするとSample.classができました。しかし、web.xmlを作るとSample.jspも表示されませんし、Sampleサーブレットもだめです。
web.xmlを削除するとSample.jspは表示されますが、
http://localhost:8080/samples1/servlet/Sampleとしてもサーブレットは表示されません 。
どうしたらいいでしょう?次に、web.xmlを貼ります。
867 :
nobodyさん :2006/05/28(日) 21:17:59 ID:oiWgbc2/
ミクシのデータベースってマイエスクーエルだっけか。オラクル買えない貧乏企業だからなあ。 ラコテンはオラクル使ってるのに。
>>868 楽天でもかなりの部分がPHP/MySQLになってる。
現在の開発体制だとJava/Oracle(またはImfomix)とPHP/MySQLが半々ぐらい。
871 :
866 :2006/05/28(日) 23:27:30 ID:???
872 :
866 :2006/05/28(日) 23:28:05 ID:???
import javax.servlet.http.*; import javax.servlet.*; import java.io.IOException; import java.io.PrintWriter; public class Sample extends HttpServlet { public void doGet( HttpServletRequest req, HttpServletResponse res ) throws ServletException, IOException { res.setContentType( "text/html; charset=Shift_JIS" ); PrintWriter out = res.getWriter(); out.println( "<html>" ); out.println( "<head>" ); out.println( "<title>Sample</title>" ); out.println( "</head>" ); out.println( "<body>" ); out.println( "HelloWorld!" ); out.println( "</body>" ); out.println( "</html>" ); } } よろしくお願いします。
>>871 >>Servletはデフォルトパッケージで作るな
>の意味がちょっと良くわからないのですが・・
Servlet以前に、入門書で基本文法から勉強し直し。
>>868 開始時はこんなにユーザー増えるとは思わなかったんだろう。
それに最初は赤字企業だったしね。
あとオラクルは設定やらメンテやらにそれなりの人間が必要。
875 :
866 :2006/05/28(日) 23:54:27 ID:???
デフォルトパッケージの意味はわかったけど、本にはパッケージ内に作れなんてかいてないよ。 サーブレットってそんなにめんどくさかったっけ??昔やってたころには ほいほい開発できた印象があるんだが・・
876 :
866 :2006/05/28(日) 23:55:28 ID:???
ああ、肝心な結果を書くのを忘れてしまった。 結局パッケージに入れてもだめでした。
>>875 デフォルトパッケージで型を作成するなんてどう考えても非常識だからな。
「だめでした」ってどうダメなんだよ?
web.xmlはちゃんと修正したか?
878 :
866 :2006/05/29(月) 00:17:46 ID:???
>>877 web.xmlもちゃんと修正しましたよ。package hogehoge;で宣言したとすると
web.xmlは<servlet-class>hogehoge/Sample3</servlet-class>
としました。
エラーは相変わらずの「HTTPステータス 404 - /chapter03-3/Sample3 〜〜 The requested resource (/chapter03-3/Sample3) is not available.」
がでます。クラスファイルを変えましたが、アドレスバーには、ちゃんと
http://localhost:8080/chapter03-3/Sample3としています 。
>web.xmlは<servlet-class>hogehoge/Sample3</servlet-class> いったい何を根拠にそういう設定をしたのか? <servlet-class>hogehoge.Sample3</servlet-class> だろうが。 完全限定クラス名って知ってるか?
880 :
866 :2006/05/29(月) 00:28:07 ID:???
まちがえました。 <servlet-class>hogehoge.Sample3</servlet-class>です。 今日は、寝ますので、ありがとうございました。
web.xmlを修正してもアプリをリロード・再デプロイ・Tomcat再起動してなかったりしてw
882 :
866 :2006/05/29(月) 00:33:44 ID:???
883 :
866 :2006/05/29(月) 00:36:31 ID:???
おお、貴方すごいですね!!
>>881 まったくその通りですよ!最初からそういってくれればいいものを。
884 :
866 :2006/05/29(月) 00:37:06 ID:???
皆々様ありがとうございました。いっぱいのんでてきもちいいです。 ねまう。
885 :
866 :2006/05/29(月) 00:43:14 ID:???
なんだよ・・パッケージ入れなくてもできんじゃん。tomcatのリロードすりゃー。 でもJavaBeansは絶対に入れなくちゃいけないみたいだね。 しかし、本には、TOMCATのリロードなんてかいてないぞ。昔は、invokerにしてたから web.xmlなんてかかんくて、そのままアドレスバーにうってたんだった。 おやふみ。
たしかに一昔前のServlet/JSPの本は、invokerのサンプルだらけだったし デフォルトパッケージでクラス作ってる例も沢山あったな
888 :
nobodyさん :2006/06/06(火) 23:48:05 ID:I3C9/ZVj
どなたか経験ある方いらしたら教えてください。 localhsotでWebアプリをたて、ファイルアップロードを行う画面において エンコードタイプ Multipart-dataを指定した、ファイルを送信しようとした際に ファイルデータがlocalhost上のServletまでとどかないのです。IE5.5でWEbアプリは WASD(5.1)です。ちなみに、他の端末から、そのlocalhost上へのファイルアップロードは かならずポストリクエストをとばすのですが、自身(localhost上でブラウザからキックした 場合)に、ランダムにポストが飛んだり、飛ばなかったりするのです。全くもって理解不能な動きをします。 ファイヤーフォール等の線は試したのですが、だめでした。情報不足とは思いますが、どなたか 参考意見ありましたらお願いします。
ここまで自己流表現・情報不足・誤字脱字(と思われる)が多い人のやることだったら そりゃあ、うまくいかないでしょ、と思うよ・・・・
892 :
nobodyさん :2006/06/09(金) 17:09:04 ID:I2GOtwYs
いやーRedHatのJBoss買収完了しましたね これからはJBossでEJB3の時代ですな
どうかなあ? jspなところがいまいち。
(゚Д゚)ハァ?
jsp以外の実装無いし。java=jsp
乱立しすぎて困ってるのが現状ですが何か?
>>895 意味がわからん。
JSPがいやならVelocityでもFaceletでもMayaaでも使えばよかろう。
どれもxmlで違いは無いね。 非xmlのってないの? xml生成面倒だ。
VelocityがXMLか? 批判するならちっとは勉強しろや
.vmはHTMLだからむしろjspと大差ない。
こいつ、なにいってんの?
Velocityは汎用的なテンプレートエンジンだから、HTMLに限らずメールであろうが CSVであろうが、なんでも出力できる。 と、みんなは言いたいわけだね。
それに、「HTMLだから」というのが、なにを言いたいのかわからない。
そんなに今のViewが嫌なら、クライアント側は全てAjaxで作れ ついでにC/S構成にしてしまえ
ajaxは所詮ジャバスクリプトだ。
jspもxmlもhtmlもイヤだとして、何だったら満足いくんだろう。
txtとか
cvs
909 :
nobodyさん :2006/06/15(木) 16:16:02 ID:gjW+T8+0
HttpServletRequestからgetParameterで HIDDENの値が取れないのですが、 getParameterでnullになることって 送信側(JSP)の方にそのHIDDENがない場合以外 あるのでしょうか? JSP側 <INPUT type="hidden" name="key" > サーブレット側 String val=request.getParameter("key"); if (null == val){ // エラー処理 }
>>909 とりあえず、hiddenフィールドにvalueがないが…
サーブレット側ではhidden/text/passwordは区別ないかと。
911 :
marcf :2006/06/16(金) 21:35:25 ID:???
これからは JBoss + JBoss Seams + EJB3 + AJAX 最強。 日本ではクラスタリングとか EJB のトランザクション・セキュリティ機能とか 考えなされすぎ。 JBoss は EJB3 の Bill Burke 、Hibernate の Gavin King もいるし。 JBoss しかないよ。 だいたい Tomcat のコードの6割は JBoss 社員が書いてるわけだし。 EJB3 のスペックリードにも JBoss 絡んでるし。 Seams は Gavin King ってのもいいね。
EJB3って、Hibernateと同程度にしか使えないよね。
そんな複雑な構成のメンテなんて氏んでも嫌だな。 アパチとジャバのバージョン上がっただけで激しく困ったことに成らないか?
Apacheのバージョンあがっても特に問題はなかろう。 JBoss+JBoss Seams +EJB3なんて、JBossサーバー一個入れるだけだし、どこが複雑な構成? Tomcat+ApacheとJBoss+Apache、サーバー構成に特別な違いがあるとは思えないけど。
JSPで外部ファイル呼び出しの際、戻り値を返すにはどうすればいい?
JBoss SeamやEJBの構成のメンテってjarファイル置き換えるだけでいいじゃん。 複雑な構成ではないと思われ。 現在のJBossの最新4.0.4.GAにはSeamとEJB3は含まれていないので別途ダウンロードする必要ある。 だけど、JBossONを使えば、Microsoft Updateのような感じでのパッチ当てたり、バージョン管理できる。 なお、この機能は現在使用不可で7月から使用可能になる。 またJBossONは有償のGoldレベル以上のサブスクリプションで使用可能。 JBossONはRedHatユーザには今後RHNに統合される予定。 TomcatのJBossでの位置づけはJMXサービスとなっていて、現在のバージョンでは 5.5がdefault以上の設定に含まれている。Tomcatのバージョンの変更はサービス 置き換えで可能。 たしかに、Tomcat+ApacheとJBoss+Apacheの連携の方法は一緒。 mod_jkやmod_proxy+mod_proxy_ajpの設定でいい。 これらのモジュールの開発もTomcat同様JBoss主導で行われてる。
>>912 たしかに、EJB3のPersistenceAPIはHibernateと同様。つまり、PersistenceAPIはJ2SEでも使用可能。
でも、EJB3はBeanのトランザクション管理とかEJBの特徴の機能が使用できるので、その辺が違う。
>>915 どうしてJSPでそういう風なことするの?
フレームワーク使ってないの?
MVCモデルのFrameworkのViewでそんなことすること自体よくない。
>>917 JTAトランザクションも、今やEJBだけのものではないんだけどね。
事実上、リモート呼び出しができるかどうかの違いしか無いに等しい。
そしてリモート呼び出しはほとんど、というより全く使わないので、EJBは骨抜き。
>>919 JTAは確かにもともとEJB以外でも使用できるけど、EJB以外で使うなんてばかげてる。
EJBのようなJTAの緊密な連携は持っていないから。
Webアプリケーション内ではトランザクション処理を極めて限定的に利用する必要があり
極力、トランザクション処理はEJBで処理すべき。
複数スレッドにまたがるアプリケーショントランザクションもEJBだと簡単に扱える。
あと、トランザクションをEJB3のアノテーションで設定するとXML構成ファイルの
必要なくなり、コードの簡潔さがSpring等での実装時と比べ違う。
また、JCAも同様。
EJB3でもリモート呼び出しはオーバーヘッドが大きすぎて使えないので
たしかで使用しないことが推奨されている。ただ、JBossでは最適化
されていてそんなにないけどね。
>>921 DIコンテナがあればJava SE環境でも当たり前に使えるよ。設定は今のEJB2よりも断然簡単
EJB3はDIコンテナとTopLink・Hibernateを元に構築し直されたものだから、今より便利でないと立場が無いw
今は便利と思い込まされていて、EJB4でやっと本当に便利になる悪寒。
>>922 Java SEで使えないなんていってないよ。
実際Java SEでもEJBでトランザクション使った開発やってたから。
ただ、EJB2.1だったけど。
ただ、JTA使うんだったらEJB3でやるべきっていいたかった。
EJB3のJPAは設定がHibernateよりずっと簡単にできるのは確か。
Hibernate作者のGavinが自分自身でそういってたし。JBossWorld Vegasで。
また、Gavinは今Seamに力入れてるしね。Seamの全セッションに参加してたし。
JPAはEJBから切り離されてるから、EJBのJPAっていうのはちとおかしい
いまからEJB3を始めるとしていい情報源ある? 要英語かな?
>>914 JBoss Seam って JSF 使うみたいだけど、JSFも含んでるの?
まだまだejb3はドキュメント少なくて流行りそうにないね。 実績のあるhibernate程度が無難か。
>>926 とりあえず使うなら、NetBeans5.5+GlassFishのチュートリアルがおすすめ。
>>928 JavaEE5対応だからJSFは必須
暗黙オブジェクト application に格納できる情報には、件数やサイズ等の上限はありますか?
>>932 仕様上は無い。
物理的には、メモリ使用量等で制限は出てくるだろう。
PerlやPHPでは書けなかった美しいコードが書けるから EJB3でコードを書くことにしました。 自分で使ってみて、EJB3は美しいコードを書くことができる、 プログラマをハッピーにする言語だと感じたのです。
EJB3が美しいかどうかはともかく、 PerlやPHPに比べたら極上の美しさに見えるだろうね
>>934 幸運のペンダントか何かを売るような文ですね
937 :
nobodyさん :2006/06/21(水) 20:02:00 ID:9YsEgGxs
新人研修の最後に、JSP&サーブレット&DBを使った 簡単なWebアプリを作ってもらおうと思うんだけど、 どういったものを作ってもらえばいいかな? 新人の能力:とりあえずJSP・サーブレット・Bean+DBが扱える程度の能力 環境:JDK1.5.0+Tomcat+MySQL 期間:5日程度
938 :
nobodyさん :2006/06/21(水) 21:49:10 ID:8iVlXFcc
Tomcatでバッファオーバフローは発生するのでしょうか? Pure JavaならExceptionやOutOfMemoryErrorがでるだけだと思うのですが、いかがでしょう。
その程度で実践投入されてあちこちで個人情報流出が起きるのか。 新人研修でクラック対策も教えとけ。特にDoS攻撃。
940 :
nobodyさん :2006/06/22(木) 00:29:18 ID:/RVErRBQ
起きないと思い込むことこそがセキュリティホール。 もしかすると起きるかも知れないとあらかじめ対策を考えておくのが本当のセキュリティ対策。
943 :
938 :2006/06/22(木) 03:04:46 ID:/RVErRBQ
>>942 一理ありますね。
どのような対策がありえるでしょうか?
>>937 スケジュール帳かな?
日付を扱うし、変数の型も学びやすいから
無理だろう、ロジック自体複雑すぎる TODOリストあたりに押さえた方が
946 :
nobodyさん :2006/06/22(木) 19:05:40 ID:N4GComYy
今日、初めてJSFに触れた者です。よろしくお願いします。
質問させて下さい。
http://muimi.com/j/jsf/validate/ このサイトを用い学習を進めているのですが、
カスタムバリデータで躓いてしまいました。
例の通り、正規表現チェックを行うカスタムタグを作成しましたが、
submit するとヌルポが発生します。
RegExpValidator#validate の if(!text.matches(pattern)) にて発生します。
直接の原因はフィールド pattern が null であることです。
RegExpValidatorTag にて #setPatternを呼び出しているにも関わらず、
null であるため、デバッグしてみたところ、
画面表示時(#setPattern)のRegExpValidatorインスタンスと、#validate 実行時のそれは、
違うインスタンスのようでした。(this.hashCode()にて確認)
フィールド pattern を static にすれば、動くことは動きます。(当たり前ですね…)
根本原因が掴めません。どなたかご教授くださいませ。
<環境>
OS : WinXP SP1
JDK : 1.4
Server : tomcat 5.5.17 (Compatability Package 適応)
JSF : MyFaces_Core/Tomahawk 1.1.3
ブラウザ:IE6 SP1
jsp-Servlet-BeanによるMVCモデルがイマイチ理解できません。 たとえば、DBのテーブル情報を表示させようとした場合、 次のような流れでいいのでしょうか? (1)jspからサーブレットを呼び出す。 (2)サーブレット内で、jspから渡されたパラメータにより、 特定のテーブル情報を取得するか、全テーブル情報を取得するか判断。 (3)2での判断を元に、サーブレット内でDB情報を取得するクラスを呼び出す。 (4)サーブレット内で、DB情報をBeanに格納するメソッドを呼ぶ。 (5)サーブレットからjspにBeanを返す。 (6)jspでBeanのGetterメソッドを呼び出して情報を表示する。 具体的によくわかっていないのが、 ○DBへの接続は何が受け持つのか? ・サーブレット ・Bean ・専用クラス ○貰ったDB情報をどのようにBeanに格納するのか? ・サーブレットでDB情報を解析してBeanのSetterにいれていく。 ・貰ったDB情報(ResultSet)をBeanの処理メソッドに渡してBean内でSet。 ・Bean内の処理メソッドで、DB情報を受け取り、Set。 ・DBに接続するメソッドが、結果をBeanに格納してBeanをサーブレットに返す。 今までサーブレット無しでjsp+Bean+その他のクラスの形式での プロジェクトばかりだったために、サーブレットになにをさせるのかが よくわからんとです。
まず、WebでのMVCモデルという考えは、結局廃れてしまっているから捨てろ。 DB接続用クラスからの結果をBeanに格納してサーブレットからJSPまで受け渡すようにする。 BeanのGetterメソッドは、明示的に呼び出すのではなくJSP式言語を使う。
>(1)jspからサーブレットを呼び出す。 この時点で既に間違い
>>948 廃れてるって・・・
ViewやControllerはビジネスロジックとは分けるだろ?
それとも、カスタムタグやスクリプトレットでDBアクセスコード書くクチか?
MVC2って言いたいとか
>>951 MVC2って何?
「MVC」と「JSP Model2」を混同した誤用だと思ってたけど。
>>950 結局、提唱されたような3角形のMVCモデルでは、うまくシステムが組めていない。
ViewとModelが直接やりとりしないレイヤーパターンが主流。
サーブレットからJSPに渡すのは、Modelではなく、ロジックをもたないデータをラッピングしただけのオブジェクト。
>>953 ああ、そういうことが言いたかったのね。
廃れているっていうより、
J2EE(JavaEE)向けに変化してきてるっていうか。
Modelがさらにドメインモデルとビジネスロジックに分かれてるっていうか。
そういうことね。
>>952 JSP Model 2なんてないだろ。キミの誤解。
MVC Model 2
MVC Model 2 = JSP Model 2 と読めるんだが、どっか違うの?
「JSP Mlodel1」に対して「JSP Model2」が、いわゆる「MVC」と呼ばれているアーキテクチャ。 「MVC Model2」って言葉は本来無かった。「MVC Model2」という言葉を明確に定義しているものはない。 「MVC」と「JSP Model2」という元々は別の言葉だったものが ごちゃまぜになって誤用されたのが、いつのまにか定着してしまった言葉。
ちなみに、「JSP Mlodel1」ってのは、基本的にJSPのみの利用。 補助的にJavaBeansを利用する。 PHPとかASPのような、スクリプト言語っぽい使い方。
961 :
" :2006/06/24(土) 20:06:45 ID:???
何が正しくて何が間違ってると思ってるのが言わないと。
>>960 どこがおかしいの?
さっぱりわからん。
JSP宣言 <%! %> のスコープについて教えてください。 「<%! %>内部で定義された変数やメソッドのスコープは、 そのJSP(のインスタンス)に限定される」 というのが私の現在の理解ですが、 1このタグ内部で定義されたメソッドや変数は定義元JSPのクラスの メソッドや変数と考えてよいのでしょうか? たとえば hoge.jsp内で定義されたメソッドは hogeclassのメソッドですか? 2 web上の記述例では、時々メソッドをpublicにしているものがあります。 privateにしている例(こちらが多い)と比べて、どのような違いがありますか? (publicとした場合、定義元のpageをインクルードすれは他のJSPでも 使用できるのでしょうか?)
>>963 本当にredirectになってるの?
redirectかforwardか確認できるツール使ってないの?
966 :
963 :2006/06/24(土) 22:22:24 ID:???
>>966 Eclipse使ってるんなら、どっかにプラグインがあるんじゃない?
NetBeansには標準でHTTPモニターついてるからそれで見れる。
>>964 1 んだんだ。そうだったと思うべさ。
2 クラス名がわかんねえんでねえか?実行時コンパイルだかんな。
てか、そっただことをうだうだ気にするなら、実行してソース見るべさ。
969 :
964 :2006/06/28(水) 21:36:16 ID:???
>>968 >2 クラス名がわかんねえんでねえか?
hoge.jsp → hoge.class として呼び出せたらうれしいなあと思いつつ
とりあえずやってみます。ありがとうございました。
970 :
nobodyさん :2006/06/28(水) 21:53:16 ID:9hcWH2vs
DBから情報を取得する処理を作るときは 1.ServletからDBにアクセスするクラスを呼び出す 2.ServletにResultSetを返す 3.ServletからBeanを呼び出し、ResultSetのデータを格納 4.ServletからJspにBeanを返す で問題ナッシング?
972 :
970 :2006/06/28(水) 22:12:12 ID:???
ぬぅ。 ならば 1.ServletからDBにアクセスするクラスを呼び出す 2.DBにアクセスするクラスからBeanを呼び出しResultSetのデータを格納 3.DBにアクセスするクラスからServletにBeanを返す 4.ServletからJspにBeanを返す でどうだっ
>>972 おk。よくできまつた。
JDBC API関連の型を直接ServletやBeanで扱うのは良くない。
JDBC APIはDBにアクセスするクラス内で閉じておくべき。
974 :
972 :2006/06/28(水) 22:46:26 ID:???
>>971 ,973
ありがd
おかげで自信がもてました。
>>974 で、ResultSetからBean詰め込みとか退屈な作業は、DBUtils使うのがいい。
いまからなら、EJB3でかなり楽ができる。
976 :
nobodyさん :2006/06/29(木) 21:22:47 ID:o5ZttpeS
マニアックな制御しないならO/R真っ裸が楽よね。
HTMLのcharsetはShift-JIS、JSPはWindows-31Jを指定しているページで XMLHTTPを利用しテキストデータを取得したいのですが・・・ 取得するJSPのpage contentTypeがSJISだと「梶vなどの文字が化けたので 次はcharset=Windows-31Jにすると今度はresponseText取得時にエラーが表示されます。 皆さんはXMLHTTPを利用する時の文字化けをどうしていますか〜?
XMLHTTPはWindows-31Jという名前をサポートしてない csWindows31Jで動いた記憶がある
979 :
977 :2006/07/01(土) 22:45:38 ID:???
>>978 JSPのcharsetをcsWindows31Jに変更したら正常な文字で取得できました。
ありがとうございました〜
csWindows31Jで通るとは!
Windows-31JがダメだからcsWindows31Jもダメだと勝手に思い込んでました・・
Javaの文字コード指定ぐらい覚えようぜ(w ORマッパのXML書くのが面倒。 自動化して手抜きしたくなるのがPGじゃね?
> 980 なにがいいたいのかわからん。 ORマッパのXML書くのが面倒っていうやつはプログラマじゃない、プログラマなら自動化しろ、ということか? それに、もうORマッパでXML書く必要のあるものの方が少なくなっていくわけだが。
まだまだXMLは不滅ですよ。 JavaとXMLは密接で相互依存してるし。
ORマッピングに関してはほぼ滅亡するけどな。
web.xmlはしばらく残りそうだな
なんでServlet2.5でURIのマッピングのためのアノテーションが導入されなかったのかな?
JSFのコンフィグファイルも。
ページ遷移は難しいにしても、ManagedBeanはアノテーションでいけるよな。
hoge.jspを配置してブラウザ呼び出してみたが hoge.javaがサイズ0のまま一向にコンパイルされなかった。 tomcat再起動して仕切りなおしたら即座にコンパイルされ、普通に 動作した。 こういうことってあるものですか?
知るか
もうアフォかと。 実運用で毎回再コンパイルしてたら遅くて使い物に成らんよ。
いやどう考えてもお前がアホだろう 開発時にわざわざ手動でやる馬鹿はどこに居る。 >988 設定によるニダ
992 :
988 :2006/07/06(木) 20:34:58 ID:???
>>991 コメントありがとうございます。
あれから何回か同様の操作を行いましたが、現象が再現しません。
が、念のためサーバーの設定を確認したいと思います。
Makefileぐらい書けよ。糞チョン。
> 993 なんの話をしてるのだ?
JavaでMakefileかよw。糞チョンw
JSFの話なんだけど、JSPでif文使う方法ってある? ただ、スクリプトレットじゃなくてタグで・・・。 <h:column rendered="#{真偽}"> ってのをさっき見つけたけどスマートじゃないよなぁ。 教えてえろいひと。
素直にスクリプトレットに書けと言ってみるテスト
<c:if>じゃだめなのか?
>>998 JSF1.1までの場合、<c:if>の内側にJSFのタグは書けないという制約がある。
>>996 ><h:column rendered="#{真偽}"> ってのをさっき見つけたけどスマートじゃないよなぁ。
いや、それが一番スマートだと思うし、そのための機能だと思うけど・・・
1000 :
nobodyさん :2006/07/09(日) 02:51:14 ID:86lK/U5p
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。