Java 通过URI获取内容

Java 通过URI获取内容,java,servlets,get,Java,Servlets,Get,我创建了一个小型Javaservlet,并希望通过URI动态映射内容。例如,如果有人调用以下URIhttp://example.com/yell/2013-08-01/first-articleMyservlet应该从数据库中按日期和标题获取内容,并将其响应给客户端 我不确定实现这一点的“正确”模式。我的想法是听/yell/*,用request.getRequestURI()获取路径,并在'/'字符处拆分它。这是常见的模式吗?你有什么建议?我猜休息不是“正确”的方式?一个小例子是create。谢

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


我不确定实现这一点的“正确”模式。我的想法是听
/yell/*
,用
request.getRequestURI(
)获取路径,并在
'/'
字符处拆分它。这是常见的模式吗?你有什么建议?我猜休息不是“正确”的方式?一个小例子是create。谢谢你的提示

如果您有特别的理由手工编写servlet,那么您的方法应该是可行的。另一方面,系统虽然需要一些额外的设置才能启动,但却让这类任务变得异常简单:您只需编写一个常规Java方法,该方法包含一个
日期
和一个
字符串
(或两个
字符串
),并用
@RequestMapping
对其进行注释,完成了。

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

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);
}

其他使用rest的解决方案,您可以使用Spring或JavaEE,如果您选择JavaEE,您需要一个支持JavaEE的应用服务器,比如glassfish,ApacheTomcat不支持JavaEE应用程序

然后,您可以按照以下教程进行操作:

下面是您的代码的外观

@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\" }";
    }
}

您可能想看看这样的东西,这意味着您可以将url重写为查询参数。为什么您认为REST不是正确的方法?Rest将提取所需的所有字段you@boris-蜘蛛谢谢,看起来很漂亮。@mmohab我认为REST是用一种XML模式文件定义的,并返回一个XML结构。我希望动态重定向并在jsp中插入内容。我也可以用REST吗?也许返回JSON并用JavaScript显示内容?@hofmeister是的,你可以用JSON或xml使用rest,我会像rest一样为restI发布一个JEE示例,但是如果客户端禁用了JavaScript,我就不能用它来呈现结果。将客户机重定向到jsp并仅使用REST识别内容可以吗?我想在这种情况下我会破坏REST模式,因为不会返回任何结果。@hofmeister可能是因为禁用了Javascript,所以最好的方法是使用servlet和JSP。使用servlet提取参数并使用jsp显示结果,我做到了这一点。刚刚返回可查看的
。很好,非常感谢。