Diferenças e conexões entre servlets, filtros, ouvintes, interceptores
1. Conceito
1.Servlet: o servlet é um aplicativo Java executando o lado do servidor, com recursos de plataforma e protocolo, e pode gerar dinamicamente páginas da Web, que funcionam na camada média entre solicitações do cliente e respostas ao servidor.
2.Filter: 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.
3. Lista: Lista, literalmente, pode -se ver que o ouvinte é usado principalmente para ouvir apenas. Através do ouvinte, você pode ouvir uma ação de execução em um servidor da Web e fazer respostas correspondentes de acordo com seus requisitos.
Em termos simples, é um componente funcional que executa automaticamente o código quando os três objetos de aplicativo, sessão e solicitação são criados ou quando os atributos de modificação e remoção são adicionados a ele.
4.Interceptor: É programação na orientação tangencial, que é chamar um método antes do seu serviço ou método ou chamar um método após o método.
Por exemplo, o proxy dinâmico é uma implementação simples de um interceptador. Você pode imprimir uma string antes de ligar para o método (ou fazer outras operações de lógica de negócios), também pode imprimir uma string depois de chamar o método ou até mesmo fazer operações de lógica de negócios quando lançar uma exceção.
5. Servlet, filtro, ouvinte são configurados no web.xml, o interceptador não está configurado no web.xml, o interceptor Struts está configurado no struts.xml. O interceptador para a primavera é configurado no spring.xml.
2. Pedido de carregamento
A ordem de carregamento do web.xml é: context -param -> ouvinte -> filtro -> servlet
3. Responsabilidades
1.Servlet:
(1) Crie e retorne uma página completa HTML contendo conteúdo dinâmico com base na natureza da solicitação do cliente
(2) Crie uma parte da página HTML (fragmento HTML) que pode ser incorporado em uma página HTML existente
(3) Leia dados ocultos enviados pelo cliente
(4) Leia os dados de exibição enviados pelo cliente
(5) Comunicar -se com outros recursos do servidor (incluindo aplicativos de banco de dados e java)
(6) Envie dados ocultos ao cliente através do código de status e cabeçalho de resposta.
2.Filter:
(1) O filtro pode pré -processar as solicitações do usuário antes que uma solicitação atinja o servlet ou também pode processar respostas HTTP ao sair do servlet
(2) Antes de executar o servlet, primeiro execute o programa de filtro e faça algum trabalho de pré -processamento para ele.
(3) Modificar a solicitação e a resposta de acordo com as necessidades do programa
(4) Interceptar a execução do servlet após a chamada do servlet.
3.Listener:
8 Interfaces do ouvinte são fornecidas na especificação Servlet2.4, que podem ser divididas em três categorias, como segue:
(1) Interface Listne R relacionada ao ServletContext. Incluindo: ServletContextListener, ServletContextTtributElistener
(2) Interface Listner relacionada à HTTPSession. Incluindo: httpSessionListner, httpSessionAttributElistener, httpSessionBindingListener, httpsessionActivationListener
(3) Interfaces do ouvinte relacionadas ao servletRequest, incluindo: servletRequestListner, servletRequestattributelistener
4. Diferença
1.Servlet: O processo do servlet é curto. Depois que o URL é transmitido, ele é processado e retornado ou recorrente a uma página especificada por você. É usado principalmente para controlar antes do processamento de negócios.
2.FilTer: o processo está encadeado. Depois que o URL é transmitido, após a verificação, o processo original pode ser mantido para baixo e recebido pelo próximo filtro, servlet, etc., e depois que o servlet for processado, ele não continuará sendo passado para baixo.
A função do filtro pode ser usada para manter o processo da maneira original ou para dominar o processo, enquanto a função do servlet é usada principalmente para dominar o processo. O filtro pode ser considerado como um suplemento ao servlet (limpeza suave).
O filtro pode ser considerado uma "variante" do servlet. É usado principalmente para pré-processamento de solicitações de usuário e também pode pós-processo httpsevletResponse. É uma cadeia de processamento típica.
A diferença entre ele e servlet é que ele não pode gerar uma resposta diretamente ao usuário.
O processo completo é: filtrar pré-processos de solicitações do usuário, entrega as solicitações ao servlet para processamento e gera uma resposta e, finalmente, filtra os pós-processos da resposta do servidor.
3. Regras correspondentes
Quando uma solicitação é enviada ao contêiner do servlet, o contêiner subtraia primeiro a URL solicitada ao caminho do contexto do aplicativo atual como URL de mapeamento de servlet. Por exemplo, estou visitando http: //localhost/test/aaa.html (meu contexto de aplicativo é teste).
O contêiner removerá http: // localhost/tes e usará a parte restante /aaa.html para corresponder ao mapeamento do servlet, ou seja, usará a parte restante para corresponder ao padrão de URL do servlet configurado em web.xml.
NOTA: Existem certas regras para esse processo de correspondência de mapeamento, e cada correspondência acabará por corresponder a apenas um servlet. (Isso é diferente do filtro)
Regras de correspondência de servlet: quando um servlet corresponde com sucesso, ele não será mais comparado
Caminho preciso correspondente:
Exemplo: por exemplo, o padrão de URL de servletha é /teste e o padrão de URL do servletB é /*. Neste momento, se o URL que eu acessar for http: // localhost/teste,
Neste momento, o contêiner primeiro executará o caminho preciso correspondendo e descobrirá que /teste é exatamente correspondido pelo servleta, então ligue para o ServletA e não prestará atenção a outros servlets.
Combinagem do caminho mais longo:
Exemplo: o padrão de URL de servleta é/teste/*, e o padrão de URL do servletB é/teste/a/*. Ao acessar http: // localhost/test/a,
O contêiner selecionará o servlet com o caminho mais longo a corresponder, que é o servletB aqui.
Combinação de extensão: se o último segmento do URL contiver uma extensão, o contêiner selecionará o servlet apropriado com base na extensão.
Exemplo: Patadrão de URL de Servleta: *.Action
4. Servlets e filtros são todos destinados a URLs e assim por diante, enquanto os ouvintes são direcionados a objetos, como a criação de sessões e a ocorrência de sessão.
Pode ser usado para: Spring integra struts, injetar atributos na ação do Struts, implementa tarefas de tempo de aplicativos da web, estatísticas sobre o número de usuários on -line etc.
5. Interceptador interceptador, semelhante ao filtro, mas está configurado em struts.xml, não em web.xml, e não para URLs, mas para ação. Quando a página envia uma ação,
A execução de operações de filtragem é equivalente ao mecanismo de plug-in fornecido pelo Struts1.x. Pode ser considerado o primeiro é o filtro fornecido pelo Struts1.x, e o interceptador é o filtro fornecido pelo Struts2.
Diferenças do filtro:
(1) Ele não está configurado no web.xml, mas está configurado em struts.xml e está com a ação (2) a própria ação pode especificar qual interceptador usar para fazer as coisas antes de recebê -lo
6. A diferença e a conexão entre filtros e interceptores no Struts2:
(1) O interceptador é fornecido pelo Struts2, enquanto os filtros são fornecidos pelo Standard
(2) O interceptador intercepta o método de destino de ação de destino, enquanto os filtros têm como alvo vários recursos da Web
(3) O interceptador está configurado em struts.xml, enquanto o filtro é configurado no arquivo web.xml
(4) Os interceptores são organizados juntos usando uma pilha de interceptores, enquanto os filtros estão ligados de acordo com os recursos interceptados. A ordem de execução é determinada por sua posição no arquivo de configuração.
(5) Os interceptores são baseados no mecanismo de reflexão Java, enquanto os filtros são baseados em retornos de chamada de função.
(6) Os filtros dependem de recipientes de servlet, enquanto os interceptores não dependem dos contêineres do servlet.
(7) Os interceptores só podem trabalhar em solicitações de ação, enquanto os filtros podem trabalhar em quase todas as solicitações.
(8) O interceptador pode acessar objetos no contexto de ação e na pilha de valor, mas o filtro não pode.
(9) Durante o ciclo de vida de ação, o interceptador pode ser chamado várias vezes, enquanto o filtro só pode ser chamado uma vez quando o contêiner é inicializado.
Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!