■■ Servlet/JSP(EJB含む) 質問スレ Part2 ■■
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/05/14 11:32ID:RETM9b3/前スレ
■■ Servlet/JSP(EJB含む) 質問スレ ■■
http://pc2.2ch.net/test/read.cgi/php/1023501812/l50
0232nobodyさん
03/06/26 16:44ID:???Strutsの場合は、そいつがディスパッチャで各画面はそのディスパッチャから呼ばれる
Actionクラスだから自然とそういうスタイルになるだけでは。
0233nobodyさん
03/06/27 00:33ID:???GenericServlet
↓
・・・
↓
なんらかの(俺様流)フレームワークServlet
↓
・・・
業務処理(1画面毎の)Servlet ×n
として、フレームワークServletは、アプリケーションに一つの方が良いと思う。
0234220
03/06/27 11:24ID:sYWueejYjk2でGoogleしまして、mod_jk2をコンパイルして組み込んでみたら、
examples/が表示できました。
でも、Tomcatの起動してないですよ?psにも出てないし?
と思ったら、jk2ってTomcatの事前起動無しに、JSPやサーブレット呼び出せる
のか!
いや、こりゃ便利ですね。
なんか、バーチャルホストも出来そうですし、もう少しGoogleで調べてみます。
0235null
03/06/28 14:54ID:x9iwUQrEjava.lang.NullPointerException
at java.lang.ClassLoader.resolveClass0(Native Method)
at java.lang.ClassLoader.resolveClass(ClassLoader.java:588)
at org.apache.tomcat.loader.AdaptiveClassLoader.loadClass(AdaptiveClassLoader.java:430)
at org.apache.tomcat.loader.AdaptiveServletLoader.loadClass(AdaptiveServletLoader.java:174)
at org.apache.tomcat.core.ServletWrapper.loadServlet(ServletWrapper.java:265)
at org.apache.tomcat.core.ServletWrapper.init(ServletWrapper.java:289)
at org.apache.tomcat.core.Handler.service(Handler.java:254)
at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:812)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:758)
at org.apache.tomcat.service.connector.Ajp12ConnectionHandler.processConnection(Ajp12ConnectionHandler.java:166)
at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:501)
at java.lang.Thread.run(Thread.java:484)
が表示されます。
eclipse上では、うまくいくのですが、いろいろ試したのですが、知識不足でわかりません。
どうすればいいか教えてください。
0236nobodyさん
03/06/28 15:28ID:WE3G3OqEどうも上手くいかないんですよね。
0237nobodyさん
03/06/28 15:33ID:WE3G3OqEリクエストを
request.setCharacterEncoding("JISAutoDetect");
でエンコーディングしているのですが
�@�Aなどの記号が化けてしまいます。
0239nobodyさん
03/06/28 15:41ID:WE3G3OqE<%@ page contentType="text/html; charset=Windows-31J" %>
とすれば
�@
は上手くいくけど
〜
は上手くいかなくなります。
0240nobodyさん
03/06/28 15:49ID:WE3G3OqE報告しておきますね。
まず、元ねたを書くと
http://www.moriwaki.net:8080/webapp/henkan2.jsp
このページを参考にしました。
で、簡潔にまとめると
windowsでは
これは使ってはいけなくて
request.setCharacterEncoding("JISAutoDetect");
以下のようにデコードする
text3 = new String(text.getBytes("ISO8859_1"), "MS932");
そして、
<%@ page contentType="text/html; charset=Windows-31J" %>
を使う
何かコメントあればよろしく
0241nobodyさん
03/06/28 15:50ID:???あのさあ、環境も書かない、どの段階でどこから入力した文字が化けるのかも書かないで何をわかれっていうの?
せめて
・Servletコンテナ
・JDK
・OS
・JSPの保存形式
・JDBCドライバ
・JDBC接続URLの文字コードオプション
これらの情報を書いて、
どこから入力した文字がどの段階で化けるのかを書け!
1.Servletがブラウザからリクエストを受け取った段階
2.データベースへ格納した段階(他のツールを使ってテーブル内を見たら化けた、とか)
3.データベースから取り出した段階
4.JSPで表示した段階
普通に考えても文字化けする段階はこのぐらいのパターンはあるだろ?
0243nobodyさん
03/06/28 16:05ID:WE3G3OqEMYSQLって書いたけど、あれは無視して。
なんとなく書いてしまっただけで、そっちは全部解決してるから。
まあ、どんな環境でも文字化けは発生するわけで
ついでに環境を限定した情報よりは、いろいろな環境における
情報が欲しかったので。
やってたのは、リクエストを正しくユニコードへ直すところ。
解決したのは
JDK1.4
TOMCAT4124
の時
0244nobodyさん
03/06/28 16:06ID:???んで、
> windowsでは
> これは使ってはいけなくて
> request.setCharacterEncoding("JISAutoDetect");
なんてどこに書いてあるの?
Tomcat4以上なら
それで充分OKなのだが。
0245nobodyさん
03/06/28 16:06ID:???いきがってるバカが住み着いてるのは困ったもんだ
0246nobodyさん
03/06/28 16:09ID:WE3G3OqEそれでやると化ける。
request.setCharacterEncoding("MS932");
にしても同じ事ね。
0247あぼーん
NGNG0248nobodyさん
03/06/28 16:10ID:WE3G3OqE0249244
03/06/28 16:13ID:???http://www.ingrid.org/java/i18n/encoding/shift_jis.html
http://www.ingrid.org/java/jserv/i18n/corruptedchar.html
0250244
03/06/28 16:18ID:???request,setCharacterEncoding(エンコード名)
の中でやっていることはまさに
new String(string.getBytes("8859_1"), エンコード名)
だったりするのだが?
0251nobodyさん
03/06/28 16:21ID:WE3G3OqEそこは既に読んでますが、
あまり役に立ちませんね。
ちゃんと読んだものだけ教えてくださいねw
0252nobodyさん
03/06/28 16:23ID:WE3G3OqE>だったりするのだが?
最初はそう思ってたんですが、違うという事がわかりました。
まあ、嘘だと思ったら自分でやってみてください。
あるいは信じなくてもいいですし。
0253nobodyさん
03/06/28 16:33ID:WE3G3OqE0254あぼーん
NGNG0255244
03/06/28 16:45ID:???> これは使ってはいけなくて
> request.setCharacterEncoding("JISAutoDetect");
なんてどこに書いてあるの?
これわかんないんだけど・・・
0256244
03/06/28 16:56ID:???スマソ。俺には理解できん。
org.apache.catalina.util.RequestUtilのparseParametersメソッドで
やっていることは
new String(string.getBytes("8859_1"), エンコード名)
にしか見えんのだが?
解説きぼん
0257あぼーん
NGNG0258nobodyさん
03/06/28 17:03ID:???HttpServletはインターフェイスだから、
メソッドの実装はtomcat等のサーブレットコンテナが行なってるんでしょ
鯖によって処理方法の違いはあるんじゃないの?
0259258
03/06/28 17:03ID:???×HttpServlet
○ServletRequest
0261nobodyさん
03/07/01 21:20ID:???で取得できるセッションIDは実質英数字だと思うのですが、
APIにはコンテナの実装依存とあり
コンテナの情報なども見たのですが明確に書かれているものが
見つかりませんでした。
実際、セッションIDは英数字と考えてよいのでしょうか?
そのような記述がどこかにありましたらWEBでも本でも
よいので教えてください。コンテナは何でもかまいません。
0263nobodyさん
03/07/01 21:53ID:???そういうわけではありません。
はっきりとどこにも書いてなかったので
想像していました。
確かにあらゆる可能性を考えなければならないと思います。
実際、そのように仕様として決められていないのでしょうか?
0264262
03/07/01 22:57ID:???それらに使える文字ってことになるんでは。
0266nobodyさん
03/07/02 15:25ID:ma8TNOqR仕様が決まってなければ実装を見ればいいだろ。
中途半端な知識のまま放置しておく癖をつけるのは(・A・)イクナイ!
で、TomcatのソースによるとsessionIdの生成には
Long.toString (n, Character.MAX_RADIX)
を使用しているので、必然的に使われる文字は
0123456789abcdefghijklmnopqrstuvwxyz
('\u0030' 〜 '\u0039' , '\u0061' 〜 '\u007a')
に限定される。他のコンテナも似たような設計じゃないかと思われ。
自分で確認したい香具師は org.apache.tomcat.util.SessionIdGenerator を参照しろってことだ。
0267nobodyさん
03/07/02 15:34ID:???0268追加
03/07/02 15:52ID:???ライセンス貼るのも馬鹿らしいのでソース転載はしないけど、ダイジェスト値を取得した
byte列の各文字に対して & 0x000f かけて 0123456789ABCDEF に対応させてた。
3.x系とはちょっと方法も生成文字列も違うぽいな。まあ、英数字ではあるけど。
0269261=263
03/07/02 21:02ID:???ありがとうございます。
そうですね。ソースを見ればよかったです。
0270nobodyさん
03/07/02 22:12ID:???http://web1.aaacafe.ne.jp/~tetsuyak/cgi-bin/WebObjects/VanquishBBS/index.html
↑を凌駕するモノをつくってください。どうか、おながいします!!
0271nobodyさん
03/07/03 18:25ID:I2i4RQEcそこで、アクセスされたURLを解析したいと思っています。
JSPファイルに飛ばすところまでは、httpd.confの設定で出来たのですが、
JSPファイルでアクセスされたURLを取得することができません。
req.getHeader("USER-AGENT");
req.getHeader("REFERER");
req.getRemoteAddr();
req.getPathInfo();
など、どれをやってもnullになってしまい、取得できません。
どのようにしたら取得できるでしょうか?
0272nobodyさん
03/07/03 22:12ID:wYy/fb79どんなのがありますか?
getParameterMapが値をStringの配列で返すみたいで、
Stringに戻すやり方がわからんのです。
配列をぐるぐる回して組み立てるくらいしか思いつかないのですが、
化けちゃって・・・
基礎すぎるのか、Web調べてもわかりませんでした。
0273nobodyさん
03/07/04 09:27ID:???ServletRequest#getAttribute()で、
"javax.servlet.error.request_uri" かな。
>>272
Jakartaになってしまうが、
http://jakarta.apache.org/commons/lang.html
StringUtils#join()
で出来るんじゃないかな。
質問の意味が、ちと分かってないかもしれんが。
0274271
03/07/04 10:24ID:???ありがとうございます。
<%= request.getAttribute("javax.servlet.error.request_uri") %>
で表示させてみましたが、nullでした。
apache+tomcatではセットされないのでしょうか?
ちなみに、javax.servlet.error.status_codeもnullでした。
うーん。やり方が悪いんですかねぇ...
0276nobodyさん
03/07/04 14:16ID:nf207VCo0277nobodyさん
03/07/04 17:46ID:???0278272
03/07/04 23:12ID:???ちと余裕がないので、自前でrequestの内容を
Hashtableに格納することで逃げてしまいました。
教えていただいた機能は余裕ができたら見させていただきます。
ありがとうございました。
返事が遅くなってすいません。
0279nobodyさん
03/07/06 01:25ID:???File file=new File(略
のようにイコールの前後に半角スペースが入っておりませんが、
JAVAから入った私には違和感を感じます(特に入力するときのリズムが・・)。
セオリーとして空白を入れてはいけない、というようなことがあるのでしょうか?
0280nobodyさん
03/07/06 01:57ID:???サンプルの作者に聞けば?
勝手な想像だがHTMLに合わせているのかも、とか
<img src="…"/>←こういう場合=の前後にスペース入れないからそれに合わせてとか。
知らんけど
0281nobodyさん
03/07/06 02:01ID:???たまたまあなたが見たサンプルがそうだっただけなのでは?
どれを見ても必ず、じゃないでしょ?
> セオリーとして空白を入れてはいけない、というようなことがあるのでしょうか?
そんなことはない
0282nobodyさん
03/07/07 03:27ID:???0283nobodyさん
03/07/07 06:26ID:???0285nobodyさん
03/07/10 00:38ID:yTg7a9KK<%@ page contentType="text/html; charset=euc-jp" %>
を書かなかったかのようなタイプの文字化けです。
もとのファイルにこれが書いてあるので、include先のファイルに
これを書くと、2重に書いてるとのエラーが起こりますが、
どうしたらいいのでしょうか。
環境は
redhat
apache
jdk1.3
です。
0286あぼーん
NGNG0287nobodyさん
03/07/10 01:51ID:???includeの方法を書け。ディレクティブでincludeしてるのか、
アクションでincludeしているのか、Strutsのカスタムタグ等でしているのか。
で、すべてのファイルの保存文字コードを確認すれ。
0288nobodyさん
03/07/10 02:01ID:???<%@ include file="test.jsp" %>
と書いています。アクションっていうんでしたっけ。
ファイルの文字コードは全てEUCになってます。
0289nobodyさん
03/07/10 02:09ID:???そいつはディレクティブ。
include元のファイル一カ所のみに <%@ page contentType="text/html; charset=euc-jp" %>が必要。
test.jspには <%@ page contentType="text/html; charset=euc-jp" %>は不要。
化けている文字はJSPに直接書いているのか?
リクエストパラメータから取り出したり、DBから取り出した文字が
化けているのではなく?
0290nobodyさん
03/07/10 02:21ID:???test.jspで定義したクラスのフィールドに
String s = "日本語";
と書いて、out.printで表示させました。
0291nobodyさん
03/07/10 02:21ID:???> test.jspには <%@ page contentType="text/html; charset=euc-jp" %>は不要。
じゃあ、ここは問題ないみたいです。
0292nobodyさん
03/07/11 13:12ID:???最初に練習でつくるアプリケーション(これくらい作れれば初心者脱出だね、という程度の)
としてどんなものを目指せばいいんでしょうか?
普通の言語(JAVAとかC++とか)だと例えば電卓作れ、とかブロック崩しつくれ、とか
あるんですが。
サーブレットは手段であって目的ではないというのはここ数日の勉強でよくわかった
つもりなんですがそれでもなんか指針をお願いします。
0293nobodyさん
03/07/11 13:30ID:???漏れは業務系なんでそっち方面しか思いつかないんだが、
まずはユーザ登録、認証、登録内容変更あたりかな。
で、次がデータの検索、表示、編集、削除とか。
こんな感じでセッションやロールの使い方、画面遷移のパターンなんかを習得する。
もうちょい簡単なところでいくと……ベタだが掲示板とか。
0294nobodyさん
03/07/11 16:07ID:nfu8obQlメンバー認証ありの掲示板でいいんじゃない?
メンバーのデータベースをPostgreSQLかMySQLで作っとけ。
もしくはCDショップ。買物かごをつくって、sessionの勉強しなさい。
いや、マジでベタです。
0295nobodyさん
03/07/11 16:28ID:oyWk8qivどう実装するのが良いのでしょうか?
サーバ側にコンテナの起動中は消えないオブジェクトを作るとか
出来るのでしょうか?
データベースとか利用した方が簡単なのかな…。
お知恵拝借。
0297nobodyさん
03/07/11 19:51ID:vRLerH2Ghttp://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/http/HttpSessionListener.html
は知ってるよね?
0298nobodyさん
03/07/13 23:38ID:???俺も最初は掲示板だったな。
んで、認証して書き込み削除/編集。
やっぱり練習としてはセッションとデータベースを使わないとね。
>>292
がんばってねん。
余力があればツリー式掲示板で登録されたユーザしかトピック(ツリーのルート)
を作れないとかも楽しいかもね。
ばいちゃ!
0299初心者でスマソ
03/07/14 00:41ID:2NcxKTnhApache 2.0.45 と Tomcat 4.1.24 と mysql 4.0.13
をWindowsXP上にインストールしました。
mysql-connector-java-3.0.8-stable と mod_jk2 で連携させました。
hoge.htmlからフォームで日本語文字列を入力してhage.jspに送り、データをinsertしました。
正常にデータが追加されたのを表示した後に、hoge.htmlに<A HREF=...>で戻って
再度入力をしようとしたのですがhoge.htmlが文字化けを起こして読めなくなってしまいます。
hoge.htmlはmetaタグでcontent文字コード指定済み、
hage.jspはpageディレクティヴで同じく指定しました。
InternetExplorerのエンコードを日本語(自動選択)に設定しておいたのですが、
一周してくると西ヨーロッパ言語に切り替わってしまいます。
どこかの設定が悪いのでしょうが、どうやって原因を特定すればいいのか悩んでいます。
漏れはいったい何にはまっているのでしょうか?
0302初心者でスマソ
03/07/14 13:21ID:???レスありがとう。Apacheを調べています。
AddDefaultCharsetをshift_jisに設定したり、offにしたりしましたがダメでした。
DefaultLanguage ja を付け加えて
AddLanguage ja .ja を他言語より前の行に持ってきて
LanguagePriority でjaを先頭に持ってきてみたり
まだダメです。typoでもしたのかなあ?
スレ違いのようなので泣きながら逝ってきます。
0303初心者でスマソ
03/07/14 14:04ID:???メモ帳で名前をつけて保存する際に文字コードがANSIになってたようです。
UTF-8で保存したら無事表示できました。漏れが悪かった…。
スレ汚し失礼しました。改めて逝ってまいります( ´・ω・`)
0304山崎 渉
03/07/15 11:06ID:???__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0305295
03/07/15 14:25ID:???ありがとうございます。
ブラウザを落としたりした際に、ServletContext に格納した
情報を削除するにはどうするのでしょうか?
0307nobodyさん
03/07/15 17:07ID:mN7Rw2O3http://localhost/examples/でサンプルのディレクトリ一覧を表示するとこまでは行けたのですが、
jsp、servletsのディレクトリの内のhtmlが404エラーが出て読み込みません。
サンプルプログラムに直接アクセスしたりtomcat単体で動かすとちゃんと実行できますし、
apacheと連携させないでtomcat単体で動かすとhtmlも表示できます。
どうやったらapacheとの連携でhtmlファイルを読み込むことができますか?
0309nobodyさん
03/07/17 00:27ID:Y3bgPGhTテストでHttpUnit1.5.3を使用してみようとサンプル通りに
やってみたところ、httpsでの動作がうまくできませんでした。
(IOExceotionが出てWebResponseが取れない。)
HttpUnitのFAQ[http://httpunit.sourceforge.net/doc/sslfaq.html]を
見たところJSSEを使っていろいろとやるとうまくいくようなのですが、
その辺疎いものでよくわかりませんでした。
httpsにはhttpUnitによるテストは一般的ではないのでしょうか?
それとも単に設定をすればサクサク使えるものなのでしょうか?
0310nobodyさん
03/07/17 11:25ID:???mod_webappじゃなくてmod_jkで繋いでるんだよな、きっと。
jspしかマッピングしてないとしたら、ちゃんとexamplesのあるディレクトリを見るように
Apacheの方も設定しないといかんよ。
例えばAliasで
Alias /examples/ "Tomcatディレクトリ/webapps/examples/"
みたいな感じに。
0311nobodyさん
03/07/17 21:20ID:???Htmlファイルをダウンロードさせる方法ないでしょうか?
htmlから普通にリンクを張ると当然ですがブラウザが読み込んでしまいます。
ブラウザが読み込んでしまう.TXTや.htmlをユーザー側で「対象をファイル
に保存」としなくても普通にクリックして、圧縮ファイルや.exeファイル
のようにダウンロードさせたいのですが、うまくいきません。
よい方法があったら教えてください
0313nobodyさん
03/07/18 09:28ID:???拡張子が、htm、htmlの時点でアウトな気が。
0314nobodyさん
03/07/18 12:27ID:???Windows2000 SP4
Apache1.3.27
.htaccessにてAddType text/download htmlを設定
IE5.5 :ダウンロードするものの、関連付け起動でIEが開くw
NN4.7 :ダウンロードできた
Mozilla1.45:ダウンロードできた
Opera7.11 :ダウンロードできた
0316nobodyさん
03/07/18 15:25ID:???IEだとダウンロードした後に開くの?
ローカルファイルとして開くなら、セキュリティの壁を越えられそうな予感。
0317nobodyさん
03/07/18 15:44ID:???<script language="VBScript">
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "notepad.exe"
</script>
で試してみたら「ActiveXコンポーネントオブジェクトを作成できません」と言われ、
<script type="text/javascript">
var shell = new ActiveXObject("WScript.Shell");
shell.Run("notepad.exe");
</script>
で試してみたら「オートメーションサーバーはオブジェクトを作成できません」と言われた。
.jsにして読み込むような形にしても同じ。
どうやらTemporary Internet Files以下にあるとダメらしい。
外にコピーすると正常に動く。
0318nobodyさん
03/07/18 17:11ID:kChAvAKQ現在TOMCATを使って勉強を初めてるんですが解らない所があります
HTMLの画面で日付を選んでボタンを押すとサーブレットがHTMLファイル
(日記です)を表示させると言うのを作りたいんですが、表示されるHTMLに
画像(jpg)が表示されません。
jpgは何処に置けば良いんでしょうか?現在はドキュメントルートの直下に表示させる
HTMLファイルと一緒に置いてあります。
基本的な質問で申し訳無いのですがよろしくお願いします。
0321nobodyさん
03/07/19 17:44ID:???エディタ使うにしても色分けとかどうするものですか?
0322nobodyさん
03/07/19 18:24ID:???0323nobodyさん
03/07/19 21:29ID:o3qmFC140325nobodyさん
03/07/20 13:06ID:???それ、Servletを介さずに直接HTML見に行っても画像は表示されないと思う。
<img src="〜">のパスを見直してみたらどうかな。
0327nobodyさん
03/07/20 15:46ID:KthA/9UDhttp://tv3.2ch.net/test/read.cgi/geinin/1058512767/12
0328あぼーん
NGNG0329あぼーん
NGNG0330あぼーん
NGNG0331nobodyさん
03/07/25 22:02ID:ysYjFk43Eclipse から Tomcat が
Catalina.start: LifecycleException:キー UserDatabase でユーザデータベースコンポーネントが見つかりません
のエラーメッセージが出て動きません。
root で ログインすると正常です。
設定を弄ればいいと思うのですが、具体的にどうすればいいのか教えてください。
■ このスレッドは過去ログ倉庫に格納されています