faceis de adicionar ou remover discretamente, sem afetar os componentes existentes, de modo que eles podem ser usados em uma variedade de combinacoes, como Registo e autenticacao transformacao e depuracao de saida para um cliente especifico esquema de codificacao Descompactando e conversao de entradaSolucaoCrie filtros pluggable para processar servicos comuns de forma padrao, sem exigir alteracoes no codigo do nucleo do pedido de transformacao.Os filtros de interceptar as solicitacoes de entrada e respostas de saida, permitindo que o pre-processamento e pos-processamento. Somos capazes de adicionar ou remover estes filtros discretamente, sem exigir alteracoes no nosso codigo existente.Nos somos capazes, com efeito, para decorar o nosso processamento principal com uma variedade de servicos comuns, como seguranca, registro de depuracao, e assim por diante. Esses filtros sao componentes que sao independentes do codigo do aplicativo principal, e eles podem ser adicionados ou removidos de forma declarativa. Por exemplo, um arquivo de configuracao de implantacao pode ser modificada para criar uma cadeia de filtros. O mesmo arquivo de configuracao pode incluir um mapeamento de URLs especificos para essa cadeia de filtro. Quando um cliente solicita um recurso que corresponde a esse mapeamento URL configurada, os filtros da cadeia sao cada processados em ordem antes de o recurso solicitado alvo e invocado.EstruturaFigura 6.1 representa o padrao Intercepting Filter.PARTICIPANTES E RESPONSABILIDADESFigura 6.2 representa o padrao Intercepting Filter.FilterManagerO FilterManager gerencia o processamento do filtro. Cria o FilterChain com os filtros adequados, na ordem correta, e inicia o processamento.FilterChainO FilterChain e uma colecao ordenada de filtros independentes.FilterOne, FilterTwo, FilterThreeEstes sao os filtros individuais que sao mapeados para um alvo. O FilterChain coordena o seu tratamento.AlvoO alvo e o recurso solicitado pelo cliente.EstrategiasEstrategia Custom FilterO filtro e implementado atraves de uma estrategia personalizada definida pelo desenvolvedor. Isso e menos flexivel e menos poderoso do que o padrao preferido Filtro estrategia, que e apresentado na proxima secao e so esta disponivel em embalagens suportam a especificacao servlet 2.3. O Custom Filter estrategia e menos potente, porque nao pode fornecer para o acondicionamento de objetos de solicitacao e resposta de uma forma padrao e portatil. Alem disso, o objeto do pedido nao pode ser modificado, e algum tipo de mecanismo de buffer deve ser introduzida se os filtros sao para controlar o fluxo de saida. Para implementar a Estrategia Custom Filter, o desenvolvedor pode usar o padrao Decorator [GoF] para embrulhar filtros em torno da logica do nucleo de processamento de pedido. Por exemplo, pode haver uma depuracao do filtro que envolve um filtro de autenticacao. Exemplo 6.1 e Exemplo 6.2 mostram como este mecanismo pode ser criado por meio de programacao:Exemplo 6.1 Implementacao de um Filtro - de Depuracaopublic class DebuggingFilter implements Processor { private Processor target; public DebuggingFilter(Processor myTarget) { target = myTarget; } public void execute(ServletRequest req, ServletResponse res) throws IOException, ServletException { //Do some filter processing here, such as // displaying request parameters target.execute(req, res); }}OuvirLer foneticamenteExemplo 6.2 Implementacao de um Filtro Processador Corepublic class CoreProcessor implements Processor { private Processor target; public CoreProcessor() { this(null); } public CoreProcessor(Processor myTarget) { target = myTarget; } public void execute(ServletRequest