Um web.xml dos nossos contém o seguinte trecho.
<servlet>
<servlet-name>testServlet</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>testServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<filter>
<filter-name>anotherServlet</filter-name>
<filter-class>com.test.anotherServlet</filter-class>
</filter>
<filter-mapping>
<filter-name>anotherServlet</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>
Eu preciso entender como o contêiner mapeia quando um URL * .htm (digamos, hello.htm) é encontrado .. o que acontece quando tal solicitação acontece.
Respostas:
1 para resposta № 1O segundo mapeamento é para um filtro, não um servlet.
Quando uma solicitação chega no contêiner do servlet, ela é primeiramente passada por uma cadeia de qualquer filtro, depois para o servlet e, em seguida, retorna pelos filtros na ordem inversa.
Os filtros têm uma API ligeiramente diferente dos servlets: existe um método chamado doFilter()
que recebe um ServletRequest
e um ServletResponse
. Ele chama o resto da cadeia via chain.doFilter
com os mesmos parâmetros; no final decadeia de filtros, esses parâmetros são passados para o servlet. Assim, os filtros podem alterar ou mesmo substituir o objeto de solicitação que entra e o objeto de resposta que sai.
Há um pouco mais de informação Aqui.