K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]


新規投稿 | 開設者ホームページへ戻る | ヘルプ


[2098] 第7章のTIPSについて
返信


投稿者:くまきち
2018/01/10 22:11:30

Link:
『基礎からのWebアプリケーション開発入門』のP.235からのTipsについて質問させてください。


P.238 リスト7-1 25行目
>out.print((char)(ch & 0xffff));

"& 0xffff"は何をしているのでしょうか?不要な制御情報を削除するなどの用途があるのでしょうか?


P.241 リスト7-3 36行目
dataOutを多次元配列として定義している理由がよく分かりませんでした。
一次元配列でも参照型変数となるので、呼び出され側で値を詰めることができるように思います。


P.245 7.3 画像を動的に生成する
><img src="http://localhost:8080/generateimage/GenerateImage"/>;
><image>タグは、それが記載されているHTMLとはまったく無関係のドメインからでも・・・」

とありますが、例えばP.226の補足に記載されているような最新投稿を表示するようなパーツが、
仮にテキストなどでは無く画像で最新記事を返す形式だったら、XMLHttpRequestとか同一オリジンポリシーなど
考えなくても良いということでしょうか?
なんとなく、いろいろセキュリティ対策しているけど、抜け道はいろいろありそうな気がしてしまいます。


P.248 注3
csvダウンロードできませんでした。リンクを、

><a href="/generatecsv/GenerateCSV">CSVダウンロード</a>

とすると失敗しましたが、下記のようにすると成功しました(IE、Crome、Firefoxで実施)。

><a href="http://localhost:8080/generatecsv/GenerateCSV">CSVダウンロード</a>;


P.249 リスト7-8 5行目
下記が誤りのように思います。
 誤:"http://localhost/downloadtest/file.mp4;
 正:"http://localhost/downloadtest/file.mp4";;
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2099] Re:第7章のTIPSについて
返信


投稿者:(ぱ)こと管理人
2018/01/11 00:14:06

Link:
>>out.print((char)(ch & 0xffff));
>
>"& 0xffff"は何をしているのでしょうか?不要な制御情報を削除するなどの
>用途があるのでしょうか?

ここではint型のchをcharにキャストしているので、結果がcharの
範囲に収まるよう、0xffffとの&を取っています。
まあ、この場合、直前のif文で負でない保証がされていますし、
InputStreamReader#read()の戻り値なので、あまり気にする必要は
ないのかもしれませんが。

>P.241 リスト7-3 36行目
>dataOutを多次元配列として定義している理由がよく分かりませんでした。
>一次元配列でも参照型変数となるので、呼び出され側で値を詰めることができるように
>思います。

1次元配列を上位でnewして渡し、呼び出され側で値を詰めてもらう、
ということはできますが、その場合、newするには呼び出し側でサイズが
わかっている必要があります。ここでは、呼び出し側ではサイズがわからないので、
呼び出され側でnewした配列を参照型変数に格納して返すには、
配列の配列(2次元配列)が必要になります。

>とありますが、例えばP.226の補足に記載されているような最新投稿を表示する
>ようなパーツが、
>仮にテキストなどでは無く画像で最新記事を返す形式だったら、
>XMLHttpRequestとか同一オリジンポリシーなど
>考えなくても良いということでしょうか?

そうなりますね。(JSONPだってその意味では抜け穴ですが)
現状、例えば怪しいサイトのHTMLが社内イントラの画像をimgタグで抜き取ったとして、
それを怪しいサーバに送ろうとするとHTML5のCanvasを使わなければならず(たぶん)、
そちらでは別のオリジンから持ってきた画像はデータ化したりできないようにする等
対策はされていると思いますけれども。

>P.248 注3
>csvダウンロードできませんでした。リンクを、
>
>><a href="/generatecsv/GenerateCSV">CSVダウンロード</a>

HTMLファイルはどこに置きましたか?
ここでは、
C:\Tomcat8\webapps\generatecsv\test.html
のような場所に置いてあることを想定しています。

実際にアプリケーションを開発する際も、HTMLなりJSPなりを
GenerateCSVと同じTomcatでホストしていれば、/generatecsv/GenerateCSVで
見えると思います。

>P.249 リスト7-8 5行目
>下記が誤りのように思います。
> 誤:"http://localhost/downloadtest/file.mp4;
> 正:"http://localhost/downloadtest/file.mp4";;

申し訳ありません。これは間違いですね。
正誤表に載せておきます。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2100] Re:第7章のTIPSについて
返信


投稿者:くまきち
2018/01/14 06:38:59

