2011-08-03 3 views
3
<servlet> 
    <servlet-name>Hello</servlet-name> 
    <servlet-class>HelloWorld</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>Hello</servlet-name> 
    <url-pattern>/HelloWorld.do</url-pattern> 
</servlet-mapping> 

はなぜのurl-patternタグのservlet-mapping 内側に使用します。なぜではないサーブレットタグそのもの。

これは単なるタグのように見えます。

servlet/jspのスペック作成者がそうすることに決めたか、または存在の背後にある何らかの論理的理由があるからですか?
jsp/servletのweb.xml(デプロイメント・ディスクリプタ)で<servlet-mapping>を使用するのはなぜですか?

答えて

5

これは、サーブレットが複数のプロトコルをサポートすることを目的としたという事実だけではなく、HTTPの可能性が高いです。 URLパターンはHTTPのみに固有であるため、サーブレットのHTTP URLパターンへのマッピングは、servletタグの代わりにservlet-mappingタグで行われ、サーブレットのより一般的なプロパティを宣言するために使用されます。

+0

ポイントを増やすためのリンクをご提供いただけますか?あなたの答えは最も有望なようです。 – EMM

+0

'servlet'タグはサーブレット仕様書2.5の中で' servletTypeはサーブレットを宣言するために使われます。これにはサーブレットの宣言型データが含まれています。プロトコルの独立性は何年にもわたって読まれたさまざまな記事から推測され、 'GenericServlet'クラスのサーブレットAPIドキュメントから推測されます。 –

2

同じサーブレットにリンクしている別のサーブレットを作成しようとすると、サーブレットが複数のサーブレットマッピングを持つことができます。

<servlet> 
    <servlet-name>Hello</servlet-name>  
    <servlet-class>HelloWorld</servlet-class> 
</servlet> 
<servlet-mapping>  
    <servlet-name>Hello</servlet-name>  
    <url-pattern>/HelloWorld.do</url-pattern> 
</servlet-mapping> 
<servlet-mapping>  
    <servlet-name>Hello</servlet-name>  
    <url-pattern>/HelloWorld2.do</url-pattern> 
</servlet-mapping> 
+0

私は以前の方法と全く同じだと思っていましたが、サーブレットタグで再度書くことはできませんか?毎回サーブレットマッピングタグを書く必要があります。ちょうど2つのURLのパターン。私は20を持っていればどうですか? – EMM

+0

ロールを壊す方法は不思議だと思います。多くの人がその問題を見つけるので、Webアプリケーション用のフレームワークがたくさんあるので、簡単に活用できます。 – zhzhzhh

0

標準サーブレットのURLパターンの長所と短所は、初期のMVCフレームワーク(Strutsなど)の多くの原動力でした。正規表現のマッチング、またはアリスタイルのパターンのサポートはありません。 URL除外パターンなどのサポートはありません。

仕様がどのように(そしてそれでもなお)続けられているかについては、わかりません。確かに分かっているのは、スペックを書いた人だけです。

1

私はVineet Reynoldによると、サーブレットマッピングは、ネットワーク内の通信に利用できるさまざまなプロトコルをサポートすることに同意します。 therfore、url-patternタグは、サーブレットがプロトコルのタイプ、すなわち、サービスを要求するHTTP。

+0

優れていますが、あなたはそれを言うために別の答えを投稿する必要はありません。あなたの気持ちが分かれば答えを投票してコメントを投稿してください。 – EMM

+0

あなたの懸念に感謝しています...病気は、次回からこのことを念頭に置いてください。しかし、私は彼のサポートで少し情報を提供しました。 – ankit

関連する問題