1. Na aplicação da primavera, temos dois usos de filtragem, um é um interceptador e o outro é, obviamente, um filtro. Apresentamos o uso de filtros no Springboot aqui. O uso de filtros no SpringMVC é basicamente o mesmo, mas há uma pequena diferença na configuração.
2. A função de filtro permite que os usuários alterem uma solicitação e modifiquem uma resposta. O filtro não é um servlet, não pode gerar uma resposta. Ele pode pré -processar a solicitação antes que uma solicitação atinja o servlet ou pode lidar com a resposta ao sair do servlet. Em outras palavras, o filtro é na verdade um "encadeamento de servlet" (cadeia de servlet).
Um filtro inclui:
1) Interceptar antes que o servlet seja chamado;
2) Verifique a solicitação do servlet antes que o servlet seja chamado;
3) modifique o cabeçalho da solicitação e os dados de solicitação, conforme necessário;
4) modifique o cabeçalho da resposta e os dados de resposta, conforme necessário;
5) interceptados após a chamada do servlet.
1. Cenários de aplicação do filtro
Com o entendimento dos filtros de filtro, podemos saber que algum processamento pode ser feito nas três situações a seguir:
1> Decida se o recurso de destino precisa ser acessado controlando a chamada para a cadeia.
Por exemplo, você pode verificar nas permissões do usuário, etc. Determine se o usuário tem permissão para acessar determinados recursos, tem permissão para liberar e não executa o método da cadeia.Dofilter sem permissão.
2> Alguns propósitos são alcançados fazendo algum processamento antes de chamar a cadeia.
Por exemplo, resolva o problema do código ilegal chinês, etc. Antes do método Dofilter, a codificação da codificação e resposta da solicitação de configuração pode ser executada. Você pode até encapsular e decorar a interface de solicitação para lidar com o método chinês de Get Solicle (reescrever o método de solicitação.getParameter correspondente).
3> Alguns propósitos são alcançados fazendo algum processamento depois de chamar a cadeia.
Por exemplo, comprime todo o site. Antes de ligar para o método da cadeia.Dofilter, encapsule e decore o objeto de resposta com a classe A, substitua o método GetOutputStream e substitui o método GetWriter. Inside Classe A, o conteúdo de saída é armazenado em cache no fluxo bytearrayoutputStream e, depois que o método da cadeia.
2. O princípio da interceptação do filtro
Existe um método Dofilter na interface do filtro. Quando o desenvolvedor grava a classe Filter para implementar o método Dofilter e configurar qual recurso da Web interceptar, o servidor da Web chamará o método Dofilter do filtro primeiro antes de ligar para o método de serviço do recurso da Web (determinado pelo mecanismo de acesso interno do servidor).
3. Regras de filtragem
// filtra todos os recursos no aplicativo. Todos os arquivos sob a raiz do aplicativo atual incluem todos os arquivos no subdiretório de vários níveis. Observe que * é precedido por "/" registro.addurlpatterns ("/ *"); // filtra os recursos de arquivo de tipo especificado, todos os arquivos HTML sob a raiz do aplicativo atual. Nota: Não há "/" antes *.html, caso contrário, o erro registro.addurlpatterns (". Html"); // filtra todos os arquivos no diretório especificado. Todos os arquivos no subdiretório Folder_Name (podem ser um subdiretório de vários níveis) sob a raiz do aplicativo atual.addurlpatterns ("/pasta_name/*"); // filtra o registro de arquivo especificado.addurlpatterns ("/index.html");Iii. Aplicativo
@Component @servletComponentscan @webfilter (urlpatterns = "/login/*", filterame = "loginfilter") classe public LogInfilter implementa filtro {@Override public void (filterConfig concompig) lança servleTexception {} @Override Void Void Void servletResponse, filtrohain filterhain) lança ioexception, servletexception {} @Override public void Destroy () {}}4. Explicação:
1. O objetivo desta anotação @Component é entregar o LoginFilter ao contêiner para processamento. Isso é fazer o LoginFilter funcionar
2. @ServletComponents pode ser usado para digitalizar @webfilter para fazer @webfilter funcionar. Obviamente, também é possível explicar o tubo do fio do servlet. Este @ServletComponentsCan é melhor para desinstalar o aplicativo, a configuração geral. Eu tenho apenas um filtro aqui, então não escrevi no aplicativo.
3. @Webfilter é de uso óbvio. Qual link é usado para filtrar e por que o nome do filtro é?
5. Uma breve introdução ao uso do filtro em Springmvc
1. O método de escrita ainda é o mesmo. Ele herda o filtro para implementar 3 métodos para processá -lo.
2. Jogue -o no recipiente: isso precisa ser configurado em web.xml
<filter> <filter-name> loginfilter </ftrid-name> <filter-class> com.troy.boot.filter.loginfilter </filter-class> </filter> <filter-mapping> <lter-name> loginfilter </lter-name> <url-Pattern>/*</url-tattern> </filter-mapping> </filter-name> <url-Pattern>/*</url-tattern> </filter-mapping>
3. Você pode estudar o uso específico sozinho.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.