设计一个在Servlet中重定向页面的系统

时间:2014-02-07 07:03:11

标签: java servlets

我需要一些帮助来设计一个系统,我们需要为我们的应用程序动态添加页面重定向规则。

每当请求来到servlet(所有请求都来到这个servlet)时,我必须通过查看某个db或其他资源来检查是否存在重定向的url并相应地重定向。

执行此操作的最佳解决方案是通过apache重写规则,但只要我们对其进行更改就需要部署,因此我们不会寻找此类解决方案。

因此,我们希望移动一种方法,我们希望在db(可以在运行时配置)中配置此规则,这将由我的应用程序获取。为了减少应用程序和数据库之间的连接延迟,我们计划实现边缘缓存。

你能否就这种方法提出自己的想法?

1 个答案:

答案 0 :(得分:0)

选项#1

所有java解决方案,不需要apache,只有像Tomcat这样的servlet容器。如果您还记得规范,则需要在web.xml中定义映射,因此一旦您的代码被执行,更改传入请求URL的任何内容为时已晚,映射已经发生。

  • 子选项a:您不使用任何MVC框架,如Spring或Struts。将您的代码放入拦截器过滤器并根据您的规则发出http重定向。它具有额外的http请求的缺点,即延迟增加
  • 子选项b:如果你确实使用了一些MVC引擎,它已经通过一些单一编组servlet路由所有请求,这个servlet决定调用哪些过滤器和servlest。扩展此逻辑以注入重写规则。此解决方案具有尽可能最佳的延迟,但在MVC引擎之间不可转移。

选项#2(我可能先实现)

有一个cron作业,它从DB读取您的规则,形成一个新的.htaccess文件并将其放入相应的文件夹中。您不需要重新启动Apache,它会在每次请求时读取它。是的,它会慢一点,但我打赌你不会注意到它,开发成本最多只有1小时。