Como mapear um Servlet para obter informações sobre o caminho extra com getPathInfo ()
Pergunta
Estou tendo um problema onde Tomcat é tratar informações de caminho extra como parte do nome do servlet. Isso está quebrando um monte de funcionalidade tranquilo em nosso webapp (nós usamos Informação extra caminho ao invés de? Name = pares de valor para as ligações amigáveis ??rastreador).
Ele estava funcionando corretamente antes, mas ele quebrou depois de adicionar mapeamentos explícitos e remover o servlet Invoker
que anteriormente usado para servir os nossos servlets. Por exemplo, considere o seguinte link:
MyServlet
costumava ser chamado corretamente, e "/ param1 / param2 / param3" foi retornado por getPathInfo()
na HttpServletRequest
.
Agora, parece que Tomcat está tentando carregar MyServlet / param1 / param2 / param3 como o servlet:
[23 / Set / 2008: 16: 44: 23 -0700] "GET / Servlet / MyServlet / param1 / param2 / param3 HTTP / 1.0" 404
Aqui é a forma como eles são definidos e mapeados no web.xml, e apenas bater " http://mydomain.com/servlet/MyServlet " fino funciona.
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.myclass.etcetera.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/servlet/MyServlet</url-pattern>
</servlet-mapping>
Solução
Você precisa mapeá-lo para / servlet / MyServlet / *
Está faltando a fuga "/*".