■■ Servlet/JSP(EJB含む) 質問スレ Part2 ■■
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
03/05/14 11:32ID:RETM9b3/前スレ
■■ Servlet/JSP(EJB含む) 質問スレ ■■
http://pc2.2ch.net/test/read.cgi/php/1023501812/l50
0175nobodyさん
03/06/15 01:12ID:???161は
>>中小規模なら Bean と JSP だけで十分だな。
と言っている。いらないとしているのは、
「JSPから自動変換されるサーブレットを除いたサーブレット」
0176nobodyさん
03/06/15 02:50ID:???御大層な名前がついてるだけ。
0177nobodyさん
03/06/15 02:57ID:FrtOxuV+あなたのサーブレットの定義を書いてみて。
0181176
03/06/15 16:26ID:???0182nobodyさん
03/06/15 16:57ID:L3TTNj8Pサーブレットで取得したHttpServletRequestの内容を書き換えることって
できますか?
form→サーブレット→JSPとリクエストを渡していきたいのですが
サーブレットで内容を書き換えて、JSP側のgetParameterで、取得できる情報を
変更したいのです。
formがpostする内容によって、JSP側の表示情報を変えたいわけですが、
JSPではgetParameter以外は使えない状況なんです。
どなたか知ってる方よろしくお願いします。
0183nobodyさん
03/06/16 00:12ID:XlDEkkZnあまり見かけなくて普及してるのかなぁ?って感じです。
↓取りあえず一つ見つけました。
http://www.shigotokan.ehdo.go.jp/jjw/top.html
0186nobodyさん
03/06/16 00:55ID:???俺は自鯖立ててJSP+サーブレットで掲示板作ってる。
しかも無駄にDB使って書き込み保存してる
最近はPHPが増えてきてるね。PHP使えるフリー鯖が増えてきたのも原因かも。
JSP・サーブレットが使えるフリー鯖がまるでないので一般への浸透率はまだまだだな。
業務アプリではサーバサイドはJavaばっかりなんだけど。
>>185
@ITクラブなんかは、モロにサーブレットじゃないか?
0187185
03/06/16 01:04ID:???ほんとだ。だんだん使われ始めてきてるね。
0188nobodyさん
03/06/16 03:23ID:???session じゃだめ?それが一番簡単だけど。
あとは setAttribute で RequestDispatcher かね。
http://java.sun.com/j2ee/sdk_1.3/ja/techdocs/api/javax/servlet/ServletRequest.html
0189nobodyさん
03/06/16 08:12ID:e2+2jq6kやっぱり、それしかないですかねぇ。
うーん・・・
0190JSP勉強中
03/06/16 09:57ID:zvI8NSxj使い分けたらよいですか?
service()だけでよいような気がするんですけど。
0191JSP勉強中
03/06/16 10:58ID:zvI8NSxjJSPにはDBとのやりとりは書かないものなんですか?
0192nobodyさん
03/06/16 12:49ID:YEAaEmmk書かない。
0193nobodyさん
03/06/16 13:32ID:???IT Pro
http://itpro.nikkeibp.co.jp/
インターネットタウンページ
http://itp.ne.jp/
OpenOffice.org
http://www.openoffice.org/
三井住友銀行(ネットバンキング部分)
http://www.smbc.co.jp/
みずほ銀行のネットバンキング
http://www.em-town-bank.com/
パッと気が付いた、有名どころだけ、
URL見てると、結構使ってるところある。
0194JSP勉強中
03/06/16 14:12ID:zvI8NSxjServletには書きますか?
それともbeanだけですか?
0195nobodyさん
03/06/16 15:59ID:olrkyszabeanは入物。
servlet又は別のクラスでやったほうがいい
0196JSP勉強中
03/06/16 16:38ID:zvI8NSxjたとえば検索ページを作るとして
検索の条件をテーブルから拾って表示している場合
beanにそのリストを入れておくとしたら
そのリストを入れる行為はサーブレットでやるって
ことでしょうか?
うーん。オブジェクト指向って難しいなー
0197JSP勉強中
03/06/16 16:43ID:zvI8NSxjtomcatを再起動しないと反映されませんね。
何かスパッと反映される方法はないでしょうか?
0198JSP勉強中
03/06/16 17:01ID:zvI8NSxjそれをJSPで表示するって感じですか?
0199nobodyさん
03/06/16 17:12ID:YEAaEmmkServletではBeanに情報をセットする。
JSPではBeanから情報を取得する。
何も悩むことなどない。
0200nobodyさん
03/06/16 17:14ID:YEAaEmmkServletコンテナとしてTomcatを使っているのなら、conf/server.xmlの
Context要素のreloadable属性にtrueを設定すればよいのでは?
<Context path="/testApp" docBase="testApp" debug="0" reloadable="true"/>
こんな感じ。
0201JSP勉強中
03/06/16 17:26ID:zvI8NSxjありがとうございます。
beanはだいたいスコープはセッションでいいでしょうか?
0202JSP勉強中
03/06/16 17:27ID:zvI8NSxjども!
やってみます。
0203JSP勉強中
03/06/16 18:10ID:???慣れてきたらよくなるんでしょうか?
0204nobodyさん
03/06/16 19:40ID:???だがJSPのみだとMVC厨に鼻で笑われる危険を伴うw
0205JSP勉強中
03/06/16 20:48ID:???0206JSP勉強中
03/06/16 20:56ID:???0207nobodyさん
03/06/16 22:51ID:???0209nobodyさん
03/06/17 01:16ID:???最初は無理せず、JSPだけでもいいよ。
BeanだのEJBだのは、一通りできてからでオッケー。
MVCはModel、View、Controlerと分けて作りなさいということだが、
人によって何がViewで何がControlerかというのは違うらしいので、
ふーん、と思っとけばよし。
まずは、掲示板でも何でも完成させてみ。
0210JSP勉強中
03/06/17 07:20ID:???ども!
ASPやCGIは結構やってきたのでJSPだけならASPのJava版と思えば
ぜんぜん問題ないです。掲示板じゃないけど似たようなものは作ってみました。
ただ、仕事でやるとなるとJavaらしい設計とコーディングを
しないとやっぱりだめですよね。
MVCってやっぱり人によって違うみたいですね。
サンプルを見ると上にあったbeanは入れ物というのとは
ちょっと違うようなデータベースを更新したりするものもありました。
今日はいろいろなMVCのパターンを見ていきたいと思います。
0211JSP勉強中
03/06/17 13:14ID:???すみません。やってみたのですがサーブレットを変更してコンパイルしても
反映されません。
他に何か設定するところがあるでしょうか?
0212JSP勉強中
03/06/17 13:50ID:???0213JSP勉強中
03/06/17 14:13ID:???0214nobodyさん
03/06/17 17:29ID:hLuo4PP6Tomcatがクラスファイルの更新を検出すると、コンソールか
logs/catalina.outあたりに
WebappClassLoader: Resource '/WEB-INF/classes/Hoge.class' was modified;
Date is now: Tue Jun 17 17:28:22 JST 2003 Was: Fri Jun 06 15:56:38 JST 2003
みたいなログが出力されるんだけど、これすら出ませんか?
0215JSP勉強中
03/06/17 17:44ID:???原因はいろいろありそうなんですが
まず、そのテストマシンにはTomcatのほかにJ2EEとWebLogic評価版を
入れてしまって環境がぼろぼろなのかもしれません。
あと、サーブレットを/WEB-INF/classes/Serv/testserv.class
のようにclassesにさらにサブディレクトリを作っています。
これって問題ありでしょうか?
0216nobodyさん
03/06/17 19:57ID:hLuo4PP6classesの下にサブディレクトリってのは、普通そうするだろうし問題なし。
で、>>214に書いたようなログは出てますか?
0218nobodyさん
03/06/17 23:22ID:???0219JSP勉強中
03/06/18 10:01ID:???0220nobodyさん
03/06/18 14:33ID:???10日でおぼえるJSP/サーブレット入門教室をほぼ終えた者です。
少し面倒くさい事をしているので、もし方法を御存知でしたら教えてください。
まず、前述の通り、Apache+Tomcatは、mod_webappで連携が正常にでき、
JSPもサーブレットも正常に動きました。
その後、バーチャルホストを試してみようと思い立ち、Apacheの方に
mod_vhost_alias入れて試験し始めましたら、Tomcatに繋がらなくなって
しまいました。
どうも、Tomcatがバーチャルホストに対応出来てないようなのです。
仕方なく、JSPをテストするときは、httpd.confのmod_vhost_alias関係の
記述にコメントアウトを入れて、Apacheを再起動しています。
自鯖は非公開ですから、別にApacheを再起動しても誰が困る訳では
ないのですが、やはりhttpd.confのコメントアウトをして再起動というの
はちょっと面倒ですし、正しい対応とも思えません。
mod_vhost_aliasで作ったバーチャルホストに、Tomcatを対応させる
方法ってないでしょうか?
いろいろぐぐってみたところ、ApacheMLに過去、同様の質問があり
ましたが、回答はありませんでした。
0221nobodyさん
03/06/18 14:36ID:???ちなみに、
Java 1.4.1
Apache 2.0.44
Tomcat 4.1.18
です。インストール後、あまり環境などは弄っていません。
0222ごまお ◆cNUxPJ5ztQ
03/06/24 12:01ID:???根本的な解決じゃないんだけど、mod_webappはすでにほとんど
「非推奨」扱いのコネクタらしいので、JK2など開発が進行中のものを
利用したほうが資料も解決策も多いかもよ。
このへんのコネクタについて詳しくは今月のJava Developerていう雑誌に
特集記事があるです。
0223nobodyさん
03/06/24 13:33ID:???WARPってベースとなるURLに対してwebappをマップするような感じだよね?
これだと画像ファイルやらなにやらまでTomcatに丸投げするから
効率悪いように思うんだが。
0224JSP勉強中
03/06/24 16:23ID:???.jspファイルを作り、そのなかでEnumerationのインスタンス化で
エラーになります。
java.util.*はインポートしてるんですけどなぜでしょう?
0225nobodyさん
03/06/24 16:36ID:???JSP以前にJava勉強すれ
0226220
03/06/24 17:16ID:l2ibIr6tおおう。一週間も放置されてたんで、もうダメかと思いました。
コネクタについては、調べてみますね。
0227本7 ◆uPD9aFm9hI
03/06/24 17:22ID:NRot/Ugh0230nobodyさん
03/06/25 23:02ID:???サーブレットを使ったアプリケーション(httpサーブレット以外も含む)
に関する設計に関してなのですが、
一つのアプリケーションでGenericServletを継承したクラスが複数存在するのが
正しい設計なのでしょうか?
たとえばStrutsフレームワークを見ると
requesut、responseを処理するクラスは一つに設計されてるようなのですが、
単純なサーブレットのサンプルを見ると一画面に一サーブレットクラス
のような気がします。
私の勉強不足でしょうが、GenericServletを継承したクラスが一つのアプリケーションに
複数存在するのは感覚的に落ち着きません。
httpを処理するサーブレットでない場合もGenericServletを継承したクラスは
一つであったほうがいいと思うのですが、一般的にはどうなのでしょうか?
参考文献などもありましたらアドバイスと供によろしくお願いします。
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でした。
うーん。やり方が悪いんですかねぇ...
■ このスレッドは過去ログ倉庫に格納されています