2013-08-02 2 views
0

Я создаю небольшой сервлет Java и хотел бы динамически отображать содержимое URI. Например, если кто-то вызывает следующий URI http://example.com/yell/2013-08-01/first-article, мой сервлет должен получить содержимое по дате и названию из базы данных и откликнуться на него клиенту.Получить контент по 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 отключен, ваш лучший подход - использовать сервлеты и JSP. используйте сервлет для извлечения параметров и использования jsp для отображения результата – mmohab

+0

Да, я сделал это. Просто вернул «Просмотр». Отлично работает, спасибо. – hofmeister

2

Если у вас есть определенная причина для написания сервлета вручную, тогда ваш подход должен работать. С другой стороны, система Spring MVC, требуя некоторой дополнительной настройки для запуска, делает эту задачу безумно легкой: вы просто пишете обычный Java-метод, который принимает Date и String (или два String с), аннотировать его @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); 
} 
Смежные вопросы