0

私は2、3年(一部のASP、ほとんどはPHP)Web開発者であり、最近2年間でJava/JSPを採用しました。

私が繰り返し試したが、頭を悩ませ続けていることの1つは、webappsフォルダーではない別の場所で動作するJSPアプリケーションをセットアップする方法です。私のアプリケーションをwebappsからロックアウトすることは、私にとって問題ではないようです。

誰かがこれを分解するのを手伝ってもらえますか、それともそれを概説するどこかに投稿するように私に指示できますか?

私は何度もグーグルで検索し、apache.org Webサイトのドキュメントを読んで再読しましたが、それでも理解できないようです:(

「分解された」サイトをセットアップしようとしています(フォルダーとファイルは分離されています-WARの一部ではありません)。

server.xmlファイルを編集できることは知っていますが、編集する必要はありません(重要ではありません...編集しようとしても、失敗します)。

パスの仕組みに何かが欠けていることはわかっています。私は理解していると思いますが、そうは思いません。

どんな助けでも大歓迎です!!

このサイトが大好きです。

-質問をより詳細に言い換えることにしました-

次のようなディレクトリ構造があるとします(**注:webprojectはtomcat / webappsディレクトリにありません)

/webproject
/webproject/htdocs
/webproject/htdocs/images
/webproject/htdocs/images/logo.gif
/webproject/java
/webproject/java/page1.jsp
/webproject/java/page2.jsp 

次のURLでプロジェクトを表示できるように、仮想ホストをセットアップしたいと思います: http:// webproject

私が必要としているのは2つのことだけだと思います(私はapacheを使用しています):

  1. httpd.confファイルの「VirtualHost」エントリ。
  2. ある種の「コンテキスト」ファイルまたはどこかのフラグメント。

私は正しいですか?もしそうなら、誰かが私がこれらの2つの要素を定義するのを手伝ってくれるでしょうか?

また、いずれかのjspページからlogo.gifファイルを参照するためにドメイン相対URLを使用する場合、パスはどのようになりますか?

page1.jspからpage2.jspを参照するためにドメイン相対URLを使用したい場合はどうなりますか?

4

2 に答える 2

0

ただし、ルートから始まるパス (つまり、img src="/htdocs/images/foo.gif") を使用してリソース (画像、スクリプトなど) を参照するパスがアプリケーション内にある場合、それは見つかりません。

これらのパスは、現在のリクエスト URL (JSP ページの 1 つ) に相対的な URL であると想定されているため、ローカル ディスク ファイル システムの場所に相対的なローカル ディスク ファイル システム パスではないことに注意してください。を使用して/htdocsいると、つまり、後者を考えたように見えます。

したがって、たとえば、JSP ページが によって要求されhttp://example.com/context/page.jspfoo.gifによって実際に利用可能であるhttp://example.com/context/images/foo.gif場合、次のいずれかのページ相対 URL を使用する必要があります。

<img src="images/foo.gif">

またはドメイン相対 URL:

<img src="/context/images/foo.gif">

またはプロトコル相対 URL:

<img src="//example.com/context/images/foo.gif">

または絶対 URL:

<img src="http://example.com/context/images/foo.gif">
于 2010-02-10T23:24:54.260 に答える
0

OK、これに苦労した後、ようやく機能するようになりました。これが最善の (または正しい!) 方法であるとは言いませんが、最終的には、Windows マシン (WAMP を実行) と Linux を実行するリモート サーバーでローカルに機能しました。

リストされているパスは、私の環境の場所です。明らかに、これは状況によって異なる場合があります。

BEFORE-FIRST (Windows のみ)

Windows では、hosts ファイルに新しい「ドメイン」のエントリを設定する必要があります。

WIN - C:\Windows\System32\drivers\etc\hosts

127.0.0.1 webproject.local

最初

httpd.conf を編集して仮想ホストを追加する必要があります

WIN - C:\wamp\bin\apache\Apache2.2.11\conf\extra\httpd-vhosts.conf

Linux - /etc/httpd/conf/httpd.conf

 <VirtualHost *:80>
     DocumentRoot "C:\wamp\www\webproject"
     ServerName webproject.local
 </VirtualHost>

2番目

server.xml でホストコンテキストをセットアップします。私がオンラインで読んだことから、server.xml の編集はお勧めできませんが、これが私が理解できる唯一の方法でした。

WIN - C:\Program Files (x86)\Apache Software Foundation\Tomcat 5.5\conf\server.xml

Linux - etc/tomcat5/server.xml

<Host name="webproject" debug="0" appBase="webapps" unpackWARs="true">
   <Context path="" docBase="C:/wamp/www/webproject"/>
   <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="webproject.local_error-log." suffix=".txt" timestamp="true"/>
</Host>

私が正しくないと思うことは、ファイルが「webapps」フォルダーにない場合でも、「webapps」を appBase として使用することでした。なぜこれが機能しているのかはわかりません...機能しない状況でも機能する状況の1つであることを恐れています。私よりずっと頭のいい人が何か洞察を提供してくれることを願っています。

于 2010-02-26T22:07:32.380 に答える