トップページ⇒php
992コメント372KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん04/06/16 05:30ID:XUmu9/tY
質問する前に最低でもGoogleで検索するように

前スレ
■■ 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
0313nobodyさん04/11/21 13:30:58ID:???
タグファイルとか
0314nobodyさん04/11/24 20:55:26ID:???
>>309
日本語がちょっと変だけど、それをどうやって修正してる?
クラスパスがちゃんと通ってないだけだと思うけど
0315nobodyさん04/11/26 00:43:01ID:1PPB6FSr
初心者ですが教えて下さい
Eclipseでtomcatプロジェクトを下記に作成して表示用にクラスを作ったのですが
C:\eclipse\workspace\Servlet\WEB-INF\classes\servlet

実際に画面に出すとき
http://localhost:8080/Servlet/WEB-INF/classes/servlet
と思いきやパスが見つかりませんとでます
http://localhost:8080/Servlet/
までは画面が出せるのですが、それ以降のパスがよくわかりません。
サイトとか見ても、途中のパス名が変わっていたりしているので
どこかでパス名を設定する場所があると思うのですが
どこでするのでしょうか?教えて下さい
0316nobodyさん04/11/26 03:39:12ID:???
>>315
WEB-INF/web.xmlの中でクラスとURLのマッピングを指定します。

あとは
ttp://localhost:8080/manager/html
ttp://www.atmarkit.co.jp/channel/jspservlet/jspservlet.html
ttp://www.google.co.jp/
とかを参考にがんばってください。
0317nobodyさん04/11/26 12:18:03ID:9IIMg8+8
<jsp:include〜>を使用するとセキュリティ上良くないという話を聞いたのですが、
何か問題があるのでしょうか?
0318nobodyさん04/11/26 12:50:01ID:???
>>317
聞いたこと無い。
<%@include 〜 %> で、拡張子を.inc などにすると問題が出てくる場合があるが。
0319 04/12/02 13:10:31ID:/bfokzpI
>>318
げっ、それってどういう場合でしょうか??
0320nobodyさん04/12/02 14:08:03ID:???
>>319
ブラウザから直接ソースを閲覧されるから。
拡張子jspならコンテナがJSPとして処理するが、.inc等はそのまま内容をレスポンスしてしまう。
0321nobodyさん04/12/03 23:30:59ID:J1wDZcQz
サーブレットの表示で
ttp://msugai.fc2web.com/java/servlet/BeansServlet.html
など参考にして
web.xml,server.xmlなどでマッピングさせて
WEB-INF\classes直下にクラスファイルを置きましたら表示させる事が出来ます
しかしパッケージ化(jp.co〜)などその下にさらにフォルダを作ってしまうと
表示されなくなります。
この場合どうすればいいのでしょうか?
クラスパスなどについても一回一回設定するしかないのでしょうか?
0322nobodyさん04/12/04 02:05:58ID:???
web.xmlで

<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>jp.co.〜.MyServlet</servlet-class>
</servlet>

のようにservlet-classの部分でパッケージを完全修飾すればよいだけかと。
0323nobodyさん04/12/04 22:34:45ID:???
tomcatに登録したJNDIデータソースって
webコンテナ外からlookupできますか?
weblogicだとコンテキストにパラメータを設定すればイケると思ったけど。
0324nobodyさん04/12/05 02:02:46ID:???
複数のIEを起動して、
それぞれで、複数のフレームに区切られた画面を表示していると、
フレームのセッションが他のIEになってしまうことがあります。
なぜでしょう。
032532404/12/05 02:06:05ID:???
フレームのセッションが他のIEで表示しているフレームのものになってしまうことがあります。

