我想通过单个servlet路由所有URL。但是,当我将请求转发给JSP时,请求最终会到达同一个servlet,然后进入无限循环。
有没有办法使用单个servlet处理所有URL,不包括JSP?
理想情况下,我想找到一些方法来使用如下所示的简单servlet映射,并使用一些额外的配置或代码来防止无限循环。
<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>
我可以使用/ public / ,/ app / 等路径集来确保只有深度匹配被路由到Servlet,并且JSP的路径不会。冲突。
<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>
但是,如果可能的话,我更愿意拥有根级路径。
另外,我想避免单独为映射添加根路径。
<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>
因为我不想在两个配置文件中使用映射。