- - PR -
Servlet+JSPで日本語を出力するには?
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2001-09-21 13:41
ついでに補足。
ということです。おそらくもとの状態では JSP にフォワードしようがしまいが response.setContentType("text/html"); なーんてことをやっていたのでは。 そうすると、JSP さんはもう設定されてしまった ContentType を上書きできず、 デフォルトの ISO8859-1 でしか処理できなかった、というのが真相では。 | ||||||||
|
投稿日時: 2001-09-21 14:15
ご回答ありがとうございます。
さっそく助言いただいたコードを入れてみたのですが、実行すると以下のエラーが検出されます。 java.lang.IllegalStateException: OutputStream is already being used for this request どのような対処が考えられるでしょうか? 度々すみませんがよろしくお願いします。 | ||||||||
|
投稿日時: 2001-09-21 17:17
> さっそく助言いただいたコードを入れてみたのですが、実行すると以下のエラーが検出されます。
> > java.lang.IllegalStateException: OutputStream is already being used for this request > > どのような対処が考えられるでしょうか? すでに取得手続済のServletOutputStreamを、再度取得しようとしているために発生しています。 Servletの仕様ですので、Servletコンテナのバグではありません。 Servlet API ドキュメントの ・ServletResponse#getOutputStream() ・ServletResponse#getWriter() を参照してみてください。 | ||||||||
|
投稿日時: 2001-09-21 17:17
ご回答ありがとうございました。
問題は解決しました。ご指摘の通りservletで response.setContentType("text/html; charset=iso-2022-jp"); と設定していたのがじゃまをしていたようです。 response.setContentType("text/html; charset= Shift_JIS"); で正常に表示されました。 お騒がせ致しました。 どうもありがとうございました。 | ||||||||
|
投稿日時: 2001-09-25 18:39
うーん…まだよくわかっていらっしゃらないようですね…
setContentType は、OutputStream をいじってしまいます。 ここではたまたま Shift_JIS で同じだからいじられなくて…という結果でしょう。 現状の問題は、おそらく Servlet の doPost か doGet で、
とされており、サーブレットから JSP に制御が移った時、JSP は JSP で setContentType を内部的に行なわなければならないのですが、すでにサーブレット側でこれを行なってしまっているので、「2回は初期化できんぞ」とおこられるわけです。 今回 Shift_JIS にしたらうまくいったのは、おそらく実装上たまたま、かと。 正しくは
として、JSP にフォワードする前に response をいじらないようにすべきです。 # むしろエラー処理部分も JSP に出しちゃったほうがいいのでは… # とか思ったり… # サーブレットはあくまで MVC におけるコントローラに徹し、 # ビュー部分はすべて JSP、というのがスマートではないかと。 | ||||||||
|
投稿日時: 2001-09-28 15:12
ご指摘の通りです!
貴重なアドバイスありがとうございました。 とても勉強になりました。 ありがとうございました。 | ||||||||