です。
0326nobodyさん04/12/05 02:24:29ID:???
>>324
複数のIEを起動するとき、どうやって起動していますか?
CTL+N または、[新規作成]->[ウィンドウ]を使っている場合、
[スタート]->[インターネット]等、IEのアイコンから直接起動する
方法でもう一度同じことをやってみてください。
現象は同じですか?
0327nobodyさん04/12/06 01:05:16ID:???
>>326
CTRL+N
ではなく、iexplore.exe を起動しています。
0328nobodyさん04/12/11 01:04:14ID:???
org.gjt.mm.mysql.Driverを使ってjspからmysqlにアクセスしています。
tableをjspから作るにはどうしたらいいんでしょうか?
qにはCREATE TABLE文が入っているのですが、以下のやり方だとダメでした。
ResultSet rss=sttSql.executeQuery(q);
(Can not issue data manipulation statements with executeQuery()というエラー)
tomcat 5.0.28,mysql-connector-java-3.0.16
0329nobodyさん04/12/11 02:06:59ID:???
>>328
mysqlは知らんけど多分。
executeQuery ではなく、executeUpdate。
で ResultSet じゃなく int で結果を受け取る( 0 が戻るだけだけど)。
0330nobodyさん04/12/11 03:30:49ID:???
>>329
レスどうもです。
intでexecuteUpdateしてみたのですが、エラーが出てしまい、
適当にexecuteだけにしたら別なエラーでboolenで受ければよいと出てきたので、
結局boolenでexecuteでうまくいきました。
ありがとうごさいました。
0331nobodyさん04/12/14 19:01:50ID:???
セッション情報を任意のセッションIDから復元&保存することって出来ますか?

セッションIDをURLに付加したりCookieを使用せずに
POSTデータとして送りたいのですが・・。

