すべてのリクエストをマップするプロキシサーブレットで作業しています。 私は次のようにweb.xmlファイルを指定:Spring MVC - 静的リソースのHTTP GET要求がカスタムサーブレットによって処理される
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/admin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/home</url-pattern>
</servlet-mapping>
<servlet>
<description>Servlet to proxy all requests.</description>
<display-name>ProxyServlet</display-name>
<servlet-name>ProxyServlet</servlet-name>
<servlet-class>com.epam.alpha.servlets.ProxyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ProxyServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>home</welcome-file>
</welcome-file-list>
この方法は、すべての要求は、ホーム・ページと管理ページ用に予約されている*//家及び/管理者を除いて、私のプロキシサーブレットによって処理されます。これはいいです!
ここでは、jspページでjavascriptとcssファイルを使用したいと考えています。それらはresourcesフォルダの下に置かれるので、それらは適切な場所にあります。
次が指定されたサーブレットのcontext.xmlで:
<resources mapping="/resources/**" location="/resources/" />
問題は、私のサーブレットは、静的なリソースへのすべてのGETリクエストをキャッチしていることです。リソースが見つかって使用されている場合、ProxyServletのサーブレットマッピングをコメントアウトすると、もちろんこの場合はプロキシサーブレットは機能しません。一方、jspからjavascriptファイルを参照しないと、プロキシサーブレットが動作します(静的リソースの要求は発生しません)。助けて!
私はあなたの問題を理解していません。プロキシサーブレットで何をしたいですか?それは実際に何をしていますか? –
URLにマップされるエイリアスがありますが、目的はlocalhost上で実行されるようにこれらのページにアクセスすることです。例: - エイリアス 'google'はhttp://www.google.comにマッピングされます。 http:// localhost:8080/ProxyServlet/googleと入力するとgoogle.comが表示されます。それが目標です。プロキシサーブレットは上記の要求を処理し、応答を読み取り、結果をブラウザに表示します。実質的にすべてのリクエストは、保守の目的で使用されるhomeやadminのようないくつかの予約されたエイリアスを除いて、作成したこのプロキシサーブレットによって処理される必要があります。 – cslacika
jsファイルとcssファイルをSpringのリソースメカニズムで処理する必要がある場合、/ resourcesパスをSpringディスパッチャサーブレットにマップする必要があります。したがって、/ resources/*のマッピングをappServletに追加するとすべてが修正されるはずです。 –