我创建了一个小的java servlet,并希望通过URI动态映射内容。例如,如果有人调用以下URI http://example.com/yell/2013-08-01/first-article
,我的servlet应该从数据库中获取日期和标题的内容,并将其响应给客户端。
我不确定实现这个'正确'的模式。我的想法是在<url-pattern>/yell/*</url-pattern>
听取,用request.getRequestURI(
获取路径并将其拆分为'/'
字符。这是常见的模式吗?你会建议什么?我想REST不是'正确的'方式吗?一个小例子就是创造。谢谢你的提示!
答案 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\" }";
}
}