Spring:如何将非调度程序请求重定向到调度程序?

时间:2011-06-10 06:56:49

标签: spring spring-mvc

我有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() { ... }
}

2 个答案:

答案 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中的小迷你应用程序。