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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん02/06/08 11:03ID:Kkr1yl67
って無いよな?
というわけでつくたよ。
0181ふぉ02/09/06 09:36ID:sFTL/UD4
↑一連のFileUpLoad参考にしちゃってます。
フォルダごとアップロードってできんのかな?
018218002/09/06 12:01ID:???
>>181
フォルダごとは無理かな。いくつかのファイルをまとめてってんだったら
クライアント側で ZIP か LZH に固めてもらってる。イントラ開発なら
アプレットのセキュリティレベル下げて、フォルダごと ZIP に固めて POST
するようなアプレット作る。
0183nobodyさん02/09/07 00:27ID:41V0KowW
>>177

> 今後はこれがいいかも。

オライリのとくらべて格段にメンドクセー気がすんだけど、どんなメリットがあんの?
0184nobodyさん02/09/07 02:56ID:???
>>177
オライリーのと >>180 の悪いとこ取りみたいな感じが…
オライリーのはプログラマ的に楽だし、>>180 のは完全にストリームベースで
できるので効率最優先の時に良いんだけど。
0185nobodyさん02/09/08 08:25ID:+tHMOokM

JSPと言えど、ある程度のものを書くにはそれなりのJavaの知識が必要なんだ
ね。最初、JSPにデータベースの処理書いたら、先輩にBeansで3層にしろ、っ
て言われちゃったよ。Java初心者にとってBeansはちょっと壁が高いです..


0186nobodyさん02/09/08 09:08ID:+tHMOokM
JSP書くときソフトは何使っていますか?
メモ帳は使いにくいです。

0187nobodyさん02/09/08 17:25ID:???
>>186
秀丸。マクロと強調表示をうまく作ると使いやすい。
macromedia の Ultra Developer で JSP は使いにくかったが、サイト管理系のところ
だけなら結構良い。
0188nobodyさん02/09/10 22:26ID:SB/7i5JH
JSPにはHTML::Templateみたいなクロスサイトスクリプティング脆弱性を
事前に防止するために役に立ちそうな機構はありますか?
018917702/09/10 23:47ID:???
Jakarataで作ったものなら皆結構使うからいいかなぁ、と思って脊髄反射で書き込んだだけですた
漏れだめぽ・・・
>>178
JavaDoc見てると、ストリームベースで扱えるっぽいよ。
FileItem#getInputStreamでストリームが取れそうな感じ。
019018002/09/11 01:50ID:???
>>189
ふっふっふ
俺のはメモリや一時ファイルにデータを保管してからあらためて取り出す
ようなことはやらんのだよ。でかい CSV ファイルを先頭から DB にぶち
込んだり、馬鹿でかい XML ファイルを SAX に食わせたりするときに
有利かな。
アップしてたソースがまた落ちたので、アップロードのページにリンク
貼っときますた。
0191nobodyさん02/09/11 18:40ID:KsAJ6jkE
javax.servlet.http.HttpSession を invalidate で無効化できるとどこかで見たんだけど、本当に消えるの?
0192nobodyさん02/09/11 19:27ID:???
>>191
「消える」の定義がよく分からんが、次回のリクエスト時に request.getSession(false) を
やると null が返ってくる。getSession(true) なら何も入っていないセッションが取れる。
また、invalidate() を呼び出したときに HttpSessionBindingListener#unbound() も
呼び出される。これを「消えた」というなら消える。

実を言うと鯖をクラスタ化して DB でセッション管理している時のそこらへんの動きは
禿しく微妙なんだけどね。
0193nobodyさん02/09/12 20:15ID:EiytWMDM
クッキーを使ったセッションって、通常のHTMLファイルのリンクでも
維持されるものなのでしょうか?

クッキーをブラウザが送ってるのは当たり前として、サーバー側で
そのクッキーを元に、時間カウントをリフレッシュしてるんでしょうか?

こちら、Tomcat4.04 + JDK1.4です。
0194nobodyさん02/09/12 20:40ID:EiytWMDM
すいません、アップローダ、さらにもう一度アップしていただけませんでしょうか?
数日も経たない間にお願いして申し訳ございませんが。お願いします。

