質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

2回答

1693閲覧

動的プロジェクトのファイルパスの取得方法

kohey419

総合スコア11

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2021/02/25 12:49

編集2021/02/25 12:59

現在Windousでapacheを使用してWebアプリを作成しています。
ファイルのパスの指定方法についてわからないので質問させてください。

やりたいこと:VPSにデプロイしても動作させるようにしたいです。

現在、フォームから受け取った画像ファイルをデータベースではなく動的プロジェクト内のフォルダに保存しています。

java

1String dirPath = "C:\Users\user\Documents\動的プロジェクト名\WebContent\フォルダ名";

現状ローカルホストで動作させているときは問題ないですが、デプロイすると上記コードのパスが変わると思います。
ですので、現在配置されている動的プロジェクトのファイルパスがわかれば配置場所が変わっても動作するかなと思いました。
そのような方法をご存じでしょうか?

試したこと

java

1request.getContextPath();

上記コードでは動的プロジェクト名しか取得できず無理だなあと思いました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/02/25 12:51

> request.getContextPath(); これはプロジェクト名ではないですよ。 サーブレットか否か、サーブレットとしてもそのどこの配下に置いているかにもよります。
kohey419

2021/02/25 12:56

Webサーバから見たそのアプリのパスですかね? File f = new (request.getContextPath()); で保存したらローカル直下にパス名で保存されしまいました。
guest

回答2

0

そのプロジェクトのフォルダをどっかからとってきてそこからの相対アドレスで表す、ってことになろうかと思いますが。

投稿2021/02/25 13:36

y_waiwai

総合スコア87784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kohey419

2021/02/25 13:42

回答ありがとうございます。 デプロイするときは事前に置きたいサーバー上で置きたいパスを調べて修正してからデプロイというような流れになるのですかね?
y_waiwai

2021/02/25 21:33

なんかのコードで自分自身のパスを取得させてそれを展開するってのでいいんでは
kohey419

2021/02/25 21:40

すみません、そのコードが見つからなく知りたいです・・・
guest

0

ベストアンサー

結構get〇〇Path()ってあるので
インターフェース HttpServletRequest

要件にあわせて使ってください。
Webルート配下に置きたいのか、そうでないのかでも違います。

リソースへのアクセスも配置によっては。

投稿2021/02/25 12:59

編集2021/02/25 13:07
m.ts10806

総合スコア80854

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/02/25 13:00

あとはweb.xmlの指定も影響します。 設定ファイルとの整合性はとること。
m.ts10806

2021/02/25 13:01

「サーバーがどこにたてられているか」にも依存します。 サーバーサイドのRequestを見る以上、サーバー上のパスを指します。
kohey419

2021/02/25 13:22

回答ありがとうございます。探しましたがそれらしいものは見つけられませんでした。 設定ファイルとの整合性というのは最初に表示されるのが例えばindex.jspの場合はApacheの設定で追加するということでしょうか?Webルート配下に置かないとすると何か問題ありますか?
m.ts10806

2021/02/25 14:41

まず設計。 どこに置きたいかを決めてください。
m.ts10806

2021/02/25 22:31

> Webルート配下に置かないとすると何か問題ありますか? 何のファイルをどう参照させたいか次第です。 やり方次第ではWebルートに置く必要はないです。 ファイルの取得や変換、レスポンスを指定する必要があるので多少面倒な手続きが必要なだけ。
kohey419

2021/02/26 02:00

>何のファイルをどう参照させたいか次第です ディレクトリに保存したimgファイルをjspから呼び出しています
m.ts10806

2021/02/26 03:49

imgならサーバールートからの絶対パスにすることってないのでは? コンテキストパスで足ります
kohey419

2021/02/26 04:13

ですが、上記変数のdirPathで指定してあげないとプロジェクト配下ではなくローカル直下に新しくフォルダ作成されて保存されてしまうんですよね… 例えば、String dirPath = request.getContextPath() + “/WebContent/ファイル名” で指定してあげるとその名前のフォルダがローカル直下に作成されてしまいます。
m.ts10806

2021/02/26 04:19

逆にそこではだめな理由は? 画像ファイルでWebから参照させる以上はプロジェクトのWebルート内に置くのは問題ないとは思うのですが。 コンテキストパスよりサーブレットパスかな。 でなければ回答の2つ目に書いたリソースアクセス。
kohey419

2021/02/26 07:32

すみません。知識不足でして… VPSへデプロイ後は/ディレクトリの直下に作成されて保存されるのですかね?そして、jspからコンテキストパスで指定してあげれば持って来れますか?
m.ts10806

2021/02/26 07:42

プログラムで指定した先に保存されます。 /ディレクトリというのがなんのことか不明です。 特別な理由がない限り、保存と参照は同じパスの指定の仕方をします。
kohey419

2021/02/26 08:11

rootディレクトリのことをさしたつもりでした。なんとなくイメージつきましたありがとうございます
m.ts10806

2021/02/26 08:12

rootディレクトリ というのは環境や視点によって様々ありますよ。 コンテキストパス サーブレットパス も視点によっては「ルート」です。
kohey419

2021/02/26 08:49

そうなのですね。知識不足&言葉足らずで申し訳ありません。CentOSにおけるrootです
m.ts10806

2021/02/26 09:32

了解です。 保存箇所は書いたところに保存されるのでそこは決めてください。 画像など静的コンテンツを参照させるのでしたらコンテキストパスは使われる手段です。
kohey419

2021/02/26 09:35

承知しました。詳細まで丁寧にありがとうございます。コンテキストパスを使用して指定しようと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問