1

/Projects「ProjectsServlet」へのリクエストと「ProjectsServlet」を使用してリクエストを処理したいのですが、アクセス中にエラー コード/Projects/SomeProject/が返されます。404/Projects/SomePath/SomeOtherSubPath

プロジェクト名は頻繁に更新されるため、そのたびにサーブレット コードを書き直したくありません。プロジェクト名の単純なパーサーを作成し、指定されたページが存在する場合はサーブレットがロードします。

では、web.xml に構成を記述するにはどうすればよいでしょうか。次のようになります。

<servlet>
  <servlet-name>ProjectsServlet</servlet-name>
  <servlet-class>com.example.ProjectsServlet</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>ProjectsServlet</servlet-name>
  <url-pattern>/Projects/*</url-pattern>
</servlet-mapping>

ただし、「プロジェクト」ルートディレクトリの後のすべてのリクエストも処理しようとしています/Projects/.../...

最良の場合、次のようにマッピングを書きたいと思います。

<servlet-mapping>
  <servlet-name>ProjectsServlet</servlet-name>
  <url-pattern>/Projects</url-pattern>
  <url-pattern>/Projects/*/</url-pattern>
</servlet-mapping>

しかし、それは正しくありません。どうすれば同じことができますか?

4

2 に答える 2

2

私の質問の理解として:

あなたが物事を望むなら

  <servlet-mapping>
    <servlet-name>ProjectsServlet</servlet-name>
   <url-pattern>/Projects</url-pattern>
   <url-pattern>/Projects/*/</url-pattern>
 </servlet-mapping>

2 つのサーブレット マッピングを次のように使用できます。

    <servlet-mapping>
      <servlet-name>ProjectsServlet</servlet-name>
       <url-pattern>/Projects</url-pattern>
   </servlet-mapping>   
    <servlet-mapping>
       <servlet-name>ProjectsServlet</servlet-name>
      <url-pattern>/Projects/*/</url-pattern>
   </servlet-mapping> 

また、「/Projects/*/」などの URL のフィルター (ProjectsServletFilter) にマップし、このフィルターで要求を処理することもできます (404 を送信する必要があるか、別のサーブレットへのチェーンを続行する必要があるかをここで決定します)。

  <filter>
    <filter-name>ProjectsServletFilter</filter-name>
    <display-name>ProjectsServletFilter</display-name>
    <filter-class>ProjectsServletFilter</filter-class>
  </filter>
 <filter-mapping>
    <filter-name>ProjectsServletFilter</filter-name>
    <url-pattern>/Projects/*/</url-pattern>
</filter-mapping>

とにかく、上記のフィルター (ProjectsServletFilter) が 404 エラー コードなどを返さずに正常に実行された場合、"/Projects" url サーブレットが実行されます。

お役に立てば幸いです。

于 2013-09-20T09:58:52.323 に答える