■■ Servlet/JSP(EJB含む) 質問スレ Part3 ■■
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
04/06/16 05:30ID:XUmu9/tY前スレ
■■ Servlet/JSP(EJB含む) 質問スレ Part2 ■■
http://pc5.2ch.net/test/read.cgi/php/1052879533/l50
過去スレ
■■ Servlet/JSP(EJB含む) 質問スレ ■■
http://pc2.2ch.net/test/read.cgi/php/1023501812/l50
関連スレ
【初心者】Java質問・相談スレ47【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1086716004/l50
JSP/Servletで構築されたサイト
http://pc5.2ch.net/test/read.cgi/php/1063121571/l50
◆JSP◆
http://pc5.2ch.net/test/read.cgi/php/984840356/l50
関連は>>2-10
0358354
05/01/16 01:48:44ID:UULMlX6Sよく分からなくなってきました。
いや、初めから分かってないんです。
JSP/サーブレットサンプル集を見ていたら、
スレッド式掲示板を作ろうみたいのがあったんです。
if(request.getAttribute("sbm") == null){
//新規投稿フォームを表示
}else{
objBbs.setArticle((String)request.getAttribute("title"),
(String)request.getAttribute("nam"),(String)request.getAttribute("article")
・・・・・・)
}
bbs_beanのsetArticleメソッドでフォームに
入力された情報をbbs_masterテーブルに登録する・・・
っていうのがあったんです。
sbm、title、nam、articleはそれぞれ、フォームの要素名で、
送信ボタン、件名、名前、本文なんです。
今まで、request.getParameter("nam")で取得していたので、
これはどういうことだろう・・・と思ったんです。
0360nobodyさん
05/01/16 02:51:42ID:???あとは、まず自分で調べることだ。
いや、その前に、そのサンプルが何をやっているか確認しろ。
0361354
05/01/16 03:24:48ID:UULMlX6Srequest.getAttributeの戻り値がオブジェクト型なので、キャスト必要
ということ
くらいしか調べきれませんでした。
サブミットボタンが押下
⇒名前/値でフォームの要素の内容がrequestオブジェクトに格納
⇒それを取り出してbbs_masterに掲示板の投稿内容を登録
するときに、
なぜ、request.getParameter("title")ではなく、
(String)request.getAttribute("title")なんだろう・・・と思ったんです。
もう少し調べてみてから出直します!!
0363nobodyさん
05/01/16 07:33:11ID:???調べる前に、そのサンプルが何やってるか確認しろ。
で、なに調べたら、そんなことだけがわかるんだ?
単純にrequest.getAttributeでググっても、それなりに見つかりそうなもんだが。
0364nobodyさん
05/01/16 07:36:47ID:???0365nobodyさん
05/01/16 15:15:58ID:???0366nobodyさん
05/01/17 00:10:37ID:q9aZ0Owf現在Apache2とTomcat4.1.31を連携させて動かせています。
<jsp:include ...>を使い、メニュー領域を読み込ませているんですが、
これのファイル指定は、Tomcatの制御下にあるファイルしか呼び出せないのでしょうか?
例えば、
http://localhost/menu.html (Apacheの制御領域に存在)を
http://localhost(:8080)/web/index.jsp から<jsp:include ...>で呼び出したいのですが・・・
調べても、呼び出し先ファイルは、相対パスで指定としか書いていなく、このような使い方はできないのでしょうか?
このmenu.htmlは、全ページ共通のメニューページになるので、Javaを使ったページのみ別のファイルにする事は避けたいのです。
よろしくお願いいたします。
0367nobodyさん
05/01/17 00:36:01ID:???無理。<jsp:include>はRequestDispatcherを使ってるから。
Tomcatの制御下というより、同一アプリケーション内のリソースのみ。
0368nobodyさん
05/01/17 00:45:08ID:???そうなんですか・・・仕方ないですね。
別のアプローチを考えて見ます。
menu.htmlに更新があった場合には複数の場所にあるファイルの同期をとる方向で・・・かなり強引ですが・・・
0370nobodyさん
05/01/17 01:34:36ID:???0371nobodyさん
05/01/17 14:02:14ID:???jspなどのTomcatが配信するページを圧縮転送したいのですが、どうすればいいのでしょうか?
Apache側には、gzipが組み込まれていて、Apacheが処理するページやPHPのページは圧縮転送できているのですが、
Tomcatが配信するページが圧縮されずに転送されてしまいます。
Tomcatの処理するページに対して圧縮をかける方法を教えていただきたいです。
ApacheとTomcatの連携も取れています。
0372nobodyさん
05/01/17 14:33:41ID:???0373nobodyさん
05/01/17 17:12:42ID:rh8cuFh5ResultSet result = statement.executeQuery("SELECT ID FROM ID_masterORDER BY DATE");
%>
<%
while(result.next()){
%>
<tr>
<td><%= result.getString("ID") %></td>
こうあった時にを
DBからどんどんIDを読み込んで表示させたいのですが
IDがnullの場合、読み込まずに飛ばして表示されてしまいます
IDがnullの場合、その部分は空白として表示させるのにはどうすればいいのでしょうか?
if文とかを使っているのですが、どうしてもうまくいきません
ご教授をお願いします
0374nobodyさん
05/01/17 17:25:47ID:???意味不明
> if文とかを使っているのですが、どうしてもうまくいきません
どう書いたらどうなるのか読み手にさっぱりわからないから回答できない。
「うまくいきません」も漠然としすぎ。
どういう結果を期待して、実際にはどうなっているのかがわからないから
回答不能。
0375nobodyさん
05/01/18 01:02:20ID:???使用できなくなるんでしょうか?
Windows+Cygwin+PostgreSQLの環境ではJSPのキャラクターセットをMS932にするだけで
出せたんですが、Linuxに移植したら入らなくなってしまいました。
〜 は replaceAll("\u301c","\uff55e"); で出せるようになりましたが、
�@ は replaceAll("\u2460","?"); をやっても意味ありませんでした。
0376nobodyさん
05/01/18 01:04:15ID:???"&#9312" の半角です。
0377nobodyさん
05/01/18 01:33:41ID:???> サーバにLinuxを使った場合ってどうやっても�@とかの機種依存文字って
そんなことはない。
しかも、MS932じゃなくて正しくはWindows-31Jだ。
環境をちゃんと書いていないのでわからないが
LinuxはPostgreSQLが7.2と推測してみる。
PostgreSQL7.2のJDBCドライバがタコなだけだろ。
Shift_JISとWindows-31Jがちゃんと区別できない。
0378nobodyさん
05/01/18 01:41:39ID:???ありがとうございます。
Cygwin環境ではPostgreSQL7.4.5
RedHat8.0環境ではPosgreSQL7.4.6を使用しています。
JDBCドライバは pg74.215.jdbc3.jar なんで普通だと思うのですが、
MS932がいけないのかもしれないですね。
サーブレットで
new String((request.getParameter("name")).getBytes("8859_1"),"JISAutoDetect")
で読み込むのは問題ないと思ってるのですが。
0379nobodyさん
05/01/18 09:08:59ID:???> サーブレットで
> new String((request.getParameter("name")).getBytes("8859_1"),"JISAutoDetect")
> で読み込むのは問題ないと思ってるのですが。
釣りか?と思うぐらいに問題あり。
JISAutoDetectではShift_JISと誤認される。
今時JISAutoDetect使うのは糞。
0380nobodyさん
05/01/18 09:44:57ID:x8xIxcUMありがとうございます。server.xmlのcompressionを指定する事で、
http://localhost:8080/~では、転送量が約1/5になり、圧縮が確認できました。
しかし、ApacheとTomcatを連携させて動かすと圧縮ができません。
<Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
port="8009" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0" compression="on"/>
という感じで8009番のConnectorにも書いてみましたが、圧縮が確認できませんでした。
Apache2とTomcat4.1の連携には http://www.ryouto.jp/linux/linux_12.html を参考に
jakarta-tomcat-connectors-jk2-2.0.2を使っているんですが、
連係動作下での圧縮転送はどのようにすればいいでしょうか?
何度もすみませんが、よろしくお願いいたします。
0382375
05/01/18 12:27:26ID:???ありがとうございました
0383nobodyさん
05/01/18 12:49:13ID:???0385nobodyさん
05/01/18 18:17:11ID:???どうせなら解決手段を書くべし。
0386nobodyさん
05/01/18 18:33:14ID:???0387375
05/01/18 20:51:45ID:???0388nobodyさん
05/01/18 21:07:58ID:???PHPに乗り換えたほうがいいですよ!
0391nobodyさん
05/01/19 17:15:05ID:gpHRwNH/この本のサンプルの通りに打ち込んでコンパイルしようとしたんですが
以下のようなエラーがでます。
略:シンボルを見つけられません。
シンボル: 変数 KanjiConv
このKanjiConvを使っている行、全てが引っかかります。
なにか特別にパスを通す必要があるとか
importする必要があったりするんでしょうか?
今のところimportしてるのは
java.io.* javax.servlet.* javax.servlet.http.*
の三つです。
本が少し古いのでSDKが1.2の頃のサンプルなのですが、
現在使用しているのが1.5なので、仕様変更があったとかでしょうか?
よかったら教えてください。お願いします。
0392nobodyさん
05/01/19 17:34:25ID:???・コンパイル時にKanjiConv クラスがあるパッケージツリーまたはjarファイルに
クラスパスが通ってない
・KanjiConvクラスがインポートされてない
・変数KanjiConvが宣言されていない
どれか。
エラーは略すな!大原則。
0393391
05/01/19 18:24:26ID:gpHRwNH/ありがとうございます、そしてすいません。
エラーは詳しくは↓のような感じです。
BBSServlet.java:90: シンボルを見つけられません。
シンボル: 変数 KanjiConv
場所 : BBSServlet の クラス
item.deleteKey = KanjiConv.ConvJStr(request.getParameter("pass"));
これと同じものが複数行でます。
で、このKanjiConvってのは標準のクラスじゃないんでしょうか?
検索してもほとんどヒットしなかったんですが、
かといって特に本文中に記述もないっぽいので
この本の独自のクラスってこともなさそうなんですが・・・
0394nobodyさん
05/01/19 18:47:00ID:???KanjiConv は標準のAPIには含まれないのでその書籍独自のクラスか
その書籍のサンプルで扱っているライブラリに含まれているのだろう。
0395391
05/01/19 19:02:31ID:???なんかこの本は初心者に厳しくて色々苦労しているのですが、
やっぱそうでしたか。。
そうであれば必ずどっかに載ってるんでしょうから探してみます。
ありがとうございました。
0397nobodyさん
05/01/20 09:09:15ID:???俺もその本持ってるかも・・・でも、おれの持ってる本で特別わかりにくいって思った参考書はないんだけどなぁ〜
キミが、最初から読まずに途中から見よう見まねでソース書いてるだけじゃないか?
0398nobodyさん
05/01/20 22:29:32ID:???ブラウザからpostしてDBに書き込み、DBの内容をブラウザに表示するっつー
仕組みをMVCmodel2ぽく作ってみました。
で、日本語化けに散々悩まされたんですが
-- in Controller --
doPost(HttpServletRequest request, ・・・) {
request.setCharacterEncoding("EUC_JP"); //<-ここに書けば文字化けは直る
Model.updateDB(request);
}
--
-- in Model --
updateDB(HttpServletRequest req){
req.setCharacterEncoding("EUC_JP"); //<-ここに書いても文字化けは直らない
//ここでgetParameterで取得してDBに書き込む処理
}
なんでsetCharacterEncodingをモデル内に書いても機能しないのか理解できません。
javaの仕様なんでしょうか?
0399nobodyさん
05/01/20 22:42:15ID:???それと"EUC_JP"はエイリアスだから新規のコードからは使うのやめるのと、
setCharacterEncoding自体もサーブレットフィルタに任せたほうがすっきりするよ。
0400nobodyさん
05/01/20 22:46:44ID:???> javaの仕様なんでしょうか?
ControllerとModelの間で一回でもHttpServletRequestから
パラメータは取り出されてないのか?
setCharacterEncodingは初回のパラメータ取り出しの前に呼ばれなければならない。
(そうしなくても動いてしまうコンテナもあるが)
フィルタ使え。
0402nobodyさん
05/01/20 23:01:06ID:???回答ありがとうございます。
確かに、400氏の言うように、コントローラ内で1回だけgetParameterしている個所がありました。
その部分を修正すれば、確かにモデル内でsetCharacterEncodingしてもちゃんと機能しまし
た。アドバイスありがとうございます。
ていうか、「サーブレットフィルタ」という単語を初めて知ったのでググって見ましたが、
TOPに来たページで「文字エンコーディングを指定するフィルタ」の説明が・・・
そうか、こんな便利な使い方があったのか・・・ orz アドヴァイス感謝です
0403nobodyさん
05/01/20 23:13:35ID:???0404nobodyさん
05/01/20 23:55:52ID:???質問させて下さい。
古い話ですが、EJB1.x系では特にCMPのパフォーマンス
の低さが 問題視されていましたよね。
その原因を調べる過程で、以下の記事を見つけました。
ttp://www.atmarkit.co.jp/fjava/special/ejb20/ejb20.html
この記事の中段付近でコンテナによるダーティーフラグや
キャッシュについて述べられています。しかし、ダーティ
フラグやキャッシュが有効なら、パフォーマンスにそれほど
問題が出ないような気がします。
EJB1.x系のCMPのパフォーマンスが低い原因について、
より詳細な 説明をして頂けないでしょうか?>識者の皆様
0405nobodyさん
05/01/21 00:41:28ID:???余計なことしてるんじゃねぇの?
0406part1
05/01/22 03:06:57ID:???文法的に間違っている所は無いと思うのですが・・・
↓
---- Controller.java
package test;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import test.*;
public class Controller extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException {
Model md = new Model();
String loginUser = "HAHAHAHAHA";
md.setUser(loginUser);
request.setAttribute("model", md);
RequestDispatcher rDispatcher = request.getRequestDispatcher("/view2.jsp");
rDispatcher.forward(request, response);
}
}
0407patrt2
05/01/22 03:07:41ID:???package test;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.text.*;
public class Model {
private String login = null;
public Model () {
}
public String getUser() {
return login;
}
public void setUser(String user) {
this.login = user;
}
}
0408part3
05/01/22 03:09:12ID:???<html>
<head>
<jsp:useBean id="md" class="test.Model" scope="request" />
<body>
<jsp:getProperty name="md" property="user" />
</body>
</html>
0409nobodyさん
05/01/22 03:13:36ID:???> jspを表示させてもnullしか出力されません。
ブラウザから直接 /view2.jsp をリクエストしてるとか?
0410nobodyさん
05/01/22 03:37:43ID:???いやさすがにそれは。Controllerを直接リクエストしています。
ちなみにtomcat4.1.31です。
0411nobodyさん
05/01/22 04:33:14ID:???---- Model.java
package test;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.text.*;
public class Model {
private String user = null;
public Model () {
}
public String getUser() {
return user;
}
public void setUser(String anUser) {
this.user = anUser;
}
}
0412406
05/01/22 14:46:46ID:???setAttributeとjspの"<jsp:useBean id=〜"が理解できていなかったです。
0413nobodyさん
05/01/23 03:14:00ID:???質問します。
通常、WEB-INF/libディレクトリ以下に各種Jarファイルを全て配置しますが、大規模なWebアプリなどの場合、
多数のコンポーネントを利用するために相当数のJarファイルがWEB-INF/lib以下に配置されることになると
思います。
ここで、各プロダクト毎に関連するjarファイルをWEB-INF/libディレクトリ以下にサブディレクトリを掘ることによって
論理的に分けて配置したいと思います(以下参照)
WEB-INF/lib
|
+subdir1
| + hogehoge.jar
+subdir2
+ foo.jar
+ foobar.jar
しかしながら、WEB-INF/lib以下のサブディレクトリにはclasspathが通りません。どのようにして解決すればよろしいでしょうか。
実行環境は今のところTomcat5.x系を想定しています。
0414nobodyさん
05/01/23 10:53:37ID:???同じことをすればいいだけでござる
拙者は普段WEB-INFなんて作っておらんでござる
プロダクトごとに関連するJSP、XML、JARを分けて作って
後はAnt任せでござる
0415nobodyさん
05/01/23 13:15:46ID:???実行時の話だと思うんだけど・・・・
ビルド時はどうにでもできるけどね。
>>413
Servlet仕様上無理。どうしてもというのならTomcatを
ソースコードレベルで改造するしかない。
0416nobodyさん
05/01/23 13:21:29ID:???開発してるときだけだろ、jar毎に分ける意味があるのは
0417416
05/01/23 13:22:12ID:???まあ察してくれ
0418nobodyさん
05/01/23 13:25:08ID:???0419nobodyさん
05/01/23 13:29:14ID:???やっぱりそれしかないんですかね?
カレントスレッドのClassLoaderをとってくるとWebappLoaderが取れたので
リフレクションで無理矢理addRepository呼んでみたけど、動的には
変更できなかったので、何か妙案はないかと思案しているところです。
みなさん例えばjarが100あろうと関係無しに全部lib以下にブチ込んで
いらっしゃるのですか?
0420nobodyさん
05/01/23 13:30:08ID:???展開後のwebアプリの中のソースとかJSPとかを直に弄っているとか
そういうやり方をしてるだけなんじゃないだろうか
>>413
もしそうならAntとかを勉強するといい
0421nobodyさん
05/01/23 13:31:00ID:???>みなさん例えばjarが100あろうと関係無しに全部lib以下にブチ込んで
>いらっしゃるのですか?
何か不都合でもあるのか?という話。
0422413
05/01/23 13:39:41ID:???爆発的に増えると思います。
それに伴い、プロダクト事に各種設定ファイルも増えてきてそれらを全部並列にWEB-INF/libやWEB-INF/classes以下に置く
のは管理上いかがなものかと思ったわけです。
引き続き何か案があればよろしくお願いします
0423nobodyさん
05/01/23 13:45:33ID:???だって、用は開発中に見通しが聞くかどうかだから
何の管理をしているのかよくわからん
0424nobodyさん
05/01/23 13:52:02ID:???実行環境でどう配備されていようがかまわんだろ?
何人かがレス付けているように、開発用のディレクトリが
分かれているだけじゃダメなのか?
実行環境上でファイルの管理をしようという発想がダメだと思う。
0426413
05/01/23 13:59:39ID:???とりあえずみなさんがおっしゃる通り開発時にディレクトリ分け、
デプロイ時に該当ディレクトリにまとめて配備という方法でいくことにします。
ありがとうございました
0427nobodyさん
05/01/23 15:11:49ID:???取れない可哀想な人なんだろうね。
Aという手法を行ういい方法はありませんか?
という問いかけに対して
Aなんて止めてBの手法にしとけ
というアドバイスは場合によっては馬鹿にされるよ。
0430nobodyさん
05/01/23 15:29:28ID:???プロジェクトを灼熱地獄にするタイプだと思うよ。
そうする必然性がない可能性が高いにもかかわらず
前提になってしまっている。
そうする必然性があるのなら、それを説明できないとおかしい。
0431nobodyさん
05/01/23 15:32:04ID:???Aという手法を行ういい方法はありませんか?
↓
Bの手法で問題があるのか?
↓
(無視)Aという手法を行ういい方法はありませんか?
なんだから質問者が悪いだろ
0433nobodyさん
05/01/23 15:34:36ID:???現実的ですねー
って、言うと思う?
0434nobodyさん
05/01/23 16:07:00ID:???普通のアプリケーションなら、どう考えてもせいぜい1桁台の jar
ファイルしか必要ないはず。
0435nobodyさん
05/01/23 16:12:33ID:???まぁ100個とかは言い過ぎだけど。
っていうか、425は2chで何をそんなにカリカリしているんだ?
0436nobodyさん
05/01/23 16:25:04ID:???でも仕様としてWEB-INF/lib直下のみってのは間にあうはするけど、しょぼいと思うよ。
0437nobodyさん
05/01/23 16:30:24ID:???0438nobodyさん
05/01/23 17:07:32ID:???「定番のものの定番のバージョン」というものがあるなら別だけど、バージョンが違うこともあるわけで。
危険だよ。
はまったときに原因がつかめずタチが悪い
0439nobodyさん
05/01/23 17:16:23ID:???Aという手法を行ういい方法はありませんか
↓
XXXXという方法で出来ます。
↓
しかしそれはコストや運用の面からあまりお勧め出来る方法ではありません。
↓
ちなみにBという方法もあるんですが、こちらでは如何でしょう?
というのが客とやり取りするときの常識かな。
いきなり >431 みたいなやり取りは普通しないね。431は直接客と話す機会が
少ないのかな?
0441nobodyさん
05/01/23 17:36:28ID:???>>431はこのスレの流れをまとめただけだぞ?
お前は客の要望を勝手に独自解釈して
本来の要求とは全然違う実装を指示するタイプだな。
0442null pointer
05/01/23 17:49:43ID:???「如何でしょうか」とお伺いを立てる香具師のほうが一緒に仕事をする分に
は兆倍マシなヨカーン。
ま、ネタにマジレスかましてる431も痛いけど。
0444nobodyさん
05/01/23 18:27:08ID:???____∧/∧/
〜' ____(; Д )
UU U U
0445nobodyさん
05/01/23 18:35:13ID:???有料の仕事と無料の回答の区別もつけられない奴らと(ry
0446nobodyさん
05/01/23 19:19:27ID:???0448nobodyさん
05/01/23 19:29:27ID:???____∧/∧/ カチャッ
〜' ____( ゚Д ゚)
UU U U 。 。
0449nobodyさん
05/01/23 19:34:19ID:???0450nobodyさん
05/01/23 20:30:28ID:???肉体は40代、頭髪は60代ですが、心はまだ若々しい10代のつもりです。
0451nobodyさん
05/01/23 22:22:40ID:???0452nobodyさん
05/01/23 23:40:32ID:???2チャネラなんて全員そうだよ
0453nobodyさん
05/01/24 00:08:17ID:???自分がそうだからって、みんな同じだと決め付けないでください。
わたしはちゃんと頭の中身も成長して、2chについていけるようになりましたよ。
0454nobodyさん
05/01/24 10:49:58ID:???現在Solaris8(SunOS5.8)とJDK1.3で動的に画像を出力する(パラメータで数値を渡してグラフを生成する)JSPを作成しています。
CUIのOSですと動的な画像出力が行えないようで、
かつJDK1.3ではjava.awt.headless=trueによる対策がサポートされていないようです。
あれこれググってみたのですが、CUIのOSではjava.awt以下の利用に支障があるようですが、
例えばPDFを作成する部分でjava.awt.Colorを使っているのですが、
この部分は正常に動作しています。
これは、特定のjava.awt以下の機能(例えばGraphics?)などにのみ支障があるということでしょうか。
仮にCUIのOSかつJDK1.3はjava.awt以下の機能がすべて使えないのであれば、
原因は自分のコーディングということになるのですが・・・。
0455nobodyさん
05/01/24 11:19:22ID:???とりあえず、JSP でなく、通常のプログラム同様の処理を作って試してみたら?
それでうまくいかないならば、このスレで聞くよりも、
Java (あるいは awt) の質問スレで聞いたほうが良いと思われ。
0456nobodyさん
05/01/24 20:34:17ID:???■ このスレッドは過去ログ倉庫に格納されています