オライリーのは開発チームみんなで本買ってねってのに加え、
基本的に商用利用不可って書いてるし。
0195nobodyさん02/09/12 20:41ID:???
>>193
> そのクッキーを元に、時間カウントをリフレッシュしてるんでしょうか?

普通は HTML などのような静的なファイルへのアクセスでセッションの LastAccess
は変わりません。ただし大抵の環境は FileServlet を自作版と置き換えられる
ので、アクセスごとにセッションに触るサーブレットを自作して置き換えれば良い。
フルコーディングしなくてもオーバーライドすれば楽。

import java.io.*;
import javax.servlet.http.*;
import org.apache.catalina.servlets.*;

public clas OresamaServlet extends DefaultServlet{
  protected void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException
  {
    request.getSession(true);
    super.doGet(req, res);
    return;
  }

}

$TOMCAT_HOME/conf/web.xml にある org.apache.catalina.servlets.DefaultServlet
というのをこのサーブレットクラスの名前に置き換えれ。

ただし HTML ファイルなどが Apache へマッピングされてたらどうしようもない。
019618002/09/12 20:43ID:???
>>194
アップロードのページの下のほうにリンク貼っといた。

http://tool-ya.ddo.jp/2ch/trash-box/
0197nobodyさん02/09/12 23:39ID:???
Beansを作る場合ってpackage化しないといけないのですか?
019819402/09/13 01:19ID:rrE5hfdS
>196
ありがとうございます。

ukのHPとかオライリーって、ソース公開しておいて商用不可かよっ!
って感じで、Javaの世界はなんだかなーと思ってたので、すごい
助かります。
0199193(=194)02/09/13 01:27ID:rrE5hfdS
>195
なるほど。そういう仕組みになってるんですねぇ。
全然Servletコンテナの仕組みしらないので参考にします。
0200nobodyさん02/09/13 02:51ID:N8mYZ7Nv
>>197
Beanに限らず、JavaプログラムはPackage化するのが普通。
無名Packageはあくまでも特殊なケース。

0201nobodyさん02/09/14 21:10ID:???
linux+tomcat+apacheでアプリ作ってると、下のような現象に陥ることがある。
・ソースを書き変えてコンパイルしてクラスを更新しても、クライアント側に反映されない。
理由がさっぱりなので誰か教えてください。
0202nobodyさん02/09/14 21:15ID:???
javamailで設定するsmtpホストのアドレスって自マシンのIPでいいの?
vine2.5+apache1.3.24+tomcat4.0でやってるんだけど、自マシンのIP設定するとメールおくれるんだよね。これってなんで?
0203nobodyさん02/09/15 13:41ID:hcAsMafz
>>202
defaultでsendmailかPostfixがたちあがっているからじゃん?
rootになってntsysvコマンドでしらべてみな。

まぁ、psで調べてもいいけどさ。
0204nobodyさん02/09/15 23:27ID:4RjfenHM
>>201
reloadable?
020520102/09/16 18:54ID:???
>>204
reloadableっていうのは、更新できるかってことですか?
エラーもなく更新はできてるよ。
0206nobodyさん02/09/16 18:59ID:Fc5JTIXQ
servletでフォーム認証する方法知ってる人いる?
ちなみにユーザーは百人前後を予定してるんだけれども。

0207nobodyさん02/09/16 19:04ID:???
>>203

立ち上がってたー。有り難う。
020817702/09/16 19:57ID:???
>>206
Servlet2.2で、Form認証に関する仕様が定められてるので、それ見れ。
0209nobodyさん02/09/16 21:47ID:2vuqixrP
Apache 1.3.26 + Tomcat 3.3.1 + PostgreSQL 7.2.1 を使っています。
あるDBのコネクションプーリングをするクラス(ConnectionPool)を作成して、
下のような感じにしているのですが、

pubilc class TheDB {
 private static TheDB instance = null;
 private ConnectionPool pool = null;

 private TheDB {
  // serverの設定読み込み
  pool = new ConnectionPool(上で読み込んだ設定);
 }

 public static TheDB getInstance() {
  if (instance == null) instance = TheDB();
  return instance;
 }
 :
}

