2013-08-02 162 views
0

我創建了一個小型的java servlet,並希望通過URI動態地映射內容。例如,如果有人撥打以下URI http://example.com/yell/2013-08-01/first-article,我的servlet應該從數據庫中獲取日期和標題的內容並將其響應給客戶端。通過URI獲取內容

我不確定實現這個「正確」模式。我的想法是聽取<url-pattern>/yell/*</url-pattern>,獲取路徑request.getRequestURI()並將其分解爲'/'角色。這是常見的模式嗎?你會建議什麼?我猜REST不是'正確'的方式嗎?一個小例子就是創建。感謝您的提示!

+0

您可能想看看類似[urlrewritefilter](http://code.google.com/p/urlrewritefilter/)這意味着您可以將url重寫爲查詢參數。 –

+0

你爲什麼認爲REST不是正確的方法?休息會提取你需要的所有字段 – mmohab

+0

@ boris-the-spider謝謝,看起來非常好。 – hofmeister

回答

0

其他解決方案中使用的休息,你可以使用Spring或Java EE,如果你選擇Java EE中,你需要支持Java EE比如GlassFish應用服務器,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\" }"; 
    } 
} 
+0

我喜歡REST的方式,但是如果客戶端禁用了JavaScript,我不能用它來渲染結果。將客戶端重定向到jsp並僅使用REST識別內容可以嗎?我猜在這種情況下我銷燬了REST模式,因爲沒有結果返回。 – hofmeister

+0

@hofmeister可能因爲Javascript被禁用,你最好的方法是使用servlets和JSP。使用servlet提取參數並使用jsp顯示結果 – mmohab

+0

是的,我做到了。剛剛返回'Viewable'。非常好,非常感謝。 – hofmeister

2

如果您有手動編寫servlet的特殊原因,那麼您的方法應該可行。另一方面,Spring MVC系統雖然需要一些額外的設置才能啓動,但這種任務非常簡單:您只需編寫一個採用DateString(或兩個String)的常規Java方法,使用@RequestMapping對其進行註釋,你就完成了。

+0

+1對於Spring MVC提示。 – hofmeister

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