トップページ⇒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
026726304/10/10 02:33:37ID:J6iJ8zNu
264のようなことをするとGoogleなどのキャッシュにダミーのTopページ
の情報が掲載されてしまい、空白がキャッシュに載ってしまうのでしょうか?
0268nobodyさん04/10/10 02:42:52ID:???
redirectじゃなくてforwardだから、クライアントから見たら
最終的な「Topページで情報表示」がリクエストしたURLの結果に見える。
# といってもGoogleはちゃんとリダイレクト先を保存するはずだけど。

>>263は単にDBアクセスするJavaコード(Beanなのがスマート)をつくって
そのTopページのJSPから利用すればいいだけだけど、
クライアントにServletのURLへリクエストさせて
ServletでDBから情報取得 → JSPで情報表示
とする方がオーソドックスではある。
026926304/10/10 02:52:23ID:8yGQze3U
>>268さんレスありがとうございました

>redirectじゃなくてforwardだから、クライアントから見たら
最終的な「Topページで情報表示」がリクエストしたURLの結果に見える。

安心しました。ダミーTopページ → Topページ間でスレッドでバッチ処理を行う
構成にしたいので助かりました。

>クライアントにServletのURLへリクエストさせてServletでDBから情報取得
→ JSPで情報表示とする方がオーソドックスではある。

これはユーザーにServletのURLを入力させるということですよね?
URLはスッキリとさせたいので上のいままでのやり方で行きたいと思います。

ありがとうございました。
0270nobodyさん04/10/10 02:53:07ID:???
://hoge.com/hage/index.jsp、もしくは://hoge.com/hage/ か何かから行かせたいんだろう。
0271nobodyさん04/10/14 00:14:07ID:???
赤帽にtomcat5とapache2を入れて、mod_jk2で連携させてますが
tomcatで表示すると普通に表示されますが
apacheで表示すると30秒ぐらいまたされます。
表示するファイルは普通のhtmlです。

こういった現象が起こっている方はいますか?
また解決策があれば教えてください
0272nobodyさん04/10/14 00:21:36ID:???
>>270
一応公の場なんだから、example.comとかexample.jpつかおうな。
あとweb.xmlの<welcome-file-list/>を調べておくように。
0273nobodyさん04/10/14 00:23:16ID:???
>>272
俺に言うなよ。
027427104/10/14 02:02:29ID:???
ちなみにostNameLookupsはoffになってます
0275nobodyさん04/10/20 12:51:43ID:???
同一フォームでsubmitで遷移したのか、selectで遷移したのかを
サーブレット側で知ることは可能でしょうか?
以下のようなソースなんですが。

<form name="myform" method=post action="Aaa_serv">
<input type="submit" value="GO">
<select name="aaa" onChange="submit()"><option value="001">001</option></select>
<input type="text" name="bbb" size="10">
</form>
0276nobodyさん04/10/20 13:50:25ID:???
>>275
そのソースじゃ無理。
0277nobodyさん04/10/20 13:51:52ID:Sm6KJnPr
はじめまして

JSP&Servletを使用して携帯用コンテンツを作成して要るのですが、
vodafoneでアクセスした際、最初はサイトが表示されるのですが
何回か同じアドレスにアクセスすると
「HTTPエラー500が発生しました。このページはボーダフォン携帯電話では表示できません。」
と、表示されてしまいます。

docomoとauはきちんと表示されるのですが・・・

サーバは、Apache + Tomcat連携です。

どなたかご教授お願い致します。
0278nobodyさん04/10/20 17:55:43ID:???
>>277
ログは読んだ?
0279nobodyさん04/10/20 19:38:19ID:???
>>276
submit()次第じゃねぇの?
0280nobodyさん04/10/20 19:56:00ID:???
>>279
馬鹿
0281nobodyさん04/10/20 22:49:58ID:???
>>280
submit()のなかで値いじくってればできるだろ。
0282nobodyさん04/10/20 23:20:37ID:IgyUFmLu
ヘルプ!
Tomcat5.0.28 / J2DK1.4.2を使用しております。

ttp://www.onjava.com/pub/a/onjava/2004/02/11/jspcookbook.html
を見まして、なるほどwelcome-fileにServletが指定できるのかと喜び勇んでweb.xmlを設定してみました。
しかし、/(context)/にアクセスしても、
welcome-fileに指定したServletは応答せず、デフォルトサーブレットがディレクトリ内のファイルリストを返してきます…

