I want to route all URLs through a single servlet. However, when I forward the request to the JSP, the request again ends up reaching the same servlet, and it goes into an infinite loop.
Is there a way to handle all URLs using a single servlet, excluding JSPs?
Ideally I want to find some way to have a simple servlet-mapping like below, with some additional configuration or code to prevent the infinite looping.
<servlet>
<servlet-name>TestController</servlet-name>
<servlet-class>com.example.TestController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestController</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
I could use sets of paths like /public/, /app/ etc., to ensure that only deep matches are routed to the Servlet and the JSP's path doesn't conflict.
<servlet-mapping>
<servlet-name>TestController</servlet-name>
<url-pattern>/public/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>TestController</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
But, I would prefer to have root level paths if possible.
Also, I want to avoid adding root paths individually to the mapping.
<servlet-mapping>
<servlet-name>TestController</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>TestController</servlet-name>
<url-pattern>/products</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>TestController</servlet-name>
<url-pattern>/store</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>TestController</servlet-name>
<url-pattern>/support</url-pattern>
</servlet-mapping>
Because I don't want to have mappings in two configuration files.