Os interceptores são frequentemente usados no MVC da primavera. Ao configurar os caminhos que precisam ser interceptados, o sub-label <mvc: mapeamento/> é frequentemente usado. Ele possui um atributo de caminho, usado para especificar os caminhos que precisam ser interceptados. Por exemplo:
<mvc: interceptor> <mvc: mapeando path = "/**"/> <bean/> </mvc: interceptor> </mvc: interceptor>
De acordo com a configuração acima, esse interceptador intercepta todas as solicitações.
A correspondência do caminho no MVC da primavera é muito mais flexível que o padrão web.xml. A política padrão implementa org.springframework.util.antpathmatcher. Assim como o nome sugere, o padrão do caminho usa o caminho do estilo Apache Ant. Existem três métodos de correspondência curinga para os caminhos de estilo Apache Ant (listados na tabela abaixo). Isso pode combinar muitos padrões de caminho flexível.
Personagens curinga de formiga de tabela
Curinga | Descrição |
| ? | Combinar com qualquer personagem |
| * | Combine 0 ou qualquer número de caracteres |
| ** | Combine 0 ou mais diretórios |
Exemplo de tabela padrões de caminho do estilo de formigas
| Caminho | Descrição |
| /pp/*.x | Corresponde a todos os arquivos .x sob o caminho do aplicativo |
| /app/p? ttern | Matches /App /Pattern e /App /Pxttern, mas não /App /Pttern |
| /**/exemplo | Matches /app /exemplo, /app /foo /exemplo e /exemplo |
| /app/**/dir/arquivo. | Matches /app/dir/file.jsp, /pp/foo/dir/file.html, /pp/foo/bar/dir/file.pdf e /pp/dir/file.java |
| /**/*.jsp | Corresponde a qualquer arquivo .jsp |
Manutenção
Um aplicativo da Web depende basicamente do mapeamento entre o URL e o processador de solicitação, e o mesmo é verdadeiro para o MVC da primavera, mas o MVC da primavera é como tudo o que o Spring faz (tradutor: flexível, pode configurar todos os tipos de coisas, mas também cria muita complexidade). Certamente não existe apenas uma maneira de mapear o relacionamento entre o URL e o controlador e, de fato, ele permite criar regras e implementações de mapeamento, em vez de confiar nos mapeamentos de URL.
A primavera fornece processamento de mapeamento de URL, e a ordem e o método de processamento dos padrões de caminho não se limitam a nenhuma interface. A implementação padrão da Spring MVC org.springframework.web.servlet.handler. AbstractUrlHandlerMapping corresponderá a um caminho com o padrão de caminho mais longo.
Por exemplo: Dado que uma solicitação é /pp/dir/file.jsp e agora existem dois padrões de correspondência de caminho /**/*.jsp e /pp/dir/*.jsp, então, que padrão o URL corresponderá? O último padrão /pp/dir/*.jsp será correspondido pelo princípio dos caracteres mais longos, que tem mais caracteres do que /**/*.jsp. Observe que esse princípio não é especificado em nenhuma interface de alto nível, mas é um detalhe da implementação.
BeanNameurlHandlerMapping
A implementação da estratégia de mapeamento padrão é a classe org.springframework.web.servlet.handler.beannameurlhandlermapping. Esta classe exige que qualquer feijão que seja possível para lidar com a solicitação deve ter um nome ou alias começando com o caractere de barragem (/). Esse nome ou alias pode ser qualquer nome que esteja em conformidade com o princípio da correspondência do caminho da URL.
Listando um controlador mapeado por um nome de feijão
Código XML
<name bean = "/home"> <propriedade name = "vôoservice" ref = "vôo service"/> </bean>
■ NOTA: Você não pode usar o atributo ID para especificar qualquer caminho de URL, porque (/) caracteres é proibido nas especificações XML para especificar o ID do XML, mas você pode ter atributos de ID e nomes em uma definição de feijão.
É muito fácil de usar e tem algumas desvantagens. Não pode aludir a um protótipo Bean. Em outras palavras, ao usar o BeanNameurlHandlerMapping, todas as classes de processamento de solicitação podem ser apenas singletons. De um modo geral, os controladores são estabelecidos de acordo com singletons, então esse não é um problema muito sério. Além disso, apresentarei controladores nos capítulos seguintes, e haverá apenas alguns tipos de controladores que precisam ser protótipos.
■ NOTA: O protótipo Bean é um feijão que não é de Singleton. Sempre que o método getBean () do ApplicationContext for chamado, uma nova instância do feijão será retornada.
Outro problema com o BeanNameurlHandlerMapping é que o interceptador é aplicado em seu aplicativo. Como o mapa solicitado e o mapa de imaping de feijão estão unidos e não estão separados, é impossível criar relacionamentos complexos entre o controlador e o interceptador. Se você tiver requisitos complexos de mapeamento de solicitações, poderá usar o SimpleUrlHandlerMapping em vez de BeanNameurlHandlerMapping. SimpurlHandlerMapping é outra opção para o BeanNameurlHandlerMapping. SimpurlHandlerMapping aponta diretamente para as duas principais fraquezas do BeanNameurlHandlerMapping. Ele pode mapear processadores de solicitação de tipo de protótipo e permite criar caminhos de mapeamento complexos e flexíveis entre os manipuladores e os interceptores. O algoritmo de mapeamento usa os mesmos componentes básicos que o BeanNameurlHandlerMapping, portanto esse padrão ainda é para mapear os URLs para solicitar manipuladores (solicitar manipuladores), você pode simplesmente declará -lo no ApplicationContext e usar o SimpleurlHandlerMapping. O DispatcheserServlet será encontrado de acordo com o tipo e não criará o Mapper padrão (BeanNameurlHandlerMapping). Isso significa que, se você deseja usar os dois, deve declarar tudo no ApplicationContext.
■ DispatcherServlet PROMPRADO lidará com solicitações na cadeia (tradutor: solicitações de processo em sequência, você pode consultar a cadeia de modo de responsabilidade em filtros e GOFs), o que permite que os mapeamentos sejam processados de acordo com seus requisitos. O processador de mapeamento (mapeamentos manipuladores) implementa a interface OrderedR.
O exposto acima é todo o conteúdo deste artigo sobre a explicação detalhada do princípio da correspondência do caminho do MVC da primavera, espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!