コンテナが自動でやってるぽいので無理ぽ?(´・ω・`)
0332nobodyさん04/12/14 20:57:18ID:???
DBに入れとけば?
0333nobodyさん04/12/15 22:45:59ID:cHQ+sEWt
Resin 2.1.14 + PostgreSQLでコネクションプーリングを使おうと
いろいろやっているのですが、以下のようなエラーがでます。
PostgreSQLがわをコード変換つきでmakeしなおせばよいのでしょうが、
それができないため、JDBCがわでなんとかする方法がないでしょうか。

500 Servlet Exception

Something unusual has occured to cause the driver to fail. Please report
this exception: Exception: java.sql.SQLException: ERROR: Conversion between
UNICODE and EUC_JP is not supported

Stack Trace:

java.sql.SQLException: ERROR: Conversion between UNICODE and EUC_JP is
not supported
0334nobodyさん04/12/18 01:48:32ID:???
import java.util.*;
public class Client {
  public static void main(String[] args) {
    TreeSet treeSet = new TreeSet();
    treeSet.add("1");
    treeSet.add("2");
    treeSet.add("3");
    treeSet.add("4");
    Iterator iterator = treeSet.iterator();
    while(iterator.hasNext()) {
      System.out.println(iterator.next());
    }
  }
}
このサンプルでwhileが終わった後、
特定の要素を指定して取り出したいのですが、どうやったらいいんでしょうか?
できるなら、ある特定の条件に一致する要素の要素番号?を
while中で取り出しておいて、後ほど要素を指定して取り出したいと思っています。
whileの処理が終わらないと評価できない処理なので苦戦してます。。。
0335nobodyさん04/12/18 05:19:31ID:???
スレタイ嫁
阿呆
0336nobodyさん04/12/19 01:05:06ID:???
JSPとMySQLで、Webアプリを作成しようとしています。
MySQLはデフォルトではトランザクション機能は有効になっていないため、
複数同時アクセスがあった場合、おかしくなります。

 A    B
読(a)   /
 /    読(a)
書(a+1)  /
 /   書(a+2)

トランザクション機能を使わずに、整合性を保つにはどうすればいいのでしょうか?
もしかして、スレ違いでしょうか・・・

実システムを作るわけではなく、単なる宿題です。
0337nobodyさん04/12/19 01:42:21ID:???
>MySQLはデフォルトではトランザクション機能は有効になっていないため
有効にしろよ。
033833604/12/19 14:49:52ID:???
トランザクション機能を利用してはいけないという条件の宿題なんです(´Д⊂
ロックで排他処理をさせることを思いついたんですが、
Servlet/JSPでのロックの定石ってあるんですか?
perlとかだとflockという関数がありますが。
0339nobodyさん04/12/19 17:49:35ID:???
>>338
それは、より深く理解するために、トランザクション処理を一度手前で考えてみろ。
という意図なのか、
それとも、担当講師が、昔トランザクションを知らなかった事を
馬鹿にされた事があって、それを根に持って使うなといっているのか。

前者なら、Servlet/JSP ということではなくて、
ロック処理、競合解決処理一般という探し方をしたほうがええんでは。
(いっそのこと、PostgerSQLのソースとかをハックしたりしたほうが、
 より実践的な知識が身につきそうな気がする)

あるいは、トランザクション処理の重要性を教えるために、
無いとどれだけ大変かを体験させようとしてるんだろうか。
0340nobodyさん04/12/27 06:19:50ID:???
>>338
メソッドにsynchronized修飾子を付けスレッド間の排他制御をする
0341nobodyさん04/12/30 08:42:10ID:???
JSPでページを作る場合
<%@ page contentType="text/html; charset=shift_jis"%>
と出力する文字コードを指定しますがそれせずに後から
response.setContentType("text/html; charset=" + enc);
のように書いて動的に出力する文字コードを変える方法は
無いでしょうか?
上記のようにやってみたらエラーがでて出力できなかったので・・・
0342nobodyさん04/12/30 08:55:20ID:???
>>341
事故レス
すいません、そのままでできますた。
@pageのとこって、<%〜%>にいれてコメントアウトしてもダメなんですね・・・OTL
0343nobodyさん05/01/02 18:25:04ID:???
>>340
VMが複数、DBがひとつの場合を考えてみ。
0344nobodyさん05/01/02 20:45:57ID:???
Fedora Core 2にJPackageのTomcat5入れてる。
workers2.propertiesのuriで仮想ホストを指定すると
効かない。
ありがちな見落としを列挙してくれ。

正直mod_jk2あたりのバグも疑ってる。

Tomcat5-5.0.30-1jpp
mod_jk2-4.1.27-13
httpd-2.0.51-2.9
0345nobodyさん05/01/03 09:42:49ID:???
>>343
vmは複数でもvmを動かす鯖は1台?
適当なファイルを作っておいて、ロックをかけてオープンしてから
DBの処理を実行して、DBの処理が終了すればロック開放する。
排他される側の別のプロセスはロック中であれば待機する。
そんなんじゃだめかな。
0346nobodyさん05/01/03 13:52:47ID:???
DBにロック用項目を用意する

とか

あほらし
0347nobodyさん05/01/03 19:41:47ID:???
>>345
この場合それぐらいしかないような気がする
0348nobodyさん05/01/14 03:15:01ID:???
質問です。
サーブレットのメモリとjavaコマンドで起動したバッチは
プロセスが異なるから(?)Singletonでもオブジェクトを
共有できないことがわかりました。
で、コネクションプーリングを自作で実装していたのですが
オブジェクトを共有できる方法はありますか?

またはデータソースを使用すればサーブレットとバッチのコネクションの
管理ができるのでしょうか?
0349nobodyさん05/01/14 03:30:01ID:???
そんなことするより、バッチからサーブレット呼び出したほうが楽。
0350nobodyさん05/01/14 07:36:10ID:???
Windows XP上にTomcat5.0.24を使ってるんですが、
サーブレットでURLに日本語パラメータを付加したリンクからのGETから
日本語パラメータがどうしてもちゃんと取り出せません。
charsetも設定してますし、requestもresponseもsetCharacterEncoding
でShift_JISを設定してますし、
<A>タグを書き出す時にもURLEncoder.encodeしたり、
パラメータを取り出してからURLDecoder.decodeしたりもしてみましたが
どうしても駄目です・・・
ブラウザもIEとFirefoxで試しました。
もうオテアゲな状態です・・・
他に何かチェックするべき所はあるでしょうか?
0351nobodyさん05/01/14 10:00:22ID:???
>>350
Tomcat5.0.19からはGETはsetCharacterEncoding()の適用範囲外。
APIドキュメントによればsetCharacterEncoding()は、リクエストのボディの
文字エンコーディングをオーバーライドする、とある。
GETのパラメータはリクエストのヘッダにあるからsetCharacterEncoding()の適用範囲外になる。
responseのsetCharacterEncoding()もURLEncoderもURLDecoderも関係ないぞ。何やってんだ。

Tomcatの場合はGETでもsetCharacterEncoding()を有効にするオプションが
用意されている。↓このページのuseBodyEncodingForURIの説明を嫁。
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/config/http.html

ただし、将来はGETでもsetCharacterEncoding()が有効になるように
実装が変わるという話もあるし、Servlet仕様も変更になる可能性がある。
0352nobodyさん05/01/14 14:08:56ID:???
Servlet仕様を厳密に解釈したこの動作のことって
どっかのスレで話題になってなかったっけ?
035335005/01/14 21:43:39ID:jVtqm1ln
>>351
>responseのsetCharacterEncoding()もURLEncoderもURLDecoderも関係ないぞ。何やってんだ。

面目ないです・・・
ですがおかげさまでナントカできそうになりました。
要するにヘッダのエンコードは自分で処理しないといけないという事なので、
setCharacterEncodingメソッドが出来る前にやっていたという
getBytesして新たにエンコードを指定してString作り直すという方法でいけそうだと分かりました。
それで試してみたところちゃんと日本語パラメータが取り出せました!

useBodyEndodingForURIについては、あまりデフォルトの振る舞いを変えたくないので使わない事にします。

ありがとうございました。
0354nobodyさん05/01/16 01:09:23ID:UULMlX6S
request.getParameterとrequest.getAttributeってどう違うんでしょうか?
どっちともフォームの要素の値を取得できて、同じように思えるんですが。
どう使い分けるんでしょう?
お願いします。
0355nobodyさん05/01/16 01:19:26ID:???
>>354
> どっちともフォームの要素の値を取得できて
できねえよ
035635405/01/16 01:30:27ID:UULMlX6S
そうなんですか!???
テキストボックスの名前をnamにした場合、
request.getParameter("nam")とか、
(String)request.getAttribute("nam")
で取得できませんか?
0357nobodyさん05/01/16 01:36:41ID:???
>>356
> (String)request.getAttribute("nam")
> で取得できませんか?
できねえよ
035835405/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")で取得していたので、
これはどういうことだろう・・・と思ったんです。



0359nobodyさん05/01/16 02:50:20ID:???
>>358
サンプル集で勉強するな。
ちゃんと調べろ。
0360nobodyさん05/01/16 02:51:42ID:???
まぁ、「どういうことだろう」と思うことはいいことだな。
あとは、まず自分で調べることだ。
いや、その前に、そのサンプルが何をやっているか確認しろ。
036135405/01/16 03:24:48ID:UULMlX6S
とりあえず、書き込み前に調べたんですが、
request.getAttributeの戻り値がオブジェクト型なので、キャスト必要
ということ
くらいしか調べきれませんでした。
サブミットボタンが押下
⇒名前/値でフォームの要素の内容がrequestオブジェクトに格納
⇒それを取り出してbbs_masterに掲示板の投稿内容を登録
するときに、
なぜ、request.getParameter("title")ではなく、
(String)request.getAttribute("title")なんだろう・・・と思ったんです。

もう少し調べてみてから出直します!!



0362nobodyさん05/01/16 05:58:22ID:???
>>361
そのサンプルって、その通りに打ち込んで間違いなく動くのか?
0363nobodyさん05/01/16 07:33:11ID:???
>>361
調べる前に、そのサンプルが何やってるか確認しろ。
で、なに調べたら、そんなことだけがわかるんだ?
単純にrequest.getAttributeでググっても、それなりに見つかりそうなもんだが。
0364nobodyさん05/01/16 07:36:47ID:???
しかし、objBbsっていうセンスのない変数名とか、sbmとかnamという属性名見ると、あんまりスジのいいサンプルじゃなさそうだな。
0365nobodyさん05/01/16 15:15:58ID:???
tomcatに入ってるサンプルが比較的まとも
0366nobodyさん05/01/17 00:10:37ID:q9aZ0Owf
includeについての質問です。
現在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:???
>>366
無理。<jsp:include>はRequestDispatcherを使ってるから。
Tomcatの制御下というより、同一アプリケーション内のリソースのみ。
0368nobodyさん05/01/17 00:45:08ID:???
>>367
そうなんですか・・・仕方ないですね。
別のアプローチを考えて見ます。

menu.htmlに更新があった場合には複数の場所にあるファイルの同期をとる方向で・・・かなり強引ですが・・・
0369nobodyさん05/01/17 00:46:06ID:???
>>367
すみません。お礼を言うの忘れてました・・・(∩゚д゚)
ご回答、ありがとうございます。
0370nobodyさん05/01/17 01:34:36ID:???
普通に「Apacheの制御領域」を「Tomcatの制御下」にもってくればいいだけかと。
0371nobodyさん05/01/17 14:02:14ID:???
現在、Apache2.0.52とJakartaTomcat4.1.31を使ってWebサーバを構築しています。
jspなどのTomcatが配信するページを圧縮転送したいのですが、どうすればいいのでしょうか?

Apache側には、gzipが組み込まれていて、Apacheが処理するページやPHPのページは圧縮転送できているのですが、
Tomcatが配信するページが圧縮されずに転送されてしまいます。

Tomcatの処理するページに対して圧縮をかける方法を教えていただきたいです。
ApacheとTomcatの連携も取れています。
0372nobodyさん05/01/17 14:33:41ID:???
server.xmlのcompression?
0373nobodyさん05/01/17 17:12:42ID:rh8cuFh5
Statement statement = con.createStatement();
ResultSet 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:???
サーバにLinuxを使った場合ってどうやっても�@とかの機種依存文字って
使用できなくなるんでしょうか?
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:???
>>375
> サーバにLinuxを使った場合ってどうやっても�@とかの機種依存文字って
そんなことはない。

しかも、MS932じゃなくて正しくはWindows-31Jだ。

環境をちゃんと書いていないのでわからないが
LinuxはPostgreSQLが7.2と推測してみる。
PostgreSQL7.2のJDBCドライバがタコなだけだろ。
Shift_JISとWindows-31Jがちゃんと区別できない。
0378nobodyさん05/01/18 01:41:39ID:???
>>377
ありがとうございます。
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:???
>>378
> サーブレットで
> new String((request.getParameter("name")).getBytes("8859_1"),"JISAutoDetect")
> で読み込むのは問題ないと思ってるのですが。

釣りか?と思うぐらいに問題あり。
JISAutoDetectではShift_JISと誤認される。
今時JISAutoDetect使うのは糞。
0380nobodyさん05/01/18 09:44:57ID:x8xIxcUM
>>372
ありがとうございます。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を使っているんですが、
連係動作下での圧縮転送はどのようにすればいいでしょうか?

何度もすみませんが、よろしくお願いいたします。

0381nobodyさん05/01/18 09:46:15ID:x8xIxcUM
すみません。>>380の元の質問は、>>371です。
038237505/01/18 12:27:26ID:???
自己解決できました
ありがとうございました
0383nobodyさん05/01/18 12:49:13ID:???
それを自己解決というか・・・
038437505/01/18 18:10:27ID:???
Windows-31Jは使わなかったし
>>379は見てなかったし、自己ですよ。
0385nobodyさん05/01/18 18:17:11ID:???
コテでもないのにそういう自己弁護になんの意味が。
どうせなら解決手段を書くべし。
0386nobodyさん05/01/18 18:33:14ID:???
これじゃただのスレ汚しだな
038737505/01/18 20:51:45ID:???
ここの人たちってタコとか糞とかそんな言葉ばっかり
0388nobodyさん05/01/18 21:07:58ID:???
JAVAプログラマは人間性に問題があるんです。
PHPに乗り換えたほうがいいですよ!
0389nobodyさん05/01/18 21:14:31ID:???
>>387
おまえみたいなただのスレ汚しよりは言葉は悪くても
技術面で他人に有益な書き込みの方がはるかにマシ
0390nobodyさん05/01/18 21:15:12ID:???
>>388の翻訳(Javaやめたほうがいいよ)
0391nobodyさん05/01/19 17:15:05ID:gpHRwNH/
本を参考にJSP・サーブレットで簡単な掲示板を作っています。
この本のサンプルの通りに打ち込んでコンパイルしようとしたんですが
以下のようなエラーがでます。

略:シンボルを見つけられません。
シンボル: 変数 KanjiConv

このKanjiConvを使っている行、全てが引っかかります。
なにか特別にパスを通す必要があるとか
importする必要があったりするんでしょうか?

今のところimportしてるのは
java.io.* javax.servlet.* javax.servlet.http.*
の三つです。

本が少し古いのでSDKが1.2の頃のサンプルなのですが、
現在使用しているのが1.5なので、仕様変更があったとかでしょうか?

よかったら教えてください。お願いします。
0392nobodyさん05/01/19 17:34:25ID:???
>>391
・コンパイル時にKanjiConv クラスがあるパッケージツリーまたはjarファイルに
 クラスパスが通ってない
・KanjiConvクラスがインポートされてない
・変数KanjiConvが宣言されていない
どれか。

エラーは略すな!大原則。
039339105/01/19 18:24:26ID:gpHRwNH/
>>392
ありがとうございます、そしてすいません。
エラーは詳しくは↓のような感じです。

BBSServlet.java:90: シンボルを見つけられません。
シンボル: 変数 KanjiConv
場所 : BBSServlet の クラス
item.deleteKey = KanjiConv.ConvJStr(request.getParameter("pass"));

これと同じものが複数行でます。
で、このKanjiConvってのは標準のクラスじゃないんでしょうか?
検索してもほとんどヒットしなかったんですが、
かといって特に本文中に記述もないっぽいので
この本の独自のクラスってこともなさそうなんですが・・・
0394nobodyさん05/01/19 18:47:00ID:???
>>393
KanjiConv は標準のAPIには含まれないのでその書籍独自のクラスか
その書籍のサンプルで扱っているライブラリに含まれているのだろう。
039539105/01/19 19:02:31ID:???
>>394
なんかこの本は初心者に厳しくて色々苦労しているのですが、
やっぱそうでしたか。。
そうであれば必ずどっかに載ってるんでしょうから探してみます。
ありがとうございました。
0396nobodyさん05/01/20 00:57:09ID:???
>>395
本の名前をさらしておけ。
0397nobodyさん05/01/20 09:09:15ID:???
KanjiConvってクラス名・・・どっかで見たぞ・・・
俺もその本持ってるかも・・・でも、おれの持ってる本で特別わかりにくいって思った参考書はないんだけどなぁ〜

キミが、最初から読まずに途中から見よう見まねでソース書いてるだけじゃないか?
0398nobodyさん05/01/20 22:29:32ID:???
Java初心者スレで聞いたんですが、こっちが適スレらしいので。

ブラウザから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:???
>>398
> javaの仕様なんでしょうか?

ControllerとModelの間で一回でもHttpServletRequestから
パラメータは取り出されてないのか?
setCharacterEncodingは初回のパラメータ取り出しの前に呼ばれなければならない。
(そうしなくても動いてしまうコンテナもあるが)
フィルタ使え。
0401nobodyさん05/01/20 22:47:40ID:???
>>398
一応言っておくが、EUC_JP なんていう文字エンコーディング名は存在しないぞ。
EUC-JP だ。
0402nobodyさん05/01/20 23:01:06ID:???
>399-401
回答ありがとうございます。
確かに、400氏の言うように、コントローラ内で1回だけgetParameterしている個所がありました。
その部分を修正すれば、確かにモデル内でsetCharacterEncodingしてもちゃんと機能しまし
た。アドバイスありがとうございます。

ていうか、「サーブレットフィルタ」という単語を初めて知ったのでググって見ましたが、
TOPに来たページで「文字エンコーディングを指定するフィルタ」の説明が・・・

そうか、こんな便利な使い方があったのか・・・ orz アドヴァイス感謝です


0403nobodyさん05/01/20 23:13:35ID:???
コードもろくに書き出すことも出来ないとは
0404nobodyさん05/01/20 23:55:52ID:???
Java質問スレにも書き込んだのですが、こちらでも
質問させて下さい。

古い話ですが、EJB1.x系では特にCMPのパフォーマンス
の低さが 問題視されていましたよね。

その原因を調べる過程で、以下の記事を見つけました。

ttp://www.atmarkit.co.jp/fjava/special/ejb20/ejb20.html

この記事の中段付近でコンテナによるダーティーフラグや
キャッシュについて述べられています。しかし、ダーティ
フラグやキャッシュが有効なら、パフォーマンスにそれほど
問題が出ないような気がします。

EJB1.x系のCMPのパフォーマンスが低い原因について、
より詳細な 説明をして頂けないでしょうか?>識者の皆様
0405nobodyさん05/01/21 00:41:28ID:???
根本的な設計が悪いんじゃねぇの?
余計なことしてるんじゃねぇの?
0406part105/01/22 03:06:57ID:???
jspを表示させてもnullしか出力されません。
文法的に間違っている所は無いと思うのですが・・・
↓
---- 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);
 }
}

0407patrt205/01/22 03:07:41ID:???
---- 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 login = null;

  public Model () {
}

  public String getUser() {
    return login;
  }

  public void setUser(String user) {
   this.login = user;
  }
}
0408part305/01/22 03:09:12ID:???
---- view2.jsp
<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:???
>>406
> jspを表示させてもnullしか出力されません。
ブラウザから直接 /view2.jsp をリクエストしてるとか?
0410nobodyさん05/01/22 03:37:43ID:???
>409
いやさすがにそれは。Controllerを直接リクエストしています。
ちなみにtomcat4.1.31です。
0411nobodyさん05/01/22 04:33:14ID:???
>>406
---- 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;
  }
}
041240605/01/22 14:46:46ID:???
多分解決しました・・・ていうか穴があったら入りたい ○| ̄|_
setAttributeとjspの"<jsp:useBean id=〜"が理解できていなかったです。
0413nobodyさん05/01/23 03:14:00ID:???
初心者Java質問すれからやってきました。

質問します。
通常、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系を想定しています。
■ このスレッドは過去ログ倉庫に格納されています