ファイル出力先にServletContext#getRealPathを使うな
タイトルに書いたような、ファイル出力先として ServletContext#getRealPath
を利用しているサンプルコードが見つかる、と聞いて検索してみたところ、日本語、非日本語にかかわらず確かにそのようなサンプルコードは散見されました。
例えば Qiita では(順不同):
- SpringMVC と JasperReports で帳票を印刷してみた 番外編(画像編)
- jsp(servlet)の画像アップロードについて
- JSP/サーブレット ファイルアップロードの実装
- 画像の保存と紐付けの同時アップロード
- 画像アップロードのパスの設定について
どうして利用しては駄目なのか
Stack Overflowに理由を記載しています。
私の説明だけでは不安なのであれば、次も参照してみてください。
- Recommended way to save uploaded files in a servlet application - Stack Overflow
ちなみに、The Java EE Tutorial見てみたらクライアントが path 指定するようになってました…まあ、変に正しい実装はこれだと混乱させることは無い分まし、なの、かな…?