トップページ⇒tech
1001コメント315KB

JAVA+JSP+Struts+Tomcat Part3

■ このスレッドは過去ログ倉庫に格納されています
00019652006/10/26(木) 20:41:36
ほらよ。立ててやったぞw
0499デフォルトの名無しさん2007/04/11(水) 19:11:52
これはTomcatというよりApacheの問題かもしれないのですが、
ApacheからTomcatにURLを渡すとき、勝手にURLの%HHのようなエスケープ文字をデコードして渡してきてしまいます。
コネクタモジュールは、mod_jk2を使っています。
URLに入力されたエスケープ文字をデコードさせずにそのままTomcatへ渡してもらうには
どうしたらいいのでしょうか?
0500デフォルトの名無しさん2007/04/11(水) 19:36:56
jdbcでデータベースに接続して、クエリを実行してマッチした行を返すプログラムを
作っています。プログラムはコンテナに配置してjspで入出力を行う感じです。
一応一通り作ったには作ったのですけど、
データベースには接続出来ているようなのですが、
なぜかStatementもしくはPreparedStatement文が実行できなくて、SQLExceptionを投げてるようです。
Statement stmt = con.createStatement();
Resultset rs = stmt.execteQuery("select * from data");
のような感じなのですが、何故駄目なのか分かりません。
ちなみにjavabeans内でメソッド実行&データ保持して、jsfで制御してます。
WEB-INF/lib/以下に、必要なjarファイルはすべて置いています。
普通のjavaプログラムで同じ内容のものを実行したのですが、この場合は問題なく動いています。
すいませんがご教授お願いします。
0501デフォルトの名無しさん2007/04/11(水) 19:59:58
>>499
> ApacheからTomcatにURLを渡すとき、勝手にURLの%HHのようなエスケープ文字をデコードして渡してきてしまいます。

そんな動作はしないはずですが・・・
本当にApacheからTomcatにURLを渡すときですか?
その根拠は?


>>500
>何故駄目なのか分かりません

どこでどう駄目なのか分かりません。
05024932007/04/11(水) 20:10:52
>>498
web.xml以外にリソースを書ける場所があるんですか?
どこに書いてどう取得するんでしょうか?
0503デフォルトの名無しさん2007/04/11(水) 20:12:05
"select * from data;" <- ; をつける
0504デフォルトの名無しさん2007/04/11(水) 20:16:09
>>503
ひそひそ、あら奥様聞きました?

