2012-02-09 3 views
2

Я делаю проект новостей. У нас есть категория новостей, категория новостей и подробная страница новостей. Я хочу иметь URL-адрес:Java urlet mapping, url pattern

  • Категория: "http://mysite.com/my-dynamic-category".
  • Страница подкатегории: «http://mysite.com/my-dynamic-category/sub-category».
  • Страница новостей: «http://mysite.com/my-dynamic-category/sub-category/my-new-alias.html».

Три сервлета: КатегорияСервель, ПодкатегорияСервер, НовостиДеталиСервер. Как я могу сопоставить url с соответствующим сервлетом в web.xml? Я использую сервер eclipse и tomcat.

+0

Так категории будет динамичным, а не статичным, не будут ли они? Если это так, вы можете использовать параметры запроса вручную, какая категория должна использоваться –

+0

да, категория и подкатегория являются динамическими. Можете ли вы показать мне небольшой пример с параметрами запроса? – xuanhung2401

+0

CONTEXT_ROOT/SOME_SERVLET /? Maincategory = myMainCategory & subcategory = mysubcategory где maincategory и подкатегория являются параметрами, а myMainCategory и mysubcategory являются их значениями –

ответ

1

Я предполагаю, что для такого рода задач простого URL-адреса в web.xml недостаточно. Если вы хотите, чтобы динамические URL-адреса отображались в ваших веб-ресурсах (например, сервлетах), вам нужно будет выполнить некоторую перезаписи URL-адресов. Простейшим было бы искать некоторый URL-фильтр перезаписи, например, от Tuckey с учебником здесь: http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html

+0

Решенный, большое спасибо. – xuanhung2401

0

Eclipse не имеет ничего с вашей проблемой, вы также можете использовать vi или emacs. Ваша проблема может быть решена путем перезаписи URL-адресов (либо на стороне обратного прокси, либо на что-то вроде: http://www.tuckey.org/urlrewrite/) - просто переназначайте свои хорошие блокирующие URL-адреса реальным сервлетам.

Или вы можете просто использовать фильтр, проанализировать путь сервлета и использовать информацию для визуализации ваших шаблонов.

0

Если ваша подкатегория статична, вы можете использовать отображение URL как/*/подкатегорию, где * maps к CategoryServlet.java, оттуда вы можете получить путь запроса, который содержит/динамическую категорию/подкатегорию, вы можете извлечь свою подкатегорию и динамическую категорию. При этом вы также можете использовать только один сервлет.

1

Я отобразить все адреса в один сервлет в моем веб-приложение, и пусть сам веб-приложение решить, как служить им:

<servlet> 
    <servlet-name>dispatcher</servlet-name> 
    <servlet-class>com.myapp.Dispatcher</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

не Недостаток заключается в том, что мой сервлет контейнер больше не служит статических файлов, я должен написать код, чтобы загрузить их и обслуживать их через веб-приложение или обслуживать их на apache и настроить его, чтобы не отменить прокси-сервер для tomcat для любых статических файлов.

+0

Я думал об этом (например, о Strut framework), но ищем лучший способ. Возможно, это будет urlrewritefilter. Дай мне попробовать. Спасибо. – xuanhung2401

+0

Этот человек имеет элегантный способ справиться со статическим контентом по расширению: http://stackoverflow.com/a/3582215/1145388 –