kris14an
kris14an

Reputation: 751

Servlet pattern

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>   

All request are delegate to first Controller. I want to create two servlets,

  1. With request like localhost:8080/myapp/myrequest
  2. Request like localhost:8080/myapp/get/something

What patterns i must set?

Upvotes: 0

Views: 117

Answers (2)

Ram72119
Ram72119

Reputation: 107

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

for this block of code you need to give the request as,

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>   

for this block of code you need to give the request as,

localhost:8080/myapp/get
only

Upvotes: 0

Sotirios Delimanolis
Sotirios Delimanolis

Reputation: 279960

The pattern

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

handles only requests to

.../get/

it won't handle

.../get/something/else

It looks for an exact match.

The pattern

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

is special and matches everything that hasn't been matched.

In other words, if you want the second servlet to match everything starting with /get, change it to

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

In my opinion, this doesn't make much sense as a DispatcherServlet should be the single point of entry into an app. You should instead modify your controllers appropriately.

Upvotes: 3

Related Questions