SQLExceptionが出てるなら何かメッセージも拾えるだろからそれを晒せよ。
05055002007/04/11(水) 20:17:25
>>501
try{
List list = new ArrayList();
Class.forName("org.hsqldb.jdbcDriver");
String url = "jdbc:hsqldb:hsql://localhost";
Connection con = DriverManager.getConnection(url, "sa", "");

String selectStatement ="select * from books where title like ? or author like ?"
temp="error1!";
PreparedStatement Stmt =con.prepareStatement(selectStatement);
temp="error2!";
Stmt.setString(1,"%Unix%");
Stmt.setString(2,"%Unix%");
temp="error3!";
ResultSet rs = Stmt.executeQuery();

while (rs.next()) {
(途中略)
}catch (ClassNotFoundException e) {
temp="ClassNotFoundException";
e.printStackTrace();
}catch (SQLException e) {
temp="SQLException:"+temp;
e.printStackTrace();
}
とtempに何処までプログラムを読んだか見るための変数を用意して試したところ、
tempには、"SQLException:error1"が入ってました。よって
PreparedStatement Stmt =con.prepareStatement(selectStatement);
が怪しいとふんだのですが、結局別に文法も間違っていないようだし、どうしたらいいかわからないのです。。

>>503
;をつけましたが、はやりエラーです。。
0506デフォルトの名無しさん2007/04/11(水) 20:19:18
>>505
>>504

スタックトレース見てみろや。
0507デフォルトの名無しさん2007/04/11(水) 20:24:07
>>506
e.getSQLState()を見たら08003でした。
ということで接続エラーらしいのですが、プログラムは"error1"まで進んでますし、
Class.forName()とConnection con = DriverManager.getConnection(url,"sa","")の部分も合ってると思います。
Tomcatの方でデータベースに接続するための設定などが必要なのでしょうか?
0508デフォルトの名無しさん2007/04/11(水) 20:26:18
接続エラーじゃなくて、データベースNotFoundらしいです。
ただのjavaプログラムから同じようにやる場合は出来るのですが。。
0509デフォルトの名無しさん2007/04/11(水) 20:39:13
>>508
単にDB作ってないんじゃね?
0510デフォルトの名無しさん2007/04/11(水) 20:40:38
>>502
Tomcatの管理画面開いてみたことある?
0511デフォルトの名無しさん2007/04/11(水) 20:43:17
>>509
いや、作ってます。Managerから接続してクエリ実行して返ってきてますので。。
0512デフォルトの名無しさん2007/04/11(水) 21:06:50
じゃあDBの問題だよ。板違いだから消えてね。
0513デフォルトの名無しさん2007/04/11(水) 21:21:37
Javaプログラムだとコネクションできるけど、
Apacheからだとコネクションできない・・・って
これユーザ権限の問題じゃねぇの?

コントロールパネル→コンピュータの管理→ローカル ユーザーとグループ
開いて、Apache用アカウントがDBへのアクセス権限持ってる事確認するとか。
0514デフォルトの名無しさん2007/04/11(水) 23:50:46
>>511
だからスタックトレースみてみろよ
0515デフォルトの名無しさん2007/04/12(木) 00:47:24
新人研修でわかんなきゃこのスレに書けとでも習ってるのか?
盛んなのは結構だが明らかに質が・・・って最近おもふ
0516デフォルトの名無しさん2007/04/12(木) 02:18:43
つーかさ、このスレタイの組み合わせで今後開発するかって言う話も・・・
0517デフォルトの名無しさん2007/04/12(木) 02:39:03
すげぇ過疎スレだな。
せっかくレスつけても放置だもんな。

0518デフォルトの名無しさん2007/04/12(木) 09:17:07
それ過疎とは言わんだろw
0519デフォルトの名無しさん2007/04/12(木) 10:29:47
>>514
ContextListener: attributeAdded('com.sun.faces.config.WebConfiguration', 'com.sun.faces.config.WebConfiguration@aae86e')
java.sql.SQLException: socket creation error
at org.hsqldb.jdbc.jdbcUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.<init>(Unknown Source)
at org.hsqldb.jdbcDriver.getConnection(Unknown Source)
at org.hsqldb.jdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at BookFind.search(Unknown Source)
at BookFind.search(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
(略)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Unknown Source)
ContextListener: attributeRemoved('com.sun.faces.config.WebConfiguration', 'com.sun.faces.config.WebConfiguration@aae86e')

といった感じです。ということは、接続の問題みたいですね。板違いなので失せますw失礼しました。
0520デフォルトの名無しさん2007/04/12(木) 10:51:10
ネタ元ここ?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31612&forum=12&4

JDBCドライバが認識されていないだけでは?
Tomcatは「CLASSPATH」の設定を無視しますよ。

1、Tomcatにhsqldb.jarへのクラスパスを設定し直す。
0521デフォルトの名無しさん2007/04/12(木) 10:53:47
>>519
なんだ、やっぱりgetConnectionの中から例外飛んできてんじゃん。

>板違いなので失せますw失礼しました。
なにwとか付けてんの。自分の質問の仕方やレス対する対応の仕方が悪かったとは全く思ってないんだね。
そんなんじゃどこ行っても相手にされないよ。さようなら。
0522デフォルトの名無しさん2007/04/12(木) 10:59:33
煽るだけか。しょーもねぇー
0523デフォルトの名無しさん2007/04/12(木) 11:09:46
>>522
本人乙
0524デフォルトの名無しさん2007/04/12(木) 11:12:27
スルー。

http://www.javaroad.jp/opensource/js_tomcat2.htm
0525デフォルトの名無しさん2007/04/12(木) 16:31:18
>>515 スンマソ、俺がこのスレのレベル下げてるΣ(´∀`;)
0526デフォルトの名無しさん2007/04/13(金) 01:01:32
>>519
板違いだと思うならくんなよな
まじめに答えようとした俺の居場がねぇ
0527デフォルトの名無しさん2007/04/13(金) 01:05:47
そうか、漏れがいちいち新人研修しなくても、
課題だけ与えて、にちゃんのこのスレで解決しろって
ここのアドレスをメールで送れば良いだけなのか。

さっそく明日からそうするよ。ヒントありがとう。
0528デフォルトの名無しさん2007/04/13(金) 01:12:59
>>527
ここに仕事場からアクセスできる段階で会社の質が知れるな
0529デフォルトの名無しさん2007/04/13(金) 02:45:04
>>528
2ch禁止したら明らかに開発スピードが落ちた会社があったって記事を最近どっかで見たよ。
0530デフォルトの名無しさん2007/04/13(金) 02:48:59
書き込みを禁止にしてるとこは多いね。
見るほうはググルと引っかかってくるからしょうがないわ。
0531デフォルトの名無しさん2007/04/13(金) 02:56:21
みつけた
http://blog.livedoor.jp/lalha/archives/50156986.html
0532デフォルトの名無しさん2007/04/13(金) 06:13:47
口先ばっか
0533デフォルトの名無しさん2007/04/13(金) 06:17:53
センスがないから答が出てるのに気付かないのだろう
0534デフォルトの名無しさん2007/04/13(金) 07:19:47
>>529=531
記事・・・
そして内容・・・

明らかに・・・
0535デフォルトの名無しさん2007/04/13(金) 08:25:19
Strutsって別にカスタムタグは使わなくてもいいんですか?
それなら便利なんですが
0536デフォルトの名無しさん2007/04/13(金) 09:28:25
オーケーオーケー
0537デフォルトの名無しさん2007/04/13(金) 09:29:25
苦節5年、ようやくStrutsがわかってきました。
0538デフォルトの名無しさん2007/04/13(金) 09:30:41
>>534
斧社長の関係者だろうね
0539デフォルトの名無しさん2007/04/13(金) 09:35:43
5年はかけすぎだろ
0540デフォルトの名無しさん2007/04/13(金) 09:35:45
struts1.3.8を使ってみたんですが
taglib uriがhttp://struts.apache.org/tags-bean
になってるんですが
/WEB-INF/じゃなくてもいいんですか?
0541デフォルトの名無しさん2007/04/13(金) 09:44:48
オーケーオーケー
0542デフォルトの名無しさん2007/04/13(金) 10:23:48
別にValidatorって使わなくてもいいですよね?
0543デフォルトの名無しさん2007/04/13(金) 10:32:13
Validatorと同じことをする機能・実装が他にあってそっちを使ってるなら、使わなくていい
0544デフォルトの名無しさん2007/04/13(金) 10:42:48
>>537
struts2がでてるんだが、こちらはたぶんすぐ覚えることが出来るぞ
0545デフォルトの名無しさん2007/04/13(金) 11:01:18
>>543
あいあいさー

あと、DBアクセスはActionでやればいいですか?
それとも新たにJavaBeansを作ってそっちに渡してやったほうがいいですか?
0546デフォルトの名無しさん2007/04/13(金) 11:12:36
BeansというかMVCのMの部分でやる様な形に
ActionはCだ
0547デフォルトの名無しさん2007/04/13(金) 23:05:37
>>544
別物だからな。つうかWebWorkだろ。
0548デフォルトの名無しさん2007/04/14(土) 13:03:35
TagSupport継承してカスタムタグ作ってるんだが、
プロパティの初期化をどこでやればいいか迷ってる。
同じjspで同じタグを2回使うと、1回目で生成したTagSupportインスタンスが2回目で使い回される。
よって1回目のタグで指定したプロパティの値がそのまま保持されている。
2回目のタグで設定したプロパティは新しい値で上書きされるからよいけど、
そうでないのは1回目の値が使い回されて困る。
とりあえず、setPageContext()がタグで指定した値でプロパティが設定される前に
呼ばれるっぽいので、オーバーロードしてデフォルト値設定するようにしたけどいいのかな。
0549デフォルトの名無しさん2007/04/15(日) 16:35:55
Java コンパイラー・レベルが、インストールされている Java プロジェクト・ファセットのバージョンと一致しません。

というエラーがでてきた
どうやったら解決します?
05505492007/04/15(日) 18:02:11
解決しました、失礼しました
0551デフォルトの名無しさん2007/04/15(日) 20:17:37
最近strutsを始めました。formから文字を入力してjspへ移行するというして表示するという
単純なサンプルソースを組んだのですが、formに日本語を入力すると文字化けするという
不具合に遭遇してしまいました。んでググったところstrutsにはfilterを
利用する以外この手のタイプのアプリケーションの文字化けは避けられない
と言うことが分かりました。んで参考になるサイトからフィルターとweb.xmlを
コピペしたのですが,文字化けが直りません。何でですか?struts2,tomcat5xeclipse3.2
使っています。参考にしたサイト↓
http://www.javaroad.jp/opensource/js_struts10.html
問題を丸投げしてる感じがして申し訳ないのですが教えてください。
ちなみにstrutsプラグインは使ってません。
05525512007/04/15(日) 20:19:39
失礼、リンクのURL違ってました。
http://www.javaroad.jp/opensource/js_struts10.htm
0553デフォルトの名無しさん2007/04/15(日) 20:31:15
>>551
たぶんweb.xmlの設定だと思う

このスレの>>9あたりを見て試してみてください

struts2とstrut1.*は別物らしいです(そこら辺よくわかりません)
参考サイトだとstruts1.2.4と書いてあるのでstruts2では役に立たないかもしれません


05545512007/04/15(日) 20:33:50
そうですか。早速のご返答どうもありがとうございます。
キーワードを変えてググってみるつもりです。
0555デフォルトの名無しさん2007/04/15(日) 20:45:55
Struts2は1とは確かに別物だが、基本思想は同じ

SpringMVCとかJSFの影響受けて非常にまともになった
新規なら1.xはなかったことにしていいよ
0556デフォルトの名無しさん2007/04/16(月) 10:43:11
まあ、それをいうならStrutsはなかったことにしてもよさそうだけど。
05575512007/04/16(月) 19:35:33
やはりいくら調べても文字化けが直らないのでstrutsのヴァージョンを
1系に落としたら、どうやらフィルターが効いたようで文字化けが直りました。
なんで2系にはフィルター効かなかったんだろ?webで対策出るようになるまで
2系見送りorz
0558デフォルトの名無しさん2007/04/16(月) 20:00:21
ソースがわからんとなんとも
それにログおっていればどうなるかすぐわかるだろ
0559デフォルトの名無しさん2007/04/16(月) 20:50:54
基本的な仕組みをちゃんと理解していないとそうなる。
1.xにしたらどうして化けなくなったのかもわかってないんだろうな。
05605512007/04/16(月) 22:15:35
全く分からないっすorz strutsがjarファイルのみで動いてるということは
分かりましたけどね。あ、厳密にはxmlの設定ファイルも必要でした。
0561デフォルトの名無しさん2007/04/16(月) 22:23:57
struts以前の話っぽいな。
とりあえず動くようになったっぽいとかそういう程度で進めるのはまた同じ問題に遭遇したりして効率悪そうだけど。
まぁ、仕事や勉強が目的でないのならいいか。
0562デフォルトの名無しさん2007/04/16(月) 22:32:44
JAVAは内部はウニCODEだから、例えばメモ帳(SHIFT-JIS、正式にはWINDOWS-3.1J、MS932)で書いた物を
そのままUNICODEとしてコンパイルしたんじゃねか、単に。
0563デフォルトの名無しさん2007/04/16(月) 23:09:48
>>562
バカ発見
0564デフォルトの名無しさん2007/04/16(月) 23:58:21
>>562
コンパイル時のソースエンコーディング指定の間違いと、リクエストパラメータの文字化けは関係ない。
そもそも、こんなところで躓く奴がわざわざコンパイルオプションで
ソースの文字エンコーディングを指定してコンパイルしているとは考えにくい。
デフォルトではプラットフォームの文字エンコーディングで扱われるからな。

それから、SHIFT-JISじゃなくてSHIFT_JISだ。
さらに、WINDOWS-3.1JじゃなくてWINDOWS-31Jだ。
05655512007/04/17(火) 07:54:04
.do で呼ばれたときのformでインスタンスに格納するとき問題が起きるっぽいから
setCharacterEncoding使えるようになれば問題はあっさり改善するんですけどね。
apacheさんたのんます。
0566デフォルトの名無しさん2007/04/17(火) 09:29:26
server.xmlにエンコーディング指定
0567デフォルトの名無しさん2007/04/17(火) 11:06:21
>>565
そもそもstruts2は推奨はdoじゃないんじゃね?
フィルターつかってないの?
05685512007/04/17(火) 17:35:00
>>567 strutsは1系にヴァージョンダウンしたんです。2系はwebに載るようになってから
使おう思って。
0569デフォルトの名無しさん2007/04/17(火) 17:43:40
なにいってるんだ?
2は普通にwebにのってるぞ
05705512007/04/17(火) 19:02:28
いや、文字化け対策とか、必要なjarファイルとか・・・
ver2使ってても参考書通りにやってたらjarファイルver1と同じになったorz
しかもcommonファイルが2つ足りなくて探し回る羽目にw
05715512007/04/17(火) 20:18:11
失礼、ver2使ってても参考書通りにやってたらjarファイルver1と同じになったorz
>>この表現は誤解を与える。eclipse使ってるのだが、eclipseのlibに
struts2\libにあるファイルをインポートしたわけさ、そしたら基本必須jarファイルは
参考書とほぼ同じ、しかもそれだけではtomcat起動した時にコンソールにactionを
使用不可にしますってエラーログ。っておいw必須commonファイルが足りないんかいw
ってことで探し回った経緯。
0572デフォルトの名無しさん2007/04/17(火) 20:37:07
Servlet側で
if(request.getContextType=="text/html; charset=Shift_JIS"){
〜
response.setContextType("text/html; charset=Shift_JIS")
PrintWriter out=response.getWriter();
out.println〜
〜
elseif(request.getContextType=="text/html; charset=UTF-8"){
〜
とか場合分けでゴリゴリいくという手もあるぜ
05735512007/04/17(火) 21:08:54
>>572 すみません、よく理解できないので、しばらく参考書通りにやって
身体に覚え込ませてから応用とか、そういうのやってみようと思います。
なんかコテハンっぽくなってるので消えますね。これからもよろしくお願いします。
0574デフォルトの名無しさん2007/04/17(火) 22:18:11
>>551がんがれぇw
0575デフォルトの名無しさん2007/04/17(火) 22:46:39
<%@page contentType="text/html; charset=Shift_JIS">
0576デフォルトの名無しさん2007/04/18(水) 09:15:10
サーブレットからプロパティファイルを読み込みたいのですが
File Not Foundになってしまいます。
プロパティファイルはどこに配置すればよいのでしょうか?

Properties prop = new Properties();
prop.load(new FileInputStream("test.properties"));


0577デフォルトの名無しさん2007/04/18(水) 10:05:08
Servletでクロスサイトスクリプティング対策で
HTMLエンコーディングをしたいのですが
どのような関数がありますか?
0578デフォルトの名無しさん2007/04/18(水) 10:13:03
strutsのstruts-configに追加で記述したいのですがどうやればいいですか?
<struts-config>
<form-beans>
<form-bean name="chap02_loginForm" type="chap02.LoginForm"/>
</form-beans>

<action-mappings>
<action path="/chap02/login"
type="chap02.LoginAction"
name="chap02_loginForm"
scope="request">
<forward name="success" path="/WEB-INF/jsp/chap02/success.jsp"/>
</action>
</action-mappings>
</struts-config>
<struts-config>
追加記述
</struts-config>
こうやるとエラーが出ます。
0579デフォルトの名無しさん2007/04/18(水) 12:02:18
>>576
InputStream in = this.getClass().getClassLoader().getResourceAsStream(path);
pathはclassesの下からの相対だとおもう。
05805782007/04/18(水) 12:40:38
失礼、事故解決しました。記述方法が全然違ってたw<struts-config>
の子要素でかかんやいかんのね。
05815782007/04/18(水) 12:49:47
表現間違ってたorz"既に記述してある<struts-config>の子要素"に脳内変換
しておいてください。
0582デフォルトの名無しさん2007/04/18(水) 13:34:59
Strutsを使うとURLにjsessionidが付加されてしまいますが
クッキーでのみ取り扱いたい場合はどうすればいいでしょうか?
0583デフォルトの名無しさん2007/04/18(水) 17:36:36
それ、strutsじゃなくてtomcatが付加してるんだよ
そして、それを付けない方法はない
0584デフォルトの名無しさん2007/04/18(水) 17:42:27
ま。。。まじっすか
0585デフォルトの名無しさん2007/04/18(水) 23:38:49
validatorで半角英数字のみ許可される項目を検証する際に
maskで^[0-9a-zA-Z]*$として
チェックしようとしているのですが、
入力値が半角スペースのみの場合に、
エラーとならないのですが、なぜでしょうか。
正規表現の記述が間違っていますか?
それとも他の原因でしょうか。
教えてください。

ちなみにstrutsのバージョンは1.2.9です。
お願いします。
0586デフォルトの名無しさん2007/04/19(木) 07:18:55
Strutsで任意のHTMLを出力する場合
<bean:write>だとHtmlEncodingされてしまうのですが
生のHTMLを出力するにはどのタグを使えばいいでしょうか?
0587デフォルトの名無しさん2007/04/19(木) 08:24:18
URLにjsessionidが付加されてしまうということは
ユーザー認証情報はメモリークッキーに保存したほうが
よいですか?
0588デフォルトの名無しさん2007/04/19(木) 09:23:09
>>585
半角スペースだけだとトリムされちゃわね?
で、バリデートするときには空文字で通るとか
0589デフォルトの名無しさん2007/04/19(木) 09:24:01
>>586
filter="false"
0590デフォルトの名無しさん2007/04/19(木) 09:41:37
>>589
thanks
0591デフォルトの名無しさん2007/04/19(木) 10:18:56
>>582
フィルターでリクエストURLにjsessionidがついてたら
リダイレクトして、このサービスはクッキー未対応のブラウザでは
使用できませんとか?
0592デフォルトの名無しさん2007/04/20(金) 10:35:14
<%@ page contentType="text/html;charset=Shift_JIS" %>
<html>
<head>
<title>1〜10までの計算</title>
</head>
<body>
<h1>実行結果</h1>

<%
int sum = 0;
int i = 1;

while (1 <= 10) {

sum = sum + i;

i = i + 1;
}
%>

<p>
1から10まで加えた合計の値は

<%= sum %>

です。
</p>

</body>
</html>
どなたかこれのどこが悪いか教えてください。%>でエラーが出るんです;;
05935782007/04/20(金) 11:05:28
jspのコンパイルエラーは問題がある部分の<%の始まり部分しか指摘してくれない。
エラーログの<%の中をもう一度確かめてみ?
0594デフォルトの名無しさん2007/04/20(金) 11:34:16
ぐはwCALLPATH通してなかったすw
申し訳ないです^^;
まぁその通し方がわからないのですけどねw
0595デフォルトの名無しさん2007/04/20(金) 11:42:21
つうか、IDE使えよ。
CLASSPATHの通し方わからないくらいなら、NetBeansおすすめ。
0596デフォルトの名無しさん2007/04/20(金) 11:48:47
通せた通せたw
しかし、またエラーだ^^;
ソースどっか変なのかなぁ・・・
0597デフォルトの名無しさん2007/04/20(金) 12:21:43
eclipse
0598デフォルトの名無しさん2007/04/20(金) 13:01:44
NetBeans
■ このスレッドは過去ログ倉庫に格納されています