O filtro é um trecho de código reutilizável que pode ser usado para converter solicitações, respostas e informações do cabeçalho HTTP. O filtro não é como um servlet. Não pode gerar uma solicitação ou resposta. Ele apenas modifica uma solicitação para um determinado recurso ou modifica uma resposta de um determinado recurso.
Recentemente, ao usar scripts, usei cookies para identificar o computador, adicionar filtragem e estudar cuidadosamente servlets e filtros. A principal diferença é:
O ciclo de vida de um filtro geralmente passa pelos três estágios a seguir:
As características dos servlets são:
inicialização
O método init () é chamado quando o contêiner primeiro carrega o filtro. Esta classe contém uma referência ao objeto de configuração do filtro neste método. Nossos filtros não precisam fazer isso, pois não há informações de inicialização usadas e aqui é apenas para fins de demonstração.
filtro
A maioria das vezes do filtro é consumida aqui. O método Dofilter é chamado pelo contêiner e as referências à solicitação do servlet, a resposta do servlet e os objetos da cadeia de filtro na cadeia de solicitação/resposta são aprovados ao mesmo tempo. O filtro tem a oportunidade de processar a solicitação, passe a tarefa de processamento para o próximo recurso na cadeia (chamando o método Dofilter na referência do objeto da cadeia de filtro) e, em seguida, processe a resposta quando o controle de processamento retornar ao filtro.
Destruição
O contêiner chama o método Destroy () imediatamente antes da coleta de lixo para poder executar qualquer código de limpeza necessário.
Em relação a Chain.Dofilter (solicitação, resposta), sua função é encaminhar a solicitação ao próximo objeto na cadeia de filtro. O próximo aqui se refere ao próximo filtro, se não houver filtro, é o recurso solicitado. Geralmente, os filtros são uma cadeia e existem apenas algumas configurações no web.xml. Conectado um por um
Solicitação -> filtro1 -> filtro2 -> filtro3 -> .... -> Recurso de solicitação.
O filtro é uma operação em cadeia; portanto, ao processar um único filtro, você deve finalmente pular para o servlet para responder à solicitação.
Se você passar por corrente, o método da cadeia.Dofilter (solicitação, resposta) irá imediatamente para o servlet interceptado e retornará ao filtro. A cadeia é equivalente a uma porta, saia desta porta e depois retorne desta porta. O método para chamar o filtro é configurá-lo no web.xml e você precisa configurar um padrão de URL que seja o mesmo que o servlet que você precisa interceptar.
<!-Configurar um filtro-> <filter> <filter-name> suibianxie </ftrid-name> <filter-class> com.etoak.filter.myencoding </ftrids-class> <!-configure um parâmetro privado-> <ing-param> <amam-name> </param-name> <a parameter> <iniMam> <ing-param> <aam-name> A ordem da interceptação está relacionada à ordem do mapeamento-> <Filter-Mapping> <Filter-Name> suibianxie </filter-name> <!-Observe que isso deve ser consistente com o padrão de URL do servlet a ser interceptado, o que significa que o filtro intercepta antes do servlet-<url-Pattern>/servlet/test </url-patn> <Filter-Name> suibianxie2 </filter-name> <filter-Class> com.etoak.filter.naming </ftrids-class> </ftrhter> <tril-mapping> <filter-name> suibianxie2 </filter-name> <url-Pattern>/servlet/test </rel-Pattern> </filter-mom-mapping> <url-Pattern>/servlet/teste </rel-Pattern> <let-Mapping> <Verlet-class> com.etoak.servlet.test </servlet-class> </servlet> <Servlet-mapping> <Servlet-name> teste </ervlet-name> <url-pattern>/servlet/teste </url-tattern> </ervlet-mapping>
O exposto acima é a diferença e a conexão entre servlets e filtros introduzidos pelo editor. Espero que seja útil para todos!