- PR -

JSPでXMLを出力

1
投稿者投稿内容
Jumpin'' Jack Flash
大ベテラン
会議室デビュー日: 2006/01/24
投稿数: 198
投稿日時: 2006-05-23 01:10
JSPでXMLを出力したいので、
<%@ page language="java" contentType="text/xml; charset=UTF-8" %>
としてみましたが、IEで表示するとHTMLとして扱われるようで、
XMLを表示する画面になりません。
<%@ page language="java" contentType="application/xml; charset=UTF-8" %>
としても同じでした。
どうすれば、出力したXMLを正しく認識させられるのでしょうか?

よろしくお願いいたします。
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 2006-05-23 10:48
METAタグ使って
コード:
<meta http-equiv="Content-Type" content="text/xml; charset=UTF-8">


と、指定するとか、どうでしょう。
あと、IEのキャッシュを削除するとうまくいくかもしれません。
IEはmimeタイプをキャッシュしているらしく、一度読み込んだファイルのmimeタイプを変更しても、キャッシュを削除するまでIE上で反映されませんでした。
ひろ@ya
大ベテラン
会議室デビュー日: 2006/02/23
投稿数: 168
投稿日時: 2006-05-23 10:49
JSPの生成した応答の本当の先頭に xml 宣言が来るようにするために、JSPの一番最初に

<?xml version="1.0" encoding="UTF-8"?>

を置いても駄目ですか?

Ajaxの案件ですが、JSPの<%@page %>より後にxml宣言を書いたら応答データの先頭に改行コードが入ってしまって正しく xml として認識されなかった経験があります。
Jumpin'' Jack Flash
大ベテラン
会議室デビュー日: 2006/01/24
投稿数: 198
投稿日時: 2006-05-23 11:43
コメント、ありがとうございました。

どうやらキャッシュに残っていたようです。
実際、現象が起こった環境(自宅)で試していないので
何とも言えませんが、このページを全く表示したことの
ない環境(会社)で試したら、正常にXMLとして表示でき
ました。

念の為、
<?xml version="1.0" encoding="UTF-8" ?> を先頭に
<%@ page language="java" contentType="text/xml; charset=UTF-8" %>
と入替えたケースも実行してみました。正常に表示されます。
ソースを見ても
----
<?xml version="1.0" encoding="UTF-8" ?>

<rss version="2.0">
----
となり、納得。

じゃあ、元の状態では?と思い、
<%@ page language="java" contentType="text/xml; charset=UTF-8" %>
<?xml version="1.0" encoding="UTF-8" ?>
このようにして、ソースを見たら、
----
<?xml version="1.0" encoding="UTF-8" ?>


<rss version="2.0">
----
予想に反してこのようになりました。
予想は、
----

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
----
こうだったのですが。

まぁ、その辺はJasperくんが気を利かしてくれたのだと
思うことにしました。

ありがとうございました。

koeさん、
METAタグって、XMLでも一般的に使うのですか?
ちょっと見たことがないもので、少々違和感がありました。

それから、ひろさん、
ついでで申し訳ございませんが、差し障りなければ、
Ajaxの案件で使用したAjaxのフレームワークがありましたら
その選定に至った経緯を教えていただけないでしょうか。
こちら、Ajaxに手を出したいのですが、どのフレームワーク
を使うべきか評価しようと思っているうちに億劫になって、
未だ手を出せていません。経験者の貴重なご意見をいただけ
ると幸いです。
ひろ@ya
大ベテラン
会議室デビュー日: 2006/02/23
投稿数: 168
投稿日時: 2006-05-23 13:09
キャッシュに残らないようにするためにスクリプトレットで
<%
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache");
response.addHeader("Cache-Control","no-store");
response.setDateHeader("Expires",0);
%>
を書いておいた方が良いかもしれません。

Ajaxの案件のフレームワークですが、実際に Ajax で実装した機能が1つだけだったので、特にフレームワークは使用せずに普通の Struts + Tomcat で
http://www.openspc2.org/JavaScript/Ajax/Ajax_study/index.html
あたりを参考にして実装しました。
Jumpin'' Jack Flash
大ベテラン
会議室デビュー日: 2006/01/24
投稿数: 198
投稿日時: 2006-05-23 15:43
引用:

ひろさんの書き込み (2006-05-23 13:09) より:
キャッシュに残らないようにするためにスクリプトレットで
<%
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache");
response.addHeader("Cache-Control","no-store");
response.setDateHeader("Expires",0);
%>
を書いておいた方が良いかもしれません。



そうですね。久しぶりにJSPのアプリを作っているもんで、
いろいろとコツを忘れています。

Ajaxの件、教えていただいてありがとうございました。
教えていただいたページを参考に、まずは始めてみようと思います。

いろいろ教えてくださって、ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)