🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

4回答

9954閲覧

tomcatのファイルのURLを表示させたい

hosi032

総合スコア5

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2019/11/07 20:49

編集2019/11/08 14:20

参考書の通り実践しtomcat導入から始めました。localhost:8080には繋がるのですが、参考書記載のファイルhello.textを作ったところHTTPステータス 404 – 見つかりません。というメッセージが出ます。
entryというコンテキスト名 ファイルのパスはhello.txtです。
なのでhttp://localhost:8080/entry/hello.txtと打ちました。
何故ちゃんと表示されないかわかる方いらっしゃいましたらどうかご教授お願いいたします。
参考書→基礎からのサーブレット 第3版
OS→windows10

tomcat9インストール→logging.propertiesのUTF-8をSJISにして文字化けを直す→起動してlocalhost:8080を表示→webappsの下にentryフォルダを作り、その下にhello.txtを作りましたが表示されず上記のメッセージ→eclipseのtomcatからも試しましたが同じ結果でした。
tomcat9
Javaは使っていません。
hello.txt中身→「Hello This is Text」をAtomで打ち込んだだけです。

entryの下にHTML文書 「Hello.html」を作りましたがこちらは正常に表示されました。
内容

<HTML> <HEAD> <TITLE>HTML Example</TITLE> </HEAD> <BODY> <H2>Hello</H2> This is HTML </BODY> </HTML> です。

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

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

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

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

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

m.ts10806

2019/11/07 22:49

その「参考書」が何か提示されないと分かりませんし、「その参考書を持っている人がアドバイスをくれるはず」と思っていても持っている人がいない可能性もあります。 であれば、自身が対応した手順をきちんと書くべきです。 導入したOS、バージョンなども忘れずに記載してください。 それに404は珍しいエラーでもないので調べがつかないものでもありません。
yoorwm

2019/11/08 00:50

というか、拡張子がtextとtxt混在しているけど、一文字のミスも自力で見つけられないような状態ではここでアドバイス求めても無駄なのではないでしょうか?
hosi032

2019/11/08 09:32

m.ts10806さん、回答ありがとうございます。仰っていただいた内容追記いたしました。調べても初めの段階のエラーのパターンは出てきましたが、ファイル名のみでのパターンはありませんでした。 yoorwmさん、回答ありがとうございます。拡張子につきましてはこちらで質問させていただく際の誤字で、実際のエラーとは関係ございません。ご指摘ありがとうございます。訂正しました。
m.ts10806

2019/11/08 10:41

それに、誰が持っているか分からないとはいえ、「参考書」の名称は記載された方が良いです。 誰も検証できない その状態が的確なアドバイスを得られる機会を失します。 「localhost:8080を表示」だけでは何をどう表示させたのか分かりませんしね。
m.ts10806

2019/11/08 13:36

こちらは回答ではなく質問への追記修正依頼のコメント欄です。 結構重要なので、きちんと整理して質問本文に追記してください。 というか、Eclipse入れてるのにわざわざAtomで?
m.ts10806

2019/11/08 13:40

一応「hello.txt」の中身もあわせてご提示ください。 ちなみにJavaは1行も打ってないということですかね。 tomcatのバージョンは幾つを入れたのでしょうか。 そこも含めて「再現可能な手順」をご提示ください。バージョンも全て同じでないと意味がありません
m.ts10806

2019/11/08 13:51 編集

>目的はブラウザでテキストファイルを表示させること こちらの聞き方が悪かったですね。単にテキストファイルをブラウザで開きたい「だけ」ならtomcatなど入れずともブラウザにファイルを直接ドロップすれば良いのでそれは「実際の目的」ではないことになります。 書籍名称からすると「Webアプリケーション開発」になるはずです。 その1段階として「Webサーバーをたててそこに置いたファイルをhttp通して実行する」わけですよね。 大目的はあくまで「Webアプリケーション」であるということは忘れてはいけません。 ・・・・となると書籍を馬鹿正直に進めるよりも全てEclipse内部のtomcatで済ませてしまった方が「開発」には入れますけど・・・(実際の現場でtomcatの設定して・・・とかほとんどないですし)
hosi032

2019/11/08 14:17

eclipseを使っていないのは仰る通り馬鹿正直に参考書に従っているからですね。目的も仰る通りです。ただ参考書通りに初めていきなりエラーが出てしまい、ただ内容を模倣しただけなのに「なぜ?」という疑問が頭から離れなくなってしまいました。
m.ts10806

2019/11/08 14:19

回答しています。ご参考まで。
m.ts10806

2019/11/08 14:29

別途確認した結果を「追記」としています。そちらもご確認ください。
guest

回答4

0

ベストアンサー

※※※※※※※※※※※※※※※※※※※※追記前の仮説※※※※※※※※※※※※※※※※※※※※
tomcatデフォルト(現在公式からダウンロードできる最新の9)であれば「ROOT」ディレクトリがあるはずです。
そこがいわゆる「WebRoot」(ドキュメントルート)になっていて
仰っている「tomcatのトップページ」はそのROOTディレクトリ配下のindex.jspが実行されて表示されています。

つまり、http://localhost:8080/が見ているディレクトリは
tomcatインストールディレクトリ/webapps/ROOT/であり、基本的にはそこからのパスとなります。

