StackOverflowError в сопоставлении сервлета с URL-адресом -шаблон «/ *»

У меня есть набор страниц JSP, и я хочу скрыть расширение.jsp (после небольшого исследования. кажется, это хорошо для SEO ).

Одно решение, с которым я столкнулся, было следующим:


    mypage
    /some-page.jsp


    mypage
    /some-page

И хотя это работает, я считаю, что мне нужно настроить это сопоставление для каждой страницы jsp на моем сайте.

Я наткнулся на другое решение, опубликованное здесь (Удобный URL-адрес):Скрытые функции JSP/Servlet

... который использует простой сервлет для пересылки запроса.В моем web.xml у меня есть следующее, и он работает нормально:


    MyServletName
    myservlets.PrettyUrlServlet


    MyServletName
    /myservlet/*

Теперь проблема в том, что я не хочу нажимать на URL-адрес :www.mydomain.com/myservlet/some -страница

Я хочу использовать URL-адрес :www.mydomain.com/some -page

Поэтому я изменил шаблон URL-адреса -на "/ *"


    MyServletName
    myservlets.PrettyUrlServlet


    MyServletName
    /*

Но это вызывает бесконечный цикл :

    Exception in thread "http-bio-8080-exec-1" java.lang.StackOverflowError
            at org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:219)
            at org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:228)
           .
           .
            at org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:228)
            at org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:228)
            at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
            at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
            at myservlets.PrettyUrlServlet.doGet(PrettyUrlServlet.java:22)

, который Я не знаю, как исправить. Любые идеи?

5
задан Community 23 May 2017 в 11:52
поделиться