Link:
ご回答頂き、ありがとうございました。

ただ、CSVダウンロードだけは、まさに
>C:\Tomcat8\webapps\generatecsv\test.html
に置いていたのですがダウンロードできませんでした。。
HTTPから指定するのが正式だと思うので、とりあえず気にしないことにしました!


>>>out.print((char)(ch & 0xffff));
>>
>>"& 0xffff"は何をしているのでしょうか?不要な制御情報を削除するなどの
>>用途があるのでしょうか?
>
>ここではint型のchをcharにキャストしているので、結果がcharの
>範囲に収まるよう、0xffffとの&を取っています。
>まあ、この場合、直前のif文で負でない保証がされていますし、
>InputStreamReader#read()の戻り値なので、あまり気にする必要は
>ないのかもしれませんが。
>
>>P.241 リスト7-3 36行目
>>dataOutを多次元配列として定義している理由がよく分かりませんでした。
>>一次元配列でも参照型変数となるので、呼び出され側で値を詰めることができるように
>>思います。
>
>1次元配列を上位でnewして渡し、呼び出され側で値を詰めてもらう、
>ということはできますが、その場合、newするには呼び出し側でサイズが
>わかっている必要があります。ここでは、呼び出し側ではサイズがわからないので、
>呼び出され側でnewした配列を参照型変数に格納して返すには、
>配列の配列(2次元配列)が必要になります。
>
>>とありますが、例えばP.226の補足に記載されているような最新投稿を表示する
>>ようなパーツが、
>>仮にテキストなどでは無く画像で最新記事を返す形式だったら、
>>XMLHttpRequestとか同一オリジンポリシーなど
>>考えなくても良いということでしょうか?
>
>そうなりますね。(JSONPだってその意味では抜け穴ですが)
>現状、例えば怪しいサイトのHTMLが社内イントラの画像をimgタグで抜き取ったとして、
>それを怪しいサーバに送ろうとするとHTML5のCanvasを使わなければならず(たぶん)、
>そちらでは別のオリジンから持ってきた画像はデータ化したりできないようにする等
>対策はされていると思いますけれども。
>
>>P.248 注3
>>csvダウンロードできませんでした。リンクを、
>>
>>><a href="/generatecsv/GenerateCSV">CSVダウンロード</a>
>
>HTMLファイルはどこに置きましたか?
>ここでは、
>C:\Tomcat8\webapps\generatecsv\test.html
>のような場所に置いてあることを想定しています。
>
>実際にアプリケーションを開発する際も、HTMLなりJSPなりを
>GenerateCSVと同じTomcatでホストしていれば、/generatecsv/GenerateCSVで
>見えると思います。
>
>>P.249 リスト7-8 5行目
>>下記が誤りのように思います。
>> 誤:"http://localhost/downloadtest/file.mp4;
>> 正:"http://localhost/downloadtest/file.mp4";;
>
>申し訳ありません。これは間違いですね。
>正誤表に載せておきます。
>
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2101] Re:第7章のTIPSについて
返信


投稿者:(ぱ)こと管理人
2018/01/18 00:41:05

Link:
>ただ、CSVダウンロードだけは、まさに
>>C:\Tomcat8\webapps\generatecsv\test.html
>に置いていたのですがダウンロードできませんでした。。
>HTTPから指定するのが正式だと思うので、とりあえず気にしないことにしました!

念のため確認ですが、test.htmlをそこに置いたというのはよいとして、
参照はどのようにしましたか?

http://localhost:8080/generatecsv/test.html

として参照すればダウンロードできると思うのですが、
もし、HTMLファイルをダブルクリックして開いていたらできませんので、
一応確認です……
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2102] Re:第7章のTIPSについて
返信


投稿者:くまきち
2018/01/23 23:36:21

Link:
確かに。。
>http://localhost:8080/generatecsv/test.html
のように指定すればダウンロードできました。
お騒がせしました!


>>ただ、CSVダウンロードだけは、まさに
>>>C:\Tomcat8\webapps\generatecsv\test.html
>>に置いていたのですがダウンロードできませんでした。。
>>HTTPから指定するのが正式だと思うので、とりあえず気にしないことにしました!
>
>念のため確認ですが、test.htmlをそこに置いたというのはよいとして、
>参照はどのようにしましたか?
>
>http://localhost:8080/generatecsv/test.html
>
>として参照すればダウンロードできると思うのですが、
>もし、HTMLファイルをダブルクリックして開いていたらできませんので、
>一応確認です……
>
[ この投稿を含むスレッドを表示] [ この投稿を削除]