これを使っていると、(この部分とは別の)classを変更したときに
新しいTheDBインスタンスが作られて、DBへのコネクションがどんどん増える、
という状態になってしまいました。(古いインスタンスが残っているのだと思いますが…)
仕方ないので今はTomcatを再起動しています。
Javaは始めて日が浅いのでよく分からないのですが、参照されなくなった
インスタンスはGCに回収されないのでしょうか?
0210nobodyさん02/09/16 23:26ID:???
>>209
Singletonで設計したTheDBが複数インスタンス化されてしまうこと自体、
おかしくないですか?
ひょっとして、似たようなクラスをコピペで大量生産してますか?

ちなみに上記のような設計にした場合、TheDBのインスタンスはGCに回収されません。
(TheDBのstatic属性として参照されつづけてますからね)
021120902/09/17 00:19ID:elworjfu
>>210
作ったクラスはTheDBだけです。

既存サーブレットを書き換えて、Tomcatが下記のメッセージを
吐いてリロード(?)したときに新たにインスタンス化されています。

2002-09-17 XX:XX:XX - ContextManager: Removing context DEFAULT:/hogehoge
2002-09-17 XX:XX:XX - ContextManager: Adding context DEFAULT:/hogehoge

古いインスタンスの方は、DBのコネクションが張られたままになって
いるので残っているようです。
0212nobodyさん02/09/17 00:39ID:???
>>211
それは Tomcat のオートリロードが利いてるだけ。Java の static オブジェクトは
JavaVM に一つじゃなくて Class インスタンスに一つ。Tomcat のオートリロードは
Class インスタンスの入れ替えを行うので、同じ JVM 上に複数の static オブジェ
クトができるわけ。どっかのサーブレットの destroy() に TheDB インスタンスを
クリーンアップするようなコード書いとけ。
0213nobodyさん02/09/17 00:50ID:???
>>211
すまん、クラスのオートリロード時にサーブレットの destroy() が呼び出されるかは
不明 (WebSphere だと destroy() 呼ばないで Web アプリケーションが再起動しちまう)。
まぁーそうだなぁ。$JAVA_HOME/lib/ext にその TheDB ってクラスの入った jar を放り
込んでおくか、環境系の変なトラブル出したくなかったら毎回ちゃんと再起動するかかな。
インスタンス内でサーバソケット開いて、新しいインスタンス生成する前に localhost
接続して前のに終了命令を出すってのもあるけどめんどくさい。

サーバサイドでリソースやスレッドを Singleton で管理するクラスを作った人間が大抵
ハマる罠。
021421002/09/17 01:05ID:???
>>213
Tomcatのオートリロードって、設定ファイルか何かではずせないものなんですか?

AppServerでクラスのリロードされると、はまることが多いですよね。
HttpSessionにいれたインスタンスのキャストに失敗したりしません?
0215nobodyさん02/09/17 03:28ID:???
>>214
たしか $TOMCAT_HOME/conf/server.xml と apps-xxx.xml にオートリロードの
設定があったはず (3.3.1)。触ったことが無いのでよく知らんけど。

そう、オートリロードが走ると、既にセッションに入っているオブジェクトの
Class と新しいクラスローダー上での Class のインスタンスが違うからキャ
ストに失敗したりする。まぁ今さら起きても「あ〜再起動忘れた〜」で済んでる
けど、最初の頃は謎だった。よく考えたらなるほどね〜って感じ。

>>209
GC で消えないのは、どこかにリロード前のそのオブジェクト (か参照たどった
別のオブジェクト) を見てるスレッドが生き残ってるから。まぁコネクション
プールなら内部に「監視スレッド」持ってても不思議じゃないから、多分そいつが
生き残って古い TheDB を参照してるので GC の対象にならない。

