Какой лучший способ сопоставления / newyork с /area.jsp?id=1? - PullRequest
0 голосов
/ 23 октября 2010

Я использую

http://example.com/area.jsp?id=1

и хотите создать путь сопоставления

http://example.com/newyork

отображение на /area.jsp?id=1

Как мне это лучше всего сделать?

Примечание: я использую Resin (Java) + Nginx

Ответы [ 3 ]

2 голосов
/ 23 октября 2010

Используйте модуль перезаписи nginx для сопоставления этого одного URL с адресом area.jsp? Id = 1

http://wiki.nginx.org/NginxHttpRewriteModule

1 голос
/ 23 октября 2010

Это моя идея, создать фильтр в вашем веб-приложении, когда вы получаете запрос, например /area.jsp?id=1, в методе doFilter, перенаправьте запрос на http://example.com/newyork.

В web.xml:

<filter>
    <filter-name>RedirectFilter</filter-name>
    <filter-class>
        com.filters.RedirectFilter
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>RedirectFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Напишите следующий класс и поместите его в WEB-INF/classses:

class RedirectFilter implements Filter 
{
public void doFilter(ServletRequest request, 
                     ServletResponse response, 
                     FilterChain chain)
    throws IOException, ServletException
{


      String scheme = req.getScheme(); // http 
      String serverName = req.getServerName(); // example.com 
      int serverPort = req.getServerPort(); // 80 
      String contextPath = req.getContextPath(); // /mywebapp 
      String servletPath = req.getServletPath(); // /servlet/MyServlet 
      String pathInfo = req.getPathInfo(); // area.jsp?id=1 
      String queryString = req.getQueryString(); 
      if (pathInfo.IndexOf("area.jsp") > 1) 
      {
          pathInfo   = "/newyork"; 
          String url = scheme+"://"+serverName+contextPath+pathInfo; 
          filterConfig.getServletContext().getRequestDispatcher(login_page).
          forward(request, response);
     } else
     {
        chain.doFilter(request, response);
        return;
     }
}
}
0 голосов
/ 23 октября 2010

В вашей базе данных, где вы храните эти идентификаторы области, добавьте столбец с именем «slug» и заполните его именами, которые хотите использовать."Слизняк" для id 1 будет "Нью-Йорк".Теперь, когда приходит запрос на один из этих URL-адресов, ищите строку по slug, а не по id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...