通过URI获取内容

时间:2013-08-02 16:20:44

标签: java servlets get

我创建了一个小的java servlet,并希望通过URI动态映射内容。例如,如果有人调用以下URI http://example.com/yell/2013-08-01/first-article,我的servlet应该从数据库中获取日期和标题的内容,并将其响应给客户端。

我不确定实现这个'正确'的模式。我的想法是在<url-pattern>/yell/*</url-pattern>听取,用request.getRequestURI(获取路径并将其拆分为'/'字符。这是常见的模式吗?你会建议什么?我想REST不是'正确的'方式吗?一个小例子就是创造。谢谢你的提示!

3 个答案:

答案 0 :(得分:2)

如果您有特殊的理由手工编写servlet,那么您的方法应该有效。另一方面,Spring MVC系统虽然需要一些额外的设置来启动,但却使得这类任务非常简单:您只需编写一个常规Java方法,该方法需要Date和{{1} (或两个String s),用String注释,然后就完成了。

答案 1 :(得分:0)

您可以使用正则表达式来提取文章的日期和名称。

String regExp = "yell\\/(\\d{4}-\\d{2}-\\d{2})\\/(.*)";
Pattern pattern = Pattern.compile(regExp);
Matcher matcher = 
pattern.matcher("yell/2013-08-01/first-article");
if( matcher.matches() ){
    // date
    String date = matcher.group(1);
    // article name
    String articleName = matcher.group(2);
}

答案 2 :(得分:0)

使用rest的其他解决方案,可以使用Spring或Java EE,如果选择Java EE,则需要支持像Glassfish这样的Java EE的应用程序服务器,Apache tomcat不支持Java EE应用程序。

然后你可以按照这样的教程:

http://www.vogella.com/articles/REST/article.html

以下是您的代码的外观。

@Path("yell/{date}/{articleName}")
public class RestService {
    @GET
    @Produces("application/json")
    public String getJson(@PathParam("date") String date, 
      @PathParam("articleName") String articleName) {
        return "{ \"content\" : \"// TODO\" }";
    }
}