と見たがどうか。
0216nobodyさん02/09/17 03:37ID:???
ごめん、参照しているスレッドが居なくてもコンテキストが握ってれば
GC は走らないな。それから getInstance() には synchronized 修飾子
付けとけ。
021721002/09/17 23:18ID:???
>>215
調べてみた。Contextのりローダブルフラグで設定できるらしい(tomcat3.2.3)
ttp://www.ingrid.org/jajakarta/tomcat/tomcat-3.2.3/doc-ja/uguide/tomcat_ug.html

209の作りはそもそもどう七日って気も少しするけど、気にしない方向で。
0218nobodyさん02/09/18 16:56ID:???
servletから別のクラスを利用するときって、-classpathを付けなくてもコンパイルできるよね。なぜなのか誰かおせーて
0219nobodyさん02/09/18 17:07ID:???
Error: No match was found for method "addElement(long)".
Error: No match was found for method "copyInto(long[])".
022021902/09/18 17:09ID:???
途中でカキコしちまった。スマソ

Vectorて何でも良いんじゃないの?
Stringじゃないとエラー出るんですけど何故?
0221nobodyさん02/09/18 18:08ID:???
>>220
byte, int, long なんかのプリミティブ型じゃだめですな。
v.addElement(new Long(value)) みたいにせんと。
022221902/09/18 18:29ID:???
>>221
すんません。アホでした。
オブジェクトって書いてあったんで
・Longにして格納(220氏のご指摘どおり)
・l=(Long[])v.toArray();で配列化
・long=(long)l[i];
そしたら、type "Long" cannot be cast into type "long".
えーん(T_T)l[i].longValue()だと、java.lang.ClassCastException
どうやったらlongの値が取れますか?!
022321902/09/18 18:41ID:???
と、思ったら l=(Long[])v.toArray();
が、java.lang.ClassCastException でした。
ふ〜む?
022421902/09/18 18:56ID:???
http://www.asahi-net.or.jp/~dp8t-asm/java/tips/MakeArrayDynamically.html
を見て、v.copyInto(l);にすると
> null
> java.lang.ArrayStoreException
ひぇーん(p_;)
0225もうちょっと基礎を勉強せい02/09/19 01:32ID:???
Vector v = new Vector();
v.add(new Long(0));
...

Long[] longArray = (Long[])(v.toArray(new Long[0]));
for(int i=0;i<longArray.length;i++){
long l = longArray[i].longValue();
System.out.println(l);
}
0226nobodyさん02/09/19 01:49ID:???
先に解答を書かれたのでこれだけ言っとく


             板  違  い  で  つ
0227nobodyさん02/09/19 10:10ID:3f2LBbrr
ブラウザで動くActiveXクライアントと
UnixのServletでHTTPを使ってやり取りできますか?
Servletで掲示板システムを作って
ActiveXクライアントから投稿したいんですけど。
0228nobodyさん02/09/19 10:52ID:???
>>227
SOAPまたはSOAPモドキを使いたいということなのかもしれ
んが、そうでなきゃ、HTTPを扱うActiveXコントロールだけの
問題と思われ。

それなら、板違い。
0229nobodyさん02/09/19 11:20ID:???
>228
ありがとうございました。
プログラム板でたずねて見ます。
0230nobodyさん02/09/19 22:57ID:/RwVyOp1
組み込みブラウザ相手のWebアプリなんで、Servlet/JSP の出力に Filter かまして
Content-Length: を強制的に付けるようにしてるのだけど、doFilter() の中で
response の OutputStream を close() してしまうとストリームが既に閉じてる旨の
エラーをTomcatが時々出してくる。

ので close() しないようにしたんだけどこれは正しい?
モノの本のサンプルではclose()してるんだけど...

Tomcat 4.1.10 / RedHat7.3
0231nobodyさん02/09/19 23:01ID:???
>>230
close() しなくても良い。とりあえずそのバカ本晒せ。
023221902/09/19 23:33ID:???
>>225-226
すんまへん。
有り難うございました。
でも、意外とこういう型変換は本にもサイトにも載ってないんですよね。
助かりました。次回はマ板などに行きますです。
0233pan02/09/20 10:38ID:???
Win2K Pro + Apache2.0.4 + Tomcat4.0.4
という環境です。
連携には"mod_jk"を利用しようと思っています。

