StackOverflowError in der servlet-mapping url-pattern "/*"

Habe ich eine Reihe von JSP-Seiten, und ich möchte zu verstecken .jsp-Erweiterung (nach ein bisschen recherche scheint es, ist es gut für SEO).

Einer Lösung, die ich stieß, war das folgende:

<servlet>
    <servlet-name>mypage</servlet-name>
    <jsp-file>/some-page.jsp</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>mypage</servlet-name>
    <url-pattern>/some-page</url-pattern>
</servlet-mapping>

Und das funktioniert zwar, ich glaube, ich habe diese Zuordnung für jede jsp-Seite auf meiner Website.

Stieß ich auf eine andere Lösung hier gepostet (Einfach freundliche URL ' s): Versteckte Funktionen von JSP - /Servlet -

... was nutzt ein einfaches servlet zum weiterleiten der Anforderung. In meinem web.xml ich habe Folgendes und es funktioniert gut:

<servlet>
    <servlet-name>MyServletName</servlet-name>
    <servlet-class>myservlets.PrettyUrlServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyServletName</servlet-name>
    <url-pattern>/myservlet/*</url-pattern>
</servlet-mapping>

Nun das problem ist, ich will nicht zu schlagen die URL: www.mydomain.com/myservlet/some-page

Ich wollen, verwenden Sie die URL: www.mydomain.com/some-page

Also habe ich das url-pattern "/*"

<servlet>
    <servlet-name>MyServletName</servlet-name>
    <servlet-class>myservlets.PrettyUrlServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyServletName</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

Aber das verursacht eine Endlosschleife:

    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)

Denen ich mir nicht sicher, wie Sie Sie zu beheben. Irgendwelche Ideen?

InformationsquelleAutor nogridbag | 2012-05-01

Schreibe einen Kommentar