/(context)/WEB-INF/web.xml は上記サイトの1.にあるものと寸分たがわぬようにしてあります。
com.jspservletcookbook.MyServlet クラスは、単純にHttpServletResponse に簡単なHTMLを吐き出すだけのものになっています。
/(context)/myservlet にアクセスすると、正常に期待通りレスポンスがもらえます。

この現象に心当たりの方はおられませんでしょうか?
または、Tomcat5.0.28で問題なくwelcome-fileにServlet指定してるよと言う方はおられますでしょうか。

よろしくお願いします。
0283nobodyさん04/10/21 22:00:19ID:???
/myservlet をwelcome-fileにすりゃいいんじゃないの?
028428204/10/22 10:39:58ID:???
>>283
それが、
<welcome-file>/myservlet</welcome-file>
としてもやっぱりだめなんです。
何か特別なServletの書き方があるんでしょうか…
0285nobodyさん04/10/22 19:17:43ID:???
vaka
0286nobodyさん04/10/22 23:54:13ID:???
ttp://www.wsdeveloper.com/ ってどこが運営してるの?
ここに質問するのと、2chに質問するのではどっちがいい?
0287nobodyさん04/10/23 00:12:54ID:???
質問しか能がないのか、野糞
0288nobodyさん04/10/23 00:22:12ID:???
2chでは非常に手軽に質問できるけど、手軽に無責任に回答できるということでもあるので、諸刃の剣。
0289nobodyさん04/10/23 00:26:37ID:???
>>286
だれも投稿してないし、デザインもよくなくて人が増えそうでもないから、2chの方がマシ。
029028204/10/23 01:12:26ID:???
>>285
ヴァカでごめんなさいm( )m
<welcome-file>myservlet</welcome-file>
で期待通りの動きをしました。
「url-patternにワイルドカードなし指定したパターンを、ディレクトリ指定抜きでwelcome-fileに指定する」ってことですね。

でもこれだと /(context)/任意のdir/ でのアクセスは出来ないんですね。
とりあえずは<error-page>との組み合わせで今回は対処できそうです。
厳しいお声ありがとうございました。
0291nobodyさん04/10/23 03:30:58ID:???
>>290
> /(context)/任意のdir/ でのアクセス

自力で振り分けろってことじゃね?
0292nobodyさん04/10/25 02:33:01ID:???
>>281
submit()の()の中に入れた値ってサーブレットでどうやって読むんでしょうか。
ずっとやってて結局できませんでした。
0293nobodyさん04/10/25 02:53:46ID:???
SerlvetじゃなくてJavaScriptの問題だけど、
submit()する前に適当なフィールドに動的に値を代入するんじゃない?
あとsubmit()に引数はないような。
0294nobodyさん04/10/31 22:34:23ID:JE33ttxT
エラーコード500で標準エラー出力、じゃなくて
PHPみたいにデフォルトでJSPのエラーをHTML画面に出してくれる
サーブレットラッパきぼんぬ。
サーブレットにコンパイル後の行数じゃなくてJSPの行数で出してくれたりとか。
0295nobodyさん04/10/31 22:52:06ID:???
IDE使えばいいだけかと。
どうせJSPにはコード書かないんだから、あまり必要ないと思われ。
0296nobodyさん04/11/01 00:29:51ID:???
>>295
あんま必要ないと思っても、PHP使うとそれやってくれてて楽でいいなと思うよ。
0297nobodyさん04/11/01 01:46:09ID:???
スタックトレースはHTMLに出力するわけだから、行番号をJSPの行番号にしろってだけ?
サーブレット使わずにJSP単体でやるってことは、たいしたコード書いてないわけだし、スタックトレースよめばどのメソッドで例外が出たかわかるわけだし、そんなに便利にはならないと思われ。
実装の手間を考えると、誰も使わないし、そんなに便利にはならないし、むくわれないね。
PHPの行番号は、実際にエラーが出た行番号とエラーメッセージが出るだけで、ちょっとライブラリ呼び出しただけで使い物にならんけどね。
0298nobodyさん04/11/01 10:53:23ID:???
ボーダフォンのWebサイトだが、
http://www.vodafone.jp/ にアクセスすると
http://www.vodafone.jp/scripts/japanese/top.jspに移動する。
JSPを使っていながら /scripts というパスが激しく気になる・・・
まさかPHPみたいな作り方してないだろうな???
0299nobodyさん04/11/02 07:01:13ID:???
http://www.vodafone.jp/scripts/japanese/shop/search.jsp
はjspでリクエストを受け取ってるね
0300nobodyさん04/11/02 08:11:27ID:???
結果として運用できているのならOKだと思われ。
その組織の体制やシステム構成にあった設計になっているかどうかが問題なので、JSPに処理を書いてるからダメとか、Struts使ってMVCだからイイとか、一概にいえるもんじゃない。
拡張子.jspだけアプリケーションサーバーに委譲するような設定になっているのかもしれない。
画像を多く含んでいてアクセスの多いサイトだと、どういうルールでアプリケーションサーバーに処理を委譲するかっていうのは、悩ましい問題だしね。

