2014-03-05 47 views
0

我DispatcherServlets:Servlet的模式

<servlet> 
    <servlet-name>users</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>users</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

<servlet> 
    <servlet-name>get</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>get</servlet-name> 
    <url-pattern>/get/</url-pattern> 
</servlet-mapping> 

所有請求都委託給第一控制器。我想創建兩個Servlet,

  1. 有了這樣localhost:8080/myapp/myrequest
  2. 要求如localhost:8080/myapp/get/something

我必須設置什麼模式的要求嗎?

+1

爲什麼你首先有兩個servlet,而不僅僅是一個? –

回答

3

模式

<url-pattern>/get/</url-pattern> 

只處理請求

.../get/ 

它不會處理

.../get/something/else 

它會查找完全匹配。

模式

<url-pattern>/</url-pattern> 

是特殊的比賽尚未匹配的一切。

換句話說,如果你想在第二個servlet來匹配一切開始/get,將其更改爲

<url-pattern>/get/*</url-pattern> 

在我看來,這並沒有太大的意義,因爲一個DispatcherServlet應該是單點進入一個應用程序。你應該適當地修改你的控制器。

+2

一般而言,您希望有一個「DispatcherServlet」,但有些情況下需要不同的配置,因此有多個「DispatcherServlet」實例。 (這也是「ContextLoaderListener」上下文充當父級的原因)。 –

0
<servlet> 
    <servlet-name>users</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>users</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

對於這個代碼塊你需要給請求的,

localhost:8080/myapp/myrequest<br> 
localhost:8080/myapp/orWhatever 



<servlet> 
    <servlet-name>get</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>get</servlet-name> 
    <url-pattern>/get/</url-pattern> 
</servlet-mapping> 

對於這個代碼塊,你需要給請求作爲,

localhost:8080/myapp/get
only

相關問題