ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

お世話になります。

Java6のサーブレット内で、半角の&(アンド)文字を
String属性の変数であるstrMessageにセットした上で、
その文字データを、
request.setAttribute("err_message", strMessage);
this.getServletContext().getRequestDispatcher(
"/WEB-INF/jsp/errorMessage/FormError.jsp").forward(
request, response);
としてセットすると、JSP画面上では、

&

という文字で、Webブラウザ上に表示されてしまいます。

これを正しい半角の&(アンド)文字で表示させるには、
Javaのサーブレット内において、
どのように値をセットすればよろしかったでしょうか?

以上になります。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

><c:out value="${fn:escapeXml(err_message)}" />


c:outで出力するときには、デフォルトでエスケープ処理されます。
(escapeXml="false"とすればエスケープ処理はされません。)
この記述ではfn:escapeXmlでエスケープ処理した文字列をさらにエスケープ処理することになります。
つまり、
& → &amp; →&amp;amp;
となるため、「&amp;」と表示されてしまうのです。
ですので、
<c:out value="${err_message}" />
とすればいいです。
    • good
    • 0
この回答へのお礼

「yamada_g」様

お世話になります。
お礼のレスポンスが遅くなってすみません。

先週、ご回答いただきましたように、
私の方で、つい先ほど、
<c:out value="${err_message}" />
として試したところ、
半角の&(アンド)文字を、無事に
JSP画面上に表示することが出来ました。

丁寧なご回答をいただきまして、
本当に助かりました。

また機会がございましたら、
よろしくお願い致します。
ありがとうございました。

お礼日時:2011/04/18 17:45

それはサーブレットでの問題ではなく、画面表示時のエスケープ処理の問題です。


JSPのソースも記載した方がいいと思いますよ。

この回答への補足

了解いたしました。
JSPのソースを以下に添付いたします。

<%@ page session="false" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" errorPage="../error/SystemError.jsp" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>システムエラー画面</title>
<link rel="stylesheet" type="text/css" href="./style.css">
</head>
<body>
<h1>入力エラー</h1>
<p>
入力された内容に対して、次のエラーが発生しました。<br>
</p>
<ul><c:out value="${fn:escapeXml(err_message)}" /></ul>
<a href="javascript:history.back()">戻る</a><br />
</body>
</html>

以上になります。
よろしくお願いいたします。

補足日時:2011/04/15 17:29
    • good
    • 0
この回答へのお礼

お世話になります。
上記No3のお礼入力で、まとめてお礼申し上げますので、
宜しくお願い致します。

お礼日時:2011/04/18 17:39

JSP側で「&amp;」に変換していませんか?


ブラウザに「&amp;」って表示されるってことはブラウザのソース表示したら
「&amp;amp;」になっているはずですが。
そう考えると2回変換していると思われます。
途中のソースがないのでなんとも分かりませんが。
    • good
    • 0
この回答へのお礼

「tegra」様

このたびは、ご回答いただきまして、
本当にありがとうございました。
大変参考になりました。

お礼日時:2011/04/18 17:38

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q「httpステータス404」というエラーが出ます。

「httpステータス404」というエラーが出ます。

java初心者です、宜しくお願い致します。
EclipseでServletを書いてやりましたが、以下のようなエラーが出ます、
原因はなんでしょうか、宜しくお願い致します。
「httpステータス404-/Servlet%E7%B7%B4%E7%BF%92/ ServOutput」

Aベストアンサー

Not Found
という意味です。
そのファイルが無い。あるいはリンクが間違っています。
詳しくは参考URLをみてください。

参考URL:http://ja.wikipedia.org/wiki/HTTP_404

Qjavascriptでセレクトボックスの"selected"を動的につ

javascriptでセレクトボックスの"selected"を動的につける方法について質問させてください。

現在、以下のようなフォームを作成しました。

<select name='year'>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
</select>月