さて、本題ですが、
他のどこのサイトを参照しても、
「ソースからコンパイルして、DLLを作成しましょう。」となっています。
jakarta本家サイトもそう書いてあるので、それが正解なのはわかりますが、
私にはコンパイル環境がありません。

本家に3.3.x用の"mod_jk.dll"はあるのですが、
4.0.x用の"mod_jk.dll"はありませんので困っています。
どこか、ダウンロード出来る所とかないでしょうか?

以上、よろしくお願いします。
0234nobodyさん02/09/20 13:59ID:???
> AgentInfo agent_info=(AgentInfo)session.getAttribute("AGENT_INFO");
で、ClassCastExceptionを吐きます。

入れる時は、
> AgentInfo agent_info=new AgentInfo();
> session.setAttribute("AGENT_INFO", agent_info);
で、エラーは出てないのですが。

AgentInfoは、
> <%@ include file="agent_info.jsp"%>
で指定してるんですが、これじゃあかんのでしょうか?
023523002/09/20 22:23ID:???
>>231
おおっ、即答どもです。安心できました。
ちなみに書籍は↓
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=4-7741-1379-4
0236nobodyさん02/09/24 21:15ID:CcL7X+71
クライアントから送られてきたデータをDBに格納する際、DBの外部参照等
の制約はみなさんどうしていますか?わざとSQLExceptionを発生させて、
データ不正とクライアントに返すのが一般的ですか?それともあらかじめ
INSERT(UPDATE)する前に対象DBを検索しServlet(Java)側でそのデータの
整合性を検証するのが一般的なのでしょうか?
0237nobodyさん02/09/24 22:27ID:???
DB 更新前にデータの整合性を検証する (ストアドとかでやっても良いけど)。
SQLException の発生を期待すると、本当の DB 障害と区別をつけるために
SQLState や Error Code を見る羽目になる。DB の制約は (外部バッチ等も
考慮して) 保険と思え。
0238nobodyさん02/09/25 00:19ID:???
>>233
mod_jk.dllはTomcat4.xと3.x両対応じゃないの?
workers.propertiesとかの設定で動くと思うが。
win環境ならそのdllそのまま使えるでしょ。
0239pan02/09/25 13:52ID:???
>>238
最初はそう思って動作させたのですが、"mod_jk無いよ"みたいなメッセージがでてしまい、
上手い事動作しませんでした。

ってことでWEBを調べたら、>233のような感じだったんですよ。

ちなみにApache1.3.x+Tomcat4.0.xの場合は238さんのおっしゃる通り、
本家で配布しているdllがそのまま利用できるようです。
Apache2.0.x+Tomcat4.0.xの場合はTomcat4.0.xの配布場所から、
mod_jkのソースをダウソ、コンパイルしてdllを作成し、
それを利用しないとダメなんだそうです。
0240nobodyさん02/09/25 20:55ID:???
スレ違いかもしれんけど、自動負荷ツールでフリーな奴のおすすめないっすかね..
某JMeterのうんこUIは正直耐えられな..
0241nobodyさん02/09/27 21:39ID:RwP/8UIK
よく見かける、n個の接続を使いまわす「コネクションプーリング」と、
JDBC2.0で定義されている接続プーリングって全然違うものですか?

前者は、単純にDBの接続を使いまわすもの。後者は、ResultSetなどを
保持しつつ、他のクエリーを実行したあとに、また元の状態に復帰できる
ものという解釈で良いでしょうか?

0242nobodyさん02/09/28 13:22ID:???
コネクション、和訳をすれば、接続よ。575
024324102/09/28 18:32ID:JW6zvc4Y
>242
そそ、だから謎なの。
わざわざJDBCで用意されてるのに、なんで商用Servletコンテナ
では用意されてたりするのかなーとかが、謎で。
0244nobodyさん02/09/28 22:35ID:???
>>243
JDBC 2.0 で提供されてるのはインターフェースだけ。中身はない。
その実装を商用アプリケーションサーバのメーカーが行っている。

