2013-05-26 3 views
0

Итак, я работаю над блогами, но я заставляю вас конформировать контент с четкими URL-адресами. В принципе, я хочу, чтобы каждое сообщение создавалось с уникальным URL-адресом, например «http://www.site.com/article/article_name». На данный момент у меня есть мои URL-адреса выглядят как «http://www.site.com/article.jsp?article=article_name», где article.jsp генерирует разное содержание через:Сервлеты: как манипулировать URI

request.getParameter("requestedArticleName"); 

Я знаю отображение сервлета для вызова сервлетов на основе шаблонов URL, но я не совсем конечно, как это работает, и нужно ли мне это вообще.

+0

Вы пытались UrlRewriteFilter (http://tuckey.org/urlrewrite/)? –

+0

Нет. Я посмотрю. – ManOnTheMoon

ответ

0

Один из способов, который вы можете использовать для создания своего собственного Filter, который получит все запросы от http://www.site.com/article/ * и перенаправит их на ваш article.jsp? Name = *.

Пример:

public class URLFilter implements Filter 
{ 
    @Override 
    public void init(FilterConfig config) throws ServletException 
    { 

    } 

    @Override 
    public void doFilter(ServletRequest p_oRequest, ServletResponse p_oResponse, FilterChain p_oChain) throws IOException, ServletException 
    { 
     String sName = oRequest.getRequestURI(); 

     if(sName.lastIndexOf('/') != -1) 
     { 
      sName = sName.substring(sName.lastIndexOf('/') + 1); 
     } 
     else 
     { 
      // You could trap that in your article.jsp to show error message 
      sName = "404"; 
     } 

     p_oRequest.getRequestDispatcher("/article.jsp?name=" + sName).forward(p_oRequest,p_oResponse); 
    } 
} 

Конечно вам нужно будет улучшить это и сделать некоторые проверки. Также этот код не был протестирован, но основан на моем URL-интерфейсе JSF CMS URLFilter.

Не забудьте включить это в ваш web.xml!

<filter> 
    <filter-name>URLFilter</filter-name> 
    <filter-class>path.to.your.URLFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>URLFilter</filter-name> 
    <url-pattern>/article/*</url-pattern> 
</filter-mapping> 
Смежные вопросы