09/10/25 17:22:35 CuL6OmA+
>>919,920
レスありがとうございます
924:nobodyさん
09/10/26 00:13:41
JSPの質問はここで良いでしょうか。
スレ違いであればお手数ですが、誘導をお願いします。
運用時に画像ファイルををアップロードするだけで運用したい為、
./img配下の画像ファイル名を取得し、それをランダムに表示するJSPを作成したいのですが、
エラー『rg.apache.jasper.JasperException: JSPのクラスをコンパイルできません:』が発生してしまっています。
ソース
<%@ page import="java.util.*" %>
<%@ page import="java.text.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.math.*" %>
<%
File objFld=new File("./img");
File[] aryFls=objFld.listFiles();
n = Math.round(Math.random() * aryFls.length);
out.print("<img src=./img/" + aryFls[n].getName + "border='0'>");
%>
最後の2行でエラーが発生してるのですが、
私の頭以外に何か悪いところがあればご指摘/ご指導をお願いします。
925:nobodyさん
09/10/26 00:22:41
>>924
何となく勘で
out.print("<img src=./img/" + aryFls[n].getName + "border='0'>");
↓
out.print("<img src=./img/" + aryFls[n].getName + " border='0'>");
としたらどうなる?
926:nobodyさん
09/10/26 00:23:27
nの型宣言かな
927:nobodyさん
09/10/26 00:33:07
つかExceptionにエラー内容書いてない?
928:nobodyさん
09/10/26 00:53:24
>>925,926
ご指摘ありがとうございます。
borderの前のスペースは完全に失念していました。
またnの型宣言についても修正させていただきましたが、
現象は変わりませんでした。
>927
エラー内容を見直してみました。
JSPファイル: /pc/pc_main.jsp の中の24行目でエラーが発生しました
Type mismatch: cannot convert from long to int
21: File objFld=new File("./img");
22: File[] aryFls=objFld.listFiles();
23: long n = Math.round(Math.random() * aryFls.length);
24: out.print("<img src=./img/" + aryFls[n].getName + " border='0'>");
25: %>
JSPファイル: /pc/pc_main.jsp の中の24行目でエラーが発生しました
getName cannot be resolved or is not a field
21: File objFld=new File("./img");
22: File[] aryFls=objFld.listFiles();
23: long n = Math.round(Math.random() * aryFls.length);
24: out.print("<img src=./img/" + aryFls[n].getName + " border='0'>");
25: %>
よく見てみるとlong→intの変換に失敗しているようでした
nの中にろくでもない値が入っている気がします、
乱数の作成処理を見直してみることにします。
ありがとうございました。
929:nobodyさん
09/10/26 01:32:48
>>928
いや、
aryFls[n]の「n」がint形でなければならないのと、
getNameっていうフィールドではなくgetName()が正解だと思うよ。
930:nobodyさん
09/10/26 01:52:30
>>929
ご指摘ありがとうございます。
頂いたた指摘を元に、ソースを以下に修正したところ、
問題が解決できました。
File objFld=new File("./webapps/HP/pc/img");
File[] aryFls=objFld.listFiles();
int n = (int)Math.round(Math.random()*(aryFls.length-1));
out.print("<img src=./img/" + aryFls[n].getName() + " border='0'><BR>");
頂いた指摘以外にも乱数の発生範囲やカレントディレクトリの意識などが抜けていました。
今後の課題は、このJSPをサーバに上げた時に
カレントディレクトリが何処になるのか把握して
アップロード時には修正しないとまた困った事になりそうですorz
931:nobodyさん
09/10/26 01:58:51
・・・せっかくjsp使ってるんだから、web.xmlなり何なりで定義するべきじゃないか?
932:848
09/10/26 14:07:08 nC3NwSAb
>>852
レスありがとうございます。
ホームページに画像を返すプログラムを作ったのですが、
画像が表示されません。
そこで、下記プログラムをローカルに実行して、テストしたところ、
出力ファイルが入力ファイルと異なります
(出力の方がファイルサイズが若干小さく、
ペイントで開こうとしたら形式が違うというエラーになります)
open IIMG, "D:\\lbanner1.gif" or die;
open OIMG, ">D:\\lbanner2.gif" or die;
binmode IIMG;
binmode OIMG;
print OIMG while(<IIMG>);
close OIMG;
close IIMG;
入力したファイルと同じ出力ファイルを作るには、
どうすれば良いのでしょうか?
よろしくお願いします。
933:848
09/10/26 14:15:31 nC3NwSAb
追加です。
Webコーディングでは、
binmode OIMG;
print OIMG while(<IIMG>);
を、
binmode STDOUT;
print "Content-type: image/gif\n\n";
print while(<IIMG>);
にしています。
934:nobodyさん
09/10/26 15:08:28
表示されないときのエラーログは?
とりあえずそのコードコピペでも問題無かったよ
Windowsじゃないけどね。大きさ違うなら差分取ってみてよ
935:932=848
09/10/26 18:38:17 nC3NwSAb
>>934
レスありがとうございます
エラーログは次の通りです。
failed to open log file /var/log/httpd/suexec_log
fopen: Permission denied
Premature end of script
差分は、どうすれば取れるのでしょうか。
よろしくお願いします。
936:nobodyさん
09/10/26 21:03:44
>>932
それなんのプログラム?
937:nobodyさん
09/10/26 22:20:49
<>ってバイナリにも使えるんだっけ? readだとどうよ?
938:nobodyさん
09/10/27 11:19:45
suExec?Windowsだとどうなるんだ、そんなエラー(suExec関連)出る可能性あるのかな
差分はdiff、、、つーかwindowsならfc.exeがあるべ、/bでバイナリ使えた気が。
まずバイナリファイルの読み書きが解決してから、cgiが実行できてないほうをやったほうがいい
たぶん両者は別問題。
939:932=848
09/10/27 11:51:17 CPNCdNXO
レスありがとうございます。
readでやったら、できました(ローカル、cgiとも)。
cgiの方は、1行目に改行が入っていました。
どうもありがとうございました。
ただ、別の問題(質問)が出てきました。
画像を表示するcgiプログラムを
<a href="http://~">で呼び出すと、クッキーを取得(参照)できるのですが、
<img src="http://~">で呼び出すと、クッキーが取得(参照)できません。
後者の呼び出しでは、クッキーは参照できないのでしょうか?
よろしくお願いします。
940:nobodyさん
09/10/27 12:17:12
>>939
セキュリティ系のソフト入って無い?
たぶんブロックされてる。
941:nobodyさん
09/10/27 21:55:21 kiHD33LQ
すいません。質問させてください
Strutsで以下のJSPでのonmouseover=の中で動的にスクリプトレットの値を
表示したいのですが、マウスをカーソルした時に「100+200の結果」と表示して欲しいのに、
「+の結果」と表示されます。
どうすればサーバー側から取得した任意の値を表示させる事ができるのでしょうか?
Formから取りだすのはNGです。
<%
String a = "100"; //サーバーから取得した値
String b = "200";
%>
<display:column property="total" title"足し算"
onmouseover="tip('表題',' <%=a%>+<%=b%>の結果')" onmouseout="untip()" />
先生、よろしくお願いします。
942:nobodyさん
09/10/28 00:05:10
onmouseover="<%= "tip('表題', '" + a + "+" + b + "の結果')" %>"
943:939=932=848
09/10/28 08:43:51 3sLr7DkQ
>>940
セキュリテイソフト止めても同じです。
パソコンのIPアドレス等も送られてくるし、画像もパソコンに表示されます。
クッキーはセットしたサーバにしか送られないので、
クッキーだけブロックする意味もないような気がしますが・・・
どうすれば<img src=~>で、クッキー取得できるのでしょうか?
よろしくお願いします。
944:nobodyさん
09/10/28 11:51:04
>>943
追跡用のcgi画像cookieをスパイウェアとして検出するセキュリティソフトは多いぞ。
それはさておき、ブラウザとセキュリティソフトの名前くらい挙げてもバチはあたるまい。
945:943=939
09/10/28 18:27:48 3sLr7DkQ
>>944
レスありがとうございます。
セキュリティソフトはAVG Free Edition 8.5、ブラウザはIE7です。
検出のメッセージ、ブロックのメッセージは出ていません。
よろしくお願いします。
946:nobodyさん
09/10/28 18:31:40
>>945
html置いてる鯖と、img srcで呼んでるcgiの鯖が違うなら仕様。
947:nobodyさん
09/10/28 18:33:32
クッキーが無いってどうやって判断した?
ツールとかでやりとりしてるときのヘッダー見てる?
画像じゃないときのクッキーはどう?
948:945
09/10/28 19:24:27 3sLr7DkQ
>>946,947
レスありがとうございます。
CGIプログラムでログのようなファイルに、
日時、クッキー、IPアドレス、リファラー等を書き込んでいます。
ホームページ上には、そのCGIプログラムを参照する
<a href=>リンクと<img src=>の画像表示タグがあります。
前者をクリックすると画像だけ表示されます。
その後、元のホームページをブラウザでリロードします。
その後で、ログもどきファイルの中を見ますと、
前者のレコードにはクッキーがあり、後者のレコードにはクッキーがありません。
その他のデータは両方にあります。
>>946
ホームページ置いてるサーバとCGIのサーバは別サーバです。
仕様ですか!?
949:nobodyさん
09/10/28 19:33:08
>>948
>ホームページ置いてるサーバとCGIのサーバは別サーバです。
>仕様ですか!?
ずっこけた
950:nobodyさん
09/10/28 20:27:01
>>948
URLリンク(example.com) から <img src="URLリンク(example.net) とかやってんだろ?
example.netの方がサードパーティのcookie扱いになってるからブラウザが送信してない。
ブラウザによっては設定で回避できるがデフォでは無理。諦めれ。
951:nobodyさん
09/10/28 20:28:36
それが容易にできたら抜きまくりだろ
952:948
09/10/28 20:58:06 3sLr7DkQ
レスありがとうございます。
>>950の例で言いますと、クッキーをセットしたのは、
URLリンク(example.net)なのですけど、なぜダメなのでしょうか?
クッキーをセットしたドメインと、参照するドメインは同じドメインなのですけど。
953:nobodyさん
09/10/28 21:11:20
>>952
物分り悪いな・・・。
>>950で「サードパーティのcookie扱いになってる」ってちゃんと理由も書いたんだが。
それが何故ダメなのかまで知りたきゃググるくらいのことはしてくれよ。
954:nobodyさん
09/10/28 21:16:42
>>952はcookieをサーバーが読み出す(pullする)ものだと勘違いしてんじゃね?
955:nobodyさん
09/10/29 02:11:33
P3P
956:nobodyさん
09/10/30 08:28:03
ホームページを公開しているのですが、掲示板にスパム書き込みが
多くこまっています。
掲示板へのリンクはjavascriptで
location.href = "/hogehoge/" + "hoge.cgi"
と言った具合に直にはURLがわからないようにしているのですが
それでも数ヶ月するとスパム書き込みが始まります。
どうやらグーグルの検索結果に上記Javascriptで書いてある
リンクが/hogehoge/hoge.cgiと結合された形で残ってしまうからの
ようです。
どういった対策が考えられるでしょうか?
957:nobodyさん
09/10/30 08:36:39
スパムが英語だった場合は英語のみの書き込みを弾く
画像認証を採用する
禁止語リストを作り、当てはまれば弾く
958:nobodyさん
09/10/30 08:47:29
>>957
なるほど。画像認証いいですね。
しかし掲示板側の修正は難しいですねー。
959:nobodyさん
09/10/31 00:04:52
まあ自動投稿スクリプトが相手なら、不変の認証キーとそれを表示する画像があればいいんじゃないか?
個人サイトの認証破るのに業者もそんなコストかけんだろ
960:nobodyさん
09/10/31 07:05:09 4iG7XIa+
MySQLの漢字コードをutf-8にして、
HTMLソースの漢字コードをSJIにした場合、
(1)そのままで、MySQLの漢字データは正しく表示されるのでしょうか?
(2)正しく表示されないとしたら、どのように変換すれば良いのでしょうか?
961:nobodyさん
09/10/31 08:49:47
>>960
(1)やってみりゃわかりますがもちろん化けます。
(2)sjisに変換してください。
962:nobodyさん
09/10/31 09:27:28
>>960
ミドルウェアが変換してくれるので正しく表示されます。
変換の必要はありません。
963:nobodyさん
09/10/31 13:08:22
HTMLソースって何だ? phpソースのことか?
964:nobodyさん
09/10/31 14:17:02
すいませんどこで質問して良いかさえわからないのですが教えてください。
楽天のgoldというFTPに日本語のフォルダを間違えてUPしてしまったら
削除できなくなってしまいました(リネームもできないです)
削除するにはどうすればよいのでしょうか。。
965:964
09/10/31 14:18:31
使用ソフトはFFFTPです。
後何を書いてよのやら。。
966:nobodyさん
09/10/31 14:30:16
これなら削除できるよ
URLリンク(www.forest.impress.co.jp)
967:nobodyさん
09/10/31 14:32:20
ちがう
URLリンク(www.smartftp.com)
こっちだ
968:964
09/10/31 14:41:58
>>966
ありがとうございます。
FTPit 1.5.5をDLしたのですが説明が英語すぎで
exeファイルもなくてどれがインストールファイルなのかすらわかりませんでしたorz
もうちょっと頑張ってみます
969:964
09/10/31 15:06:12
>>967
smartFTPをインストールしました。FTPに接続完了です。
が、該当の日本語ファイルが表示されておりません。orz
どうやるのでしょうかorz
970:964
09/10/31 15:17:00
うう。。
ひょっとして騙されたのか俺ort
971:nobodyさん
09/10/31 15:37:16
少し落ち着け。お前が慌てたところで何も解決しない。
>>969で該当のファイルが表示されてないとあるが、他のファイルは表示されてるのか?
違うとこ見てないか?
972:nobodyさん
09/10/31 15:38:41
mdel * もできないのかね。