/scriptsは怪しいがね。
0301nobodyさん04/11/04 17:05:48ID:MXul7/PE
setRedirectはどのような時に使うのでしょう?
0302nobodyさん04/11/04 17:57:59ID:???
HttpServletResponse.sendRedirect()
ActionForward.setRedirect()
どっち?

後者ならスレ違いだけど、リロード対策とかが主じゃないかな。

でもstruts-config.xmlで
<forward ... redirect="true" />
とする方がよさげ。
0303nobodyさん04/11/04 19:07:00ID:???
何がどっちなんだよ
0304nobodyさん04/11/06 00:12:34ID:???
メソッドの中でout.print使うにはどうしたらいいんでしたっけ..orz
適当にprivate PrintWriter out;とかしたけど無理ですた...
0305nobodyさん04/11/06 00:29:00ID:???
private void myMethod(){
  FileWriter fw = new FileWriter("c:\\test.txt");
  PrintWriter out = new PrintWriter(fw);
  out.println("出力するよ");
  out.printf("%dとか%n", 15);
}
0306nobodyさん04/11/06 04:48:12ID:???
>>304
System.out.println("何を意図してどこに出力しようとしているのか不明");
0307nobodyさん04/11/07 17:55:42ID:???
>>305
どうもです。ちょっとしたメールクライアントを作ってて、
受信メールのID?(javamailの)をヘッダー解析メソッドに渡して、
そのメソッドの中で例えば件名だと本文とか抽出されてくるので
タグと一緒にoutしたいんです。
perlとかでいう所の、グローバル変数みたいなもので代用できれば
いいんですが、いまいちよく分からんのです。
0308nobodyさん04/11/07 17:56:33ID:???
×件名だと本文とか
○件名だとか本文とか

orz
0309nobodyさん04/11/15 21:57:22ID:???
HttpURLConnectionでサーブレットを呼び出しているのですが、
ときどき急に1度繋がった後tomcatを再起動したりすると、次から
NoClassDefFoundErrorが発生して、全く繋がらなくなってしまいます。
そんなような症状を経験された方、いませんでしょうか?
もし何か分かる方がおられましたら、ご教授頂ければうれしいです。
0310nobodyさん04/11/17 03:36:13ID:eshx/1+6
JSPを勉強するのに最適な書籍はなんでしょうか?
PHP・Perlはほぼ理解しています。
0311nobodyさん04/11/17 03:38:54ID:???
まずは、Javaを勉強してください。
PHPを理解してるというのはすごいね。尊敬する。
Mojavi+Smartyに慣れてるのなら、Strutsにはすんなり移行できると思うよ。
0312nobodyさん04/11/21 09:07:07ID:???
いわゆるUIコンポーネントを作りたいのですが、
引数でカスタマイズできるJSTLのc:importのようなものを探しています。
特定の名前のBeanにパラメータをセットして、c:importを呼べば実現できますが、
どうも時代逆行的で躊躇しています。
カスタムタグを作るには大袈裟な気もしますし...
皆さんどのようにしていますか?
ちなみにこちらのビューまわりの環境はStruts + JSTLです。
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の制御下というより、同一アプリケーション内のリソースのみ。
■ このスレッドは過去ログ倉庫に格納されています