と、それが聞きたかったのか?
024524102/09/29 00:45ID:SRhsLTZc
>244
すいません。最も聞きたいことは、

OracleのJDBCドライバに実装されているConnectionPoolDataSource
を使うならば、Tomcat4.0.4でコネクションプーリングのクラスを作らなくて
も良いのでしょうか?ということです。

というか、Webアプリの視点から見たときに、本来、アプリケーションサーバが
実装してるものを、Oracleは、JDBCドライバで実装してくれていると考えても
良いのでしょうか。
0246nobodyさん02/09/29 02:35ID:???
>>245
そういうこと。
完全なコネクションプールは接続対象のデータベース製品の特性を
熟知しているところでないと実装が難しい。
0247nobodyさん02/09/29 11:10ID:SRhsLTZc
>246
なるほど、ありがとうございます。

アプリケーションサーバも、Oracle JDBC2.0のドライバも
同じインターフェースに実装してるということを知って、
驚きでした。早速、Oracleのドライバを使って、実現することにします。
0248nobodyさん02/09/29 23:13ID:???
>>247
多分 Oracle にしてみれば、アプリケーションサーバみたいなコネクションプールを
デフォルト装備した環境だけじゃなく、普通の Java アプリケーションでもコネク
ションプールを使えるように用意してくれていると思う。蔵鯖でプールが必要かと
いわれれば激しく疑問なので、用途が特化された (Web じゃない) 鯖とかゲート
ウェイ鯖開発用に。
024923802/10/01 23:11ID:???
>>239
レス遅れた。スマソ。
最近発売されたサーバーサイドJAVA系の本にApache2.0.x+Tomcat4.0.xの
設定例が載っているそうだよ。
本の種類はそんな多い方じゃないと思うから、本屋さんで立ち読みしてみたらどうでしょう?
0250nobodyさん02/10/02 13:07ID:???
>>249
mod_jk2 がちゃんと出るまで待った方がいいような気がする。
0251アーフォー02/10/02 15:52ID:???
EJB と JavaBeans の違いがよく分かりません。
簡単なサンプル・ソースとかが載っている書籍、ホームページがあれば教えていただけませんでしょうか?
0252nobodyさん02/10/03 14:07ID:KDvau4q1
>>250
ほらよ。
俺は結局1.3で運用してるがな。

ttp://www.acg-gmbh.de/mod_jk/
0253nobodyさん02/10/03 14:33ID:5xq1UjDr
>>251
ここは?
http://www.cc.rim.or.jp/~egami3/ejb/#4
0254pan02/10/03 15:25ID:???
>>249
有難うございます。
色々と調査した結果、Apache2.0.x用のmod_jkを発見できました。
コレを利用して立ち上げた所、正常に起動し、
exmaples以下のサーブレット&JSPが正常に動作するのを確認できました。
色々とアドバイス有難うございました。

ちなみにmod_jkの場所は、
ttp://www.acg-gmbh.de/mod_jk/ です。
tomcat-users MLにPOSTされていたのを発見しました。
0255nobodyさん02/10/04 11:27ID:???
0256nobodyさん02/10/04 11:33ID:gpSssjjt
JSPからServletのクラスを参照するにはどうすればいいのですか。
JSPファイルを表示させるときに「シンボルが解決できません」になります。
一緒に動かすServletの方はコンパイルできているのですが…。
0257nobodyさん02/10/04 12:05ID:???
JSP やサーブレットから他のサーブレットを参照するなんてことは普通やらない。
どうせデータの受け渡しをしたいだけだろ? ServletContext, HttpSession, HttpServletRequest
の setAttribute()/getAttribute() 使え。
0258 02/10/04 19:29ID:???
Staticallyにtomcatとapacheを連係させる方法しらべてるんですけど、
なかなかインターネットに情報がないですぅ。
どこもDSOをつかったインストール方法ばかりです。
どなたかStaticにApacheにインストールしてる方はいませんでしょうか?
ちなみに、mod_perlとPHPはDSOなしでApacheに組み込んでます。
025925402/10/04 21:35ID:???
>>255
なるほど。
ということは、ServletにNikki classを作って、JSPファイル内に
NIkki nikki = new Nikki(引数)
みたいな書き方はおかしいですか?
0260259=25602/10/05 06:54ID:???
誤爆してる…
>>257でした。すまそ。
0261nobodyさん02/10/05 09:56ID:???
>>259
JSP のコンパイルが通らないんだろ? import でちゃんとパッケージを指定
してる?
0262nobodyさん02/10/05 13:16ID:2e8trTi8
JDK1.4 + Oracle JDBC経由で Oracle9iに接続しています。