<select name='day'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
<option value='11'>11</option>
<option value='12'>12</option>
<option value='13'>13</option>
<option value='14'>14</option>
<option value='15'>15</option>
<option value='16'>16</option>
<option value='17'>17</option>
<option value='18'>18</option>
<option value='19'>19</option>
<option value='20'>20</option>
<option value='21'>21</option>
<option value='22'>22</option>
<option value='23'>23</option>
<option value='24'>24</option>
<option value='25'>25</option>
<option value='26'>26</option>
<option value='27'>27</option>
<option value='28'>28</option>
<option value='29'>29</option>
<option value='30'>30</option>
<option value='31'>31</option>
</select>日


このセレクトボックスに、例えば今日の日付"2010年9月30日"だったら、それぞれの年、月、日の<option>に"selected"をつけたいのですが、javascriptではどのようにして実現したら良いのでしょうか?

よろしくお願いします。

javascriptでセレクトボックスの"selected"を動的につける方法について質問させてください。

現在、以下のようなフォームを作成しました。

<select name='year'>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
<option value='8...続きを読む

Aベストアンサー

こんな感じで・・・

<script>
window.onload=function(){
var f=document.getElementById("f0");
var ymd=new Date();
checkSelect(f.elements["year"],ymd.getFullYear());
checkSelect(f.elements["month"],ymd.getMonth() +1);
checkSelect(f.elements["day"],ymd.getDate());
}
function checkSelect(obj,val){
for(var i=0;i<obj.length;i++){
if(obj[i].value==val){
obj[i].selected=true;
break;
}
}
}
</script>
<form id="f0">
<div>
<select name='year'>
<option value='2009'>2009</option>
<option value='2010'>2010</option>
<option value='2011'>2011</option>
</select>年

<select name='month'>
<option value='8'>8</option>
<option value='9'>9</option>
<option value='10'>10</option>
</select>月

<select name='day'>
<option value='29'>29</option>
<option value='30'>30</option>
<option value='31'>31</option>
</select>日
</div>
</form>

こんな感じで・・・

<script>
window.onload=function(){
var f=document.getElementById("f0");
var ymd=new Date();
checkSelect(f.elements["year"],ymd.getFullYear());
checkSelect(f.elements["month"],ymd.getMonth() +1);
checkSelect(f.elements["day"],ymd.getDate());
}
function checkSelect(obj,val){
for(var i=0;i<obj.length;i++){
if(obj[i].value==val){
obj[i].selected=true;
break;
}
}
}
</script>
<form id="f0">
<div>
<select name='year'>
<opt...続きを読む

Qservletからjspへオブジェクトの配列情報を送る方法

いつもお世話になっております。echo2002です。

さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか?
”servletで作成したオブジェクトの配列をjspにforwardして表示させる”

こんなような処理を考えています。

構成:FileListServletクラス, FileInfomationクラス, disp.jsp

FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、
それぞれgetなどのアクセサメソッドを持つとします。

FileListServletクラスでの処理
FileInfomationクラスの配列を作成し、各情報をsetする。
HttpServletRequestにsetAttributeでFileInfomation情報を付加し、
disp.jspへforwardする。

※以下の方法を考えています。
request.setAttribute("fileinfo1", fileinfo[0]);
request.setAttribute("fileinfo2", fileinfo[1]);
request.setAttribute("fileinfo3", fileinfo[2]);
・・・
(配列でsetAttributeできるのかわからなかったので、
 とにかくファイルの数分setAttributeしてみました)

getServletContext().getRequestDispatcher("/disp.jsp").forward(req, res)

わからないこと:
disp.jspでどのようにFileInfomationの情報を取得し、
内容を参照できるのかがよくわからないのです。
jspの暗黙オブジェクトrequestを使用して、request.getParameterをすると、
返ってくる値がStringのようなので、FileInfomationクラスにならないんですよね?

突っ込みどころ満載の質問かと思いますが、何かアドバイス頂ければと思います。
オブジェクトの配列をsetAttributeしてjspで読み出せる方法があれば、
それもご教授いただけますでしょうか。
よろしくお願いいたします。jsp難しいです・・・。

いつもお世話になっております。echo2002です。

さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか?
”servletで作成したオブジェクトの配列をjspにforwardして表示させる”

こんなような処理を考えています。

構成:FileListServletクラス, FileInfomationクラス, disp.jsp

FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、
それぞれgetなどのアクセサメソッドを持つとします。

FileListServletクラスでの処理
FileInfomationクラスの配列を作成し、...続きを読む

Aベストアンサー

setなんちゃらメソッドで値を設定したら、getなんちゃらメソッドを呼べば良かったのです。つまり、set/get以下が同名のメソッド同士をセットで使えば良いのです。
今回の場合は、getAttributeメソッドですね。
戻り値はObjectですがこれはキャストすれば良いのです。
FileInfomation 変数 = (FileInfomation)request.getAttribute("fileinfo1");
てな具合です。

なお、getParameterメソッドは、クライアント(ブラウザ)から送信されたパラメータを取得するメソッドです。

さて、話を次の段階に進めて、配列を受け渡しできるか?となりますが、、できます。
サーブレット側で、
request.setAttribute("キー文字列", fileinfo);
として、JSP側で、
FileInfomation[] 変数 = (FileInfomation[])request.getAttribute("キー文字列");
とすれば、良いのです。

Qデータ数をカウントしたいのですが

JAVAのJDBCを使いMySqlを操作しデータ数を取得するプログラムです。自分なりに考えたプログラムは
Connection con = null;
String sql = "select count(*) from テーブル名";

// コネクションを作成する。
con = DriverManager.getConnection(url, user, pass);
Statement st = con.createStatement();

// SQLを実行する。
ResultSet rs = st.executeQuery(sql);
String count = rs.getString("count(*)");

実行した結果上手く出来ないのですが、この部分での間違いはありますか?

Aベストアンサー

どう上手くいかないのかエラーメッセージなどがあると分かりやすいのですが・・・とりあえず、count(*)というカラム名は取得できなかったと思います。

sqlを
select count(*) as cnt from テーブル名
にして、

値を取得する部分を
String coung = rs.getString("cnt");
にしてみてください。
もしくはsqlはそのままで、
rs.getString(1)
で1番目のカラムが取得できます。
(カラム名が固定なら最初のやりかたの方が分かりやすいと思います。)

Qequalsの逆

javaで、文字列の場合は比較演算子の「==」は用いずに

if ((str1.getText()).equals(str2)){
(※…str1,2は文字列)

と書きますよね?
この逆で、文字列str1とstr2は等しくないとき、にはif以下の条件文をどのように書けばよいでしょうか?

Aベストアンサー

>if !((str1.getText()).equals(str2)){

あくまで
if(){
}


!(str1.getText()).equals(str2)
が入っているので
if !((str1.getText()).equals(str2)){
じゃなくて
if (!(str1.getText()).equals(str2)){
こう。

Qjspでformのvalueを取得。

現在、jspとjavascriptを組み合わせたプログラムを組んでいます。

jsp内のフォームから入力した文字列をjavascriptから参照して変換、
変換後の文字列をjspで再取得、
再取得した文字列をjsp内で操作(DBへの登録とprintでの画面への表示)
という流れの操作をしたいと考えています。

javascriptでjspのフォームの内容を参照して操作する方法は
グーグルで調べて分かったのですが、
(document.getElementById('id').value)

jspで、jspのフォームの外からフォーム内の内容を参照する方法が分かりません。

尚、フォームのあるjspと変換後の文字列を受け取るjspは同じプログラムになりますので、
formによる別プログラムへの送信は使えません。

よろしくお願いします。

Aベストアンサー

こんにちは。

クライアントで動くJavaScriptとサーバ側で動くjspの動きを一度整理したほうが良いと思います。

jspはあくまでサーバ側で動かす言語になりクライアントに返される結果は単純なHTMLになります。

jspで変換された文字を処理したいのであれば一度送信するしかありません。

入力された内容をJavaScriptにて変換してjsp(サーバ側)へ送信
送信された内容(JavaScriptによって変換されたもの)をリクエストから取得し、DBへ登録と画面に表示

こんな流れだと思います。
なんにせよDBへの登録処理がサーバ側でないと出来ません。

Qeclipseとtomcatで404エラー

-----------------------------------
Windows7 Ultimate

eclipse Indigo
tomcat 5.5
-----------------------------------

eclipseとtomcatを使用して、JSPを動かそうとしています。
eclipseとtomcatとJDKはC:\pleiadesの下に配置しています。そしてワークスペースは
C:\workspace\Testとして登録しています。(ちなみに動的Webプロジェクトで作成しています)

既存のJSPファイルをeclipse上で右クリックして、サーバーで実行とすると、eclipseの画面上にきちんと表示されるのですが、その後、そこで動いていたtomcatを終了させて、eclipseの上部にあるtomcatのアイコンをクリックし、その後、通常のブラウザで表示させようとすると404エラーが出てしまいます。(http://localhost:8080/Test/test.jsp)

そもそも右クリック→実行の際に起動するtomcatとeclipse上部にアイコンで存在するtomcatはどう違うのでしょうか?

そしてどうすれば、上部のtomcat起動からブラウザで直接JSPを呼び出すことが出来るのでしょうか?

申し訳ありませんが、ご教授お願い致します。

-----------------------------------
Windows7 Ultimate

eclipse Indigo
tomcat 5.5
-----------------------------------

eclipseとtomcatを使用して、JSPを動かそうとしています。
eclipseとtomcatとJDKはC:\pleiadesの下に配置しています。そしてワークスペースは
C:\workspace\Testとして登録しています。(ちなみに動的Webプロジェクトで作成しています)

既存のJSPファイルをeclipse上で右クリックして、サーバーで実行とすると、eclipseの画面上にきちんと表示されるのですが、その後、そこで動いてい...続きを読む

Aベストアンサー

EclipseからTomcatを起動した場合、プロジェクトに生成されたWebアプリケーションのディレクトリをTomcatの公開ディレクトリに強制的に変更しています。普通に起動すると、プロジェクトのディレクトリはTomcatの公開ディレクトリにはなっていませんから表示は出来ません。

通常、Eclipseで作成したWebアプリケーションは、WARファイル(Webアーカイブ)として書き出し、それをデプロイします。Eclipseの「エクスポート」メニューでWARファイルを作成し、そのファイルをTomcatの「webapp」フォルダに入れてください。これで公開できるはずです。

QResourceBundleクラスの使い方

ResourceBundleクラスを使用してプロパティファイルに定義した値を取得しようと
したのですがうまくいかなくて困っています。
java.util.MissingResourceException: Can't find bundle for base name resources, locale ja_JP
と表示されてしまいます。
どなたか原因はお分かりになりますでしょうか
javaファイル、プロパティファイルは以下のようになっています。
クラスパスは以下のように設定しておりプロパティファイルはカレントディレクトリ及びCドライブ
直下に置いています。
CLASSPATH=.;C:\

【PropertyTest.java】
public class PropertyTest {
  public static void main(String[] args) {

    ResourceBundle source = ResourceBundle.getBundle("resources");
    System.out.println(source.getString("hello.world"));
  }
}

【resources_ja_JP.properties】
hello.world=Hello, World!

ResourceBundleクラスを使用してプロパティファイルに定義した値を取得しようと
したのですがうまくいかなくて困っています。
java.util.MissingResourceException: Can't find bundle for base name resources, locale ja_JP
と表示されてしまいます。
どなたか原因はお分かりになりますでしょうか
javaファイル、プロパティファイルは以下のようになっています。
クラスパスは以下のように設定しておりプロパティファイルはカレントディレクトリ及びCドライブ
直下に置いています。
CLASSPATH=.;C:\

【Property...続きを読む

Aベストアンサー

当方では再現できませんでした。

MissingResourceExceptionは、リソースが見つからなかった時に発生する例外です。
ひょっとして、プロパティファイルの名前が、
resources_ja_JP.properties.txt
になっちゃってるとか、
あるいはスペルミスがあったりしませんか?


人気Q&Aランキング