在给定HttpServletRequest的情况下,为网页提供服务的好模式是什么?

时间:2012-05-24 19:51:29

标签: java velocity dynamic-pages

我已经创建了一个抽象基类Page,它可以找出如何构建动态网页。我正在努力想出一个基于Page生成GET的好方法,该请求以HttpServletRequest的形式出现。例如......

public class RootServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) {

        Page page = Page.generatePage(request);

        // do stuff with page and write back response
    }
}

generatePage()方法中,我不得不弄清楚要请求的页面,构建正确的页面,然后返回它的实例。但我不确定如何做得好......例如,我需要处理这些类型的URL:

http://example.com/       : build the default home page
http://example.com/ab123  : build the page corresponding to the given token "ab123"
http://example.com/about/ : build the "about" page
http://help.example.com/  : build the "help" page

这些“页面”中的每一个都扩展了抽象基类Page,因此他们知道如何构建自己,但我不确定如何确定需要构建AboutPage,或者HelpPage,而不是默认的HomePage

我正在使用Apache Velocity作为模板引擎,因此这些Page对象实际上只包含生成该页面所需的重要信息,例如要使用的样式和脚本以及相关内容显示在页面上。

我认为有更好的方法可以做到这一点,而不是查看URL的末尾,看看“about”是否是构建AboutPage的子字符串。有什么建议?

2 个答案:

答案 0 :(得分:2)

有许多现成的工具框架可以帮到您。至少我建议Spring MVC可以使用velocity。

答案 1 :(得分:1)

Spring MVC有一个很好的方法来处理这种使用带有注释方法的控制器来处理你想要的特定模式。

他们在这里有一个很好的示例应用程序:

https://github.com/SpringSource/spring-mvc-showcase

无论如何,使用java代码构建页面不是一个好习惯。