ということで、静的ファイルはROOT配下に置けば良いということになります。

質問者さんの参照しようとしているディレクトリ・ファイルはROOT配下ではなくwebapps配下に置かれたということで、そもそもブラウザからアクセスできない領域に置かれているため、ROOT配下にないので404となったわけですね。

※※※※※※※※※※※※※※※※※※※※/追記前の仮説※※※※※※※※※※※※※※※※※※※※

当方の環境と確認手順です。

・Windows
・tomcat9 ダウンロードページ

手順
0. ダウンロードページより「64-bit Windows zip 」をダウンロードし、PC内の任意のフォルダに展開
0. tomcat展開ディレクトリ/bin/配下でコマンドプロンプトにてstartup.batを実行し、起動
0. http://localhost:8080/をURLとしてブラウザで実行。tomcatのトップページ表示を確認
0. ROOTディレクトリ配下に「test」ディレクトリを作り、「aa.txt」を作り「test」とだけ入力し保存
0. http://localhost:8080/test/aa.txtをURLとしてブラウザで実行。

結果(FireFoxですがブラウザは関係ないです):
イメージ説明

余談:
・・・でとりあえず表示は出来るようになったのですが、
実際のアプリケーション開発はIDE(Eclipseなど)上で行うことがほとんどですし、
ローカルに入れたtomcatで確認することが多いかと言うと、ちょっと微妙。
私が関わってきたプロジェクトもあくまでEclipse内でWebサーバー立ち上げてブラウザで確認していました。
そもそもテキストファイル表示するためだけに環境整えるわけではないと思うので、
そこは正直なところ飛ばしてもいいんじゃないかなと思う次第です。

提示された書籍は2010年出版のようですし、今から学ぶとしたらちょっと古すぎるかなと。
使われてるtomcat9のリリースはWikipediaによると2018年1月ですしね(資料により若干時期に揺れがあるようですが)
書籍とは確実にバージョンが違います。
Webサーバーだと仕様にそこまで大きな違いはないかもしれませんが、中にはマイナーバージョンアップでディレクトリ構成が変わってしまうフレームワークもあるので、やはり書籍は自身が導入しようとしている環境にあわせるべきですし、新しい方が良いのは言うまでもありません。

Webサーバー内包したEclipseが出ているように便利な時代です。
環境構築部分はある程度ショートカットして、早いところHello Worldしてプログラミングに入りましょうよ。

追記

ただ、当方環境ではwebapps/test1としたaa.txtもhttp://localhost:8080/test1/aa.txtでアクセスして表示されました。
ディレクトリ名、ファイル名を変更すると404になり、URLを変更後の名前に合わせるときちんと表示されます。

URLが間違っているか、置き場所が間違っているかどちらかではないでしょうか。

つまり、ほぼ同じようにやって再現確認できないので、あとはこれまでのヒントを元に自身で試行錯誤してもらうしかない状況です。

よく「外部CSSが反映されない」という質問が上がってきますが、それと同じく
URLが間違っているか、正しい場所にファイルがないか、ファイルが破損しているか

のいずれかだと思います。

投稿2019/11/08 14:06

編集2019/11/08 14:59
m.ts10806

総合スコア80875

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

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

hosi032

2019/11/08 14:40

ご丁寧にありがとうございました。初心者にもすごくわかりやすかったです。疑問に答えるだけでなく、学習に対するアドバイスまでありがとうございます。仰られたことが御尤もなので、今後はこういう場面で時間を使わずに早くプログラミングに取り掛かりたいと思います。本当に助かりました。
m.ts10806

2019/11/08 14:45 編集

一応、「解決済み」とされたのでしたら、 当件がご自身の環境にてどのように解決したか書いてもらえると、アドバイスも活きますので。 (自分の環境で検証したこととか仮説とかもあったので、長々と書いてますが、追記も含めると結局は他の回答と同じことを言っています)
guest

0

TomcatへWebアプリケーションをどのように配置しているのかで変わりますが、

EclipseなどのIDEで作成したものでしたら、プロジェクト内の WebContent 直下に配置し、サーバにこのプロジェクトを搭載(デプロイ)して、サーバを再起動すれば参照できます。

投稿2019/11/08 04:06

A-pZ

総合スコア12011

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

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

hosi032

2019/11/08 13:36

回答ありがとうございます。webappsの下にentryフォルダを作り、その下にhello.txtを作りました。eclipseでは内部ブラウザから入れるか試したのみです。
guest

0

Tomcatのフォルダの中の/webapps/entry/の中にhello.textを入れていますか?

これはWindowsでもLinuxでも同じです。

投稿2019/11/07 23:53

tiqua_nibio

総合スコア62

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

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

hosi032

2019/11/08 13:34

回答ありがとうございます。入れております。
guest

0

hello.txt を作る場所を間違ってるんでしょう。

どこに作ったんでしょうか

投稿2019/11/07 22:10

y_waiwai

総合スコア88038

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

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

A-pZ

2019/11/08 04:06

質問は質問に記載しましょう
hosi032

2019/11/08 13:38

webappsの下にentryを作り、その下にhello.txtです。参考書の模倣しただけの段階で躓いてしまいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問