transaction内で、複数のデータをINSERTをしたいのですが、
1つ目のINSERTするレコードがないと、2個目以降のINSERT(別テーブル)は
成功しないテーブル構造になっているのですが、

1つ目のINSERT成功後、2個目のINSERT処理の、executeUpdate()
で、処理が止まってしまいます。(ロックされてる?)

特徴としては、関数呼び出しの構造上、以下のように動作します。

setAutoCommit(false)

createStatement
1つ目のexecute
Statementを開放

createStatement
2つ目のexecute
 <〜ここで止まる〜>
Statementを開放

 以降n回繰り返し

comit

これは、transactionのアイソレーションとかと関係あるのでしょうか?
executeをexecuteUpdateにしても同じ動きをしました。
0263nobodyさん02/10/05 16:43ID:/Ylxg1h6
丁度こっちにも同様の質問があがっとるぞ
http://pc3.2ch.net/test/read.cgi/tech/1032944246/l50
だ、SQL分自体はどおなっとるの?
0264nobodyさん02/10/05 19:06ID:2e8trTi8
>263
ほんとだ、同じことで悩んでる。

SQL文自体は、単体ごとにUPDATEすると実行されます。
(ちなみに、バッチ処理にして、executeBatchすると登録は成功します。)

各文ごとに、違うStatementを使うことが問題なんじゃないのかと
いう気がしてきました。世の中のサンプル見ても、Statementを開放
してることと、テーブルのリレーションの問題以外は問題がなさそう。

そもそも、1つめのレコードを予めDBに書いておいて、
2番目移行のUPDATEを実行すると、最後にUPDATEした奴
しかDBに書き込まれてないんですよね。

うーん。
0265259=25602/10/05 20:03ID:???
>>261
してるけど、通らないっす。
でも、指定の仕方が間違ってるのかも。

jspファイルが
USR_ROOT/###.jsp
にあって、参照したいServletは
USR_ROOT/WEB-INF/classes/###.class
にあります。
classpathはUSR_ROOT/WEB-INF/classes
で指定してあるのですが、
jspにimportを書く場合
<%@ import ### %>
であってますか?
0266nobodyさん02/10/05 23:27ID:???
>>265
デフォルトパッケージのクラスか? ちゃんとパッケージ名付けれ。

