我有Dispatcher Servlet的标准servlet映射 - /app/*
。我有控制器来处理/notify
个请求。我需要在http://[SERVER]/notify
上将此控制器公开为servlet。如何简单地将所有请求从http://[SERVER]/notify
重定向到http://[SERVER]/app/notify
(但没有其他工具,例如urlrewrite)?我知道我可以编写简单的servlet代替,并在web.xml中设置servlet-mapping,但是想拥有控制器,而不是servlet;)
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
控制器:
@Controller
public class PaymentNotificationController {
@RequestMapping("/notify")
void notify() { ... }
}
答案 0 :(得分:1)
您可以将另一个Dispatcher Servlet放入
<servlet-mapping>
<servlet-name>Notification Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/notify/*</url-pattern>
</servlet-mapping>
并使用与主调度程序servlet相同的XML文件对其进行配置。
答案 1 :(得分:1)
不要打折urlrewrite - 它只需要几纳秒的时间来执行,并且已经花费了数年的时间来尽快完成。
如果你确实抛出了另一个Spring MVC servlet,你将会遇到第二个应用程序上下文,这可能并不理想。 DispatcherServlet是一个前端控制器,它应该是一个 - 所以是的 - 你可以放入你想要的多个,但它们几乎就像你的WAR中的小迷你应用程序。