Servlet模式

时间:2014-03-05 18:31:57

标签: java spring-mvc

My DispatcherServlets:

<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>   

所有请求都委托给第一个Controller。我想创建两个servlet,

  1. 请求localhost:8080/myapp/myrequest
  2. 请求localhost:8080/myapp/get/something
  3. 我必须设置哪些模式?

2 个答案:

答案 0 :(得分:3)

模式

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

仅处理对

的请求
.../get/

它不会处理

.../get/something/else

它寻找完全匹配。

模式

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

是特殊的,匹配未匹配的所有内容。

换句话说,如果您希望第二个servlet匹配以/get开头的所有内容,请将其更改为

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

在我看来,这并没有多大意义,因为DispatcherServlet应该是进入应用程序的单一点。您应该适当地修改控制器。

答案 1 :(得分: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只有