// USR_ROOT/WEB-INF/classes/jp/co/hoge/HageServlet.java
package jp.co.hoge;
...
public class HageServlet extends HttpServlet{
...

こういうサーブレットがあったとき、下のような使い方が出来なくも無い。

<%@ page import="jp.co.hoge.*" %>
<%
  HageServlet s = new HageServlet();
%>

普通はこんなことしないけど。
026726502/10/07 21:51ID:???
>>266
うおおっ!ようやくできました!!本当にありがとうございました!!

えっと、行った手順としては、
USR_ROOT/WEB-INF/classes/
026826502/10/07 22:08ID:???
途中で送ってしまった…

えっと、行った手順は
USR_ROOT/###.jsp ←問題のコンパイルできなかったファイル
USR_ROOT/WEB-INF/classes/index.class ←このファイルを最初に読み込んで、###.jspに処理を飛ばす
USR_ROOT/WEB-INF/classes/sansyou1.class ←###.jspにimportしたかったclass
USR_ROOT/WEB-INF/classes/sansyou2.class ←その他の外部クラス

という風なファイル構成だったのですが、
USR_ROOT/WEB-INF/classes/pack/sansyou1.class
USR_ROOT/WEB-INF/classes/pack/sansyou2.class

という風にpackageにして、###.jspは言われたように
<%@ page import="pack.*" %>
とすると、コンパイルできました。

ただ、どうしてデフォルトの場所では読み込んでくれないのか
という疑問も残りましたが。
ともかくコンパイルできて良かったです。ありがとうございました。

ところで、普通はデータを利用するのに外部クラスのメソッドをそのまま読み込まずに
setAttribute()/getAttribute()を使うのですか?
そうした方がメリットがあるのでしょうか。
もしよかったらもう少し教えて下さい。
0269nobodyさん02/10/07 23:51ID:???
とりあえずクラス名の先頭は大文字にしてくれ
話はそれから
0270nobodyさん02/10/08 13:49ID:???
>>111
送られるファイルのサイズを制限しているようなのですが、その処理を行っている実装部分はどこなのでしょうか?
web.xml に書かれている内容がどこで使われているのか、私の能力不足により解析できなかったので…。
027126502/10/08 21:20ID:???
>>269
なるほど。。。すみません。
そういった暗黙のルールが色々とあるのですね。
勉強します。
027226602/10/09 12:16ID:???
>>268
後からメンテナンスしやすい設計にするためだよ。サーブレットが作るデータが
必要なら setAttribute()/getAttribute() で受け渡せばいいし、サーブレットの
メソッドが呼び出したいなら、そのメソッドは Bean 化して別クラスにするのが
いい。そうすることによってクラス間の関係が疎になるので再利用しやすく後の
メンテナンス性が上がる。
027326502/10/09 21:46ID:???
なるほど。
クラスを直接importしなくてもデータのやりとりとか
特に問題なくできるのですね。
クラス同士はあまり密接に関わらせない方が良いのですか。
勉強になりました。
ありがとうございます。
0274nobodyさん02/10/11 22:13ID:4dmb/Mff
CompsitViewパターンにしてやろーと思っていて。
Strutsを使ってるのでTemplateタグで実現したいのですが

テンプレートから呼び出されるJSPのページにパラメータを渡すには
どうやればよいのでしょう?旨いやり方ありますか?

要はincludeならば
<jsp:include ...>
<jsp:param .../>
</jsp:include>
みたいなことがStrutsのTemplateタグで出来ないかと思案しているわけです。

template:insertをするPageのスコープにパラメータを埋め込んではみたんだけど
どーやらPageスコープってjsp:includeやらtemplateやら使ってもそれぞれのページ内
みたいで…まーあたりまえか(w
requestやらapplicationやらsessionに埋め込めばいいのだろうけど、なんとなく
イメージ的に違うって感じ。でもそれっきゃないのかなぁ?

誰かグルになってくださいませ。
0275nobodyさん02/10/11 22:31ID:???
<template:put> と <template:get> じゃダメなのか?
027627402/10/11 22:35ID:???
>275
ダメやっちゅーに。
ページコンポーネントの組み込みはでけるけど、その組み込むページに
どやってパラメータを渡すかってことが知りたいのです。
0277nobodyさん02/10/12 01:01ID:xShHXVsw
サーバー側に固有の数字をランダムに当てたディレクトリを
自動的に作成したいのですが、そのようなことができるメソッドってありますでしょうか?
ランダムな数字を作るのはわかっています。
ディレクトリを自動的に作成するメソッドがありましたらご教授ください。
おながいします。
0278nobodyさん02/10/12 01:05ID:???
>>277
File#mkdir(), File#mkdirs() の API リファレンス嫁
027927702/10/12 01:58ID:xShHXVsw
ホント馬鹿ですみませんがもう少しヒントをくらはい・・・。

String dirname = "場所";
boolean a = mkdir(dirname);

ってやると
シンボルを解釈できません。
シンボル:メソッドmkdir(java.lang.String)
ってでます。import java.lang.*;は書いてあります。
0280nobodyさん02/10/12 02:01ID:???
File directory = new File("C:\\あほ\\氏ね");
directory.mkdirs();
■ このスレッドは過去ログ倉庫に格納されています