- PR -

POST送信したデータの末尾に半角空白" "がついてしまう

投稿者投稿内容
Fumo
会議室デビュー日: 2003/09/21
投稿数: 11
投稿日時: 2003-09-21 10:53
サーバーサイドJavaをはじめて2ヶ月ちょっとの者ですが、よろしくおねがいします
開発環境
J2SDK 1.4.2、Tomcat4.1、MySQL 3.23.51、Eclipse(LomBozzJ2EE)

○05input01b.jspで(ソース抜粋)
int p_shi_no=Integer.parseInt(request.getParameter("shi_no"));
<form name="input" method="post" action="05input01b.jsp">
 <input type="text" name="s_no" size="1" value="<%out.println(p_shi_no);%>">
    (同様の入力用フィールドが5つ)
 <input type="submit" name="m02" value="明細更新"></form>

といった感じで、計算のために入力を行ってから、同じページに値を飛ばして取得しています。このとき数値、テキストを問わず"値 "となって半角空白" "が末尾についてしまいます。この前のページからPOST送信してgetParameterで取得したときには普通なのですが・・・同じページで行うことが原因だとは思うのですが。このあとのページで条件式などに使うので、是非とも解決したいのですが、解決法が見つかりません。

どなたかわかる方がいればレスよろしくおねがいします。また、必要な情報がぬけてる点などあればご指摘ください
begood
ベテラン
会議室デビュー日: 2003/09/12
投稿数: 97
お住まい・勤務地: とうきょー
投稿日時: 2003-09-21 12:47
これだけだと、なんともいえないですけど、DBに一度データをおくっているなら、(おくっていないようですけど)DBの列の定義でキャラクターのフォーマットに原因があるのではと感じます。(DBによって、一文字を1バイトから3バイトまであつかうというものがあるので、もし、3バイトで扱われていると、日本語の漢字の場合、2バイトなので、残り、1バイトは空白として扱われるかもしれない・・・)DBを下記の時点で通していないのであれば、プログラム中で文字のフォーマットを変えて試してみると何か、原因が見つかるのではと感じます。SJISとか8859とか、何か見つかるかもしれません。ちなみに、同じページに飛ばしても、空白がついてくるという現象は私が行っている文字フォーマットでは現象は発生していません。試してみる価値はあると思うので、ご参考までに。
パルプ
ベテラン
会議室デビュー日: 2003/06/18
投稿数: 59
投稿日時: 2003-09-21 13:12
out.println()によって改行されてしまうからではないでしょうか。
なので次のようにprintメソッドを使用したら解決するかも。

<%= out.print(request.getParameter("shi_no")) %>
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-09-21 15:23
引用:

スガさんの書き込み (2003-09-21 13:12) より:
<%= out.print(request.getParameter("shi_no")) %>



<% out.print(request.getParameter("shi_no")) %>
か、
<%= request.getParameter("shi_no") %>
では?
後者のほうがいいと思いますが。
パルプ
ベテラン
会議室デビュー日: 2003/06/18
投稿数: 59
投稿日時: 2003-09-21 16:40
引用:

ukさんの書き込み (2003-09-21 15:23) より:

<% out.print(request.getParameter("shi_no")) %>
か、
<%= request.getParameter("shi_no") %>
では?
後者のほうがいいと思いますが。




あー、"="が余計でしたね。すいません。
そして後者のが理想の形ですね。

ukさん、フォローありがとうございます。
Fumo
会議室デビュー日: 2003/09/21
投稿数: 11
投稿日時: 2003-09-21 17:24
レスありがとうございます、直りました。
なんでもかんでも、printlnにしてしまってました(汗
知識不足、理解不足すぎますね、ありがとうございました。
カルキヌキ
会議室デビュー日: 2003/09/22
投稿数: 16
投稿日時: 2003-09-22 01:27
はじめまして。
で、本題からは少し話がそれるのですが、

<%= request.getParameter("shi_no") %>

という記述はあまり好ましくないかもしれません。
XSSとか。
ほむら
ぬし
会議室デビュー日: 2003/02/28
投稿数: 583
お住まい・勤務地: 東京都
投稿日時: 2003-09-22 10:28
ども、ほむらです。
引用:

<%= request.getParameter("shi_no") %>

という記述はあまり好ましくないかもしれません。
XSSとか。


指摘されてはじめて気づく。。。
この場合は、テキストボックスの内容だから大丈夫な気もするけど
普通の表示でもやってしまいそうですね。。。
こういうところから。セキュリティホールが出来てしまうわけですか。

#ところで p_shi_no をprintしてあげればよいだけでよね?結局

#認識の訂正
#実験の結果やっぱりコントロールであっても
#この書き方ではXSSのセキュリティホールになるようです
コード:

<input type="text" value="<%out.print("XSS TEST\" onclick=\"alert(\'ON CLICK\'); return true;");%>" language="javascript"/>


テキストボックスをクリックするとポップアップが表示されました。

[ メッセージ編集済み 編集者: ほむら 編集日時 2003-09-22 10:45 ]

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