/ / Web.xml - padrão de url mapeado duas vezes - java, servlets, web.xml, filtros de servlet

Web.xml - padrão de url mapeado duas vezes - java, servlets, web.xml, filtros de servlet

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 № 1

O 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.