Spring - MVC Framework
A estrutura Spring Web MVC fornece arquitetura Model-View-Controller (MVC) e componentes prontos que podem ser usados para desenvolver aplicativos da web flexíveis e fracamente acoplados. O padrão MVC resulta na separação dos diferentes aspectos do aplicativo (lógica de entrada, lógica de negócios e lógica de IU), enquanto fornece um acoplamento fraco entre esses elementos.
o Model encapsula os dados do aplicativo e, em geral, eles consistirão em POJO.
o View é responsável por renderizar os dados do modelo e, em geral, gera saída HTML que o navegador do cliente pode interpretar.
o Controller é responsável por processar as solicitações do usuário e construir um modelo apropriado e passa-o para a visualização para renderização.
O DispatcherServlet
A estrutura do Spring Web model-view-controller (MVC) é projetada em torno de um DispatcherServlet que trata todas as solicitações e respostas HTTP. O fluxo de trabalho de processamento de solicitação do Spring Web MVC DispatcherServlet é ilustrado no diagrama a seguir -
A seguir está a sequência de eventos correspondentes a uma solicitação HTTP de entrada para DispatcherServlet -
Depois de receber um pedido HTTP, DispatcherServlet consulta o HandlerMapping para chamar o Controlador apropriado .
O Controlador recebe a solicitação e chama os métodos de serviço apropriados com base no método GET ou POST usado. O método de serviço configurará os dados do modelo com base na lógica de negócios definida e retorna o nome da visualização para o DispatcherServlet .
O DispatcherServlet obterá ajuda de ViewResolver para selecionar a visualização definida para a solicitação.
Depois que a visualização é finalizada, o DispatcherServlet passa os dados do modelo para a visualização que é finalmente renderizada no navegador.
Todos os componentes mencionados acima, ou seja, HandlerMapping, Controller e ViewResolver são partes do WebApplicationContext w, que é uma extensão do ApplicationContext simples com alguns recursos extras necessários para aplicativos da web.
Configuração Requerida
Você precisa mapear as solicitações que deseja que o DispatcherServlet manipule, usando um mapeamento de URL noweb.xmlArquivo. A seguir está um exemplo para mostrar declaração e mapeamento paraHelloWeb Exemplo de DispatcherServlet -
<web-app id = "WebApp_ID" version = "2.4"
xmlns = "http://java.sun.com/xml/ns/j2ee"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Spring MVC Application</display-name>
<servlet>
<servlet-name>HelloWeb</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWeb</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
</web-app>
o web.xmlO arquivo será mantido no diretório WebContent / WEB-INF de seu aplicativo da web. Após a inicialização deHelloWeb DispatcherServlet, a estrutura tentará carregar o contexto do aplicativo a partir de um arquivo denominado [servlet-name]-servlet.xmllocalizado no diretório WebContent / WEB-INF do aplicativo. Neste caso, nosso arquivo seráHelloWebservlet.xml.
A seguir, a tag <servlet-mapping> indica quais URLs serão tratados por qual DispatcherServlet. Aqui, todas as solicitações HTTP que terminam com.jsp será tratado pelo HelloWeb DispatcherServlet.
Se não quiser usar o nome do arquivo padrão como [servlet-name] -servlet.xml e o local padrão como WebContent / WEB-INF , você pode personalizar o nome e o local desse arquivo adicionando o ouvinte de servlet ContextLoaderListener em seu arquivo web.xml como segue -
<web-app...>
<!-------- DispatcherServlet definition goes here----->
....
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/HelloWeb-servlet.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
Agora, vamos verificar a configuração necessária para HelloWeb-servlet.xmlarquivo, colocado no diretório WebContent / WEB-INF de seu aplicativo da web -
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:context = "http://www.springframework.org/schema/context"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:component-scan base-package = "com.tutorialspoint" />
<bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name = "prefix" value = "/WEB-INF/jsp/" />
<property name = "suffix" value = ".jsp" />
</bean>
</beans>
A seguir estão os pontos importantes sobre HelloWeb-servlet.xml arquivo -
O arquivo [servlet-name] -servlet.xml será usado para criar os beans definidos, substituindo as definições de quaisquer beans definidos com o mesmo nome no escopo global.
A tag <context: component-scan ...> será usada para ativar o recurso de varredura de anotação Spring MVC, que permite fazer uso de anotações como @Controller e @RequestMapping etc.
O InternalResourceViewResolver terá regras definidas para resolver os nomes das visualizações. De acordo com a regra definida acima, uma visão lógica chamadahelloé delegado a uma implementação de visualização localizada em /WEB-INF/jsp/hello.jsp .
A seção a seguir mostrará como criar seus componentes reais, ou seja, Controlador, Modelo e Visualização.
Definindo um controlador
O DispatcherServlet delega a solicitação aos controladores para executar a funcionalidade específica a ele. o@Controllera anotação indica que uma determinada classe desempenha o papel de um controlador. o@RequestMapping a anotação é usada para mapear um URL para uma classe inteira ou um método de manipulador específico.
@Controller
@RequestMapping("/hello")
public class HelloController {
@RequestMapping(method = RequestMethod.GET)
public String printHello(ModelMap model) {
model.addAttribute("message", "Hello Spring MVC Framework!");
return "hello";
}
}
o @Controllera anotação define a classe como um controlador Spring MVC. Aqui, o primeiro uso de@RequestMapping indica que todos os métodos de tratamento neste controlador são relativos ao /hellocaminho. Próxima anotação@RequestMapping(method = RequestMethod.GET)é usado para declarar o métodoprintHello () como o método de serviço padrão do controlador para lidar com a solicitação HTTP GET. Você pode definir outro método para lidar com qualquer solicitação POST no mesmo URL.
Você pode escrever o controlador acima em outro formulário onde você pode adicionar atributos adicionais em @RequestMapping da seguinte maneira -
@Controller
public class HelloController {
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String printHello(ModelMap model) {
model.addAttribute("message", "Hello Spring MVC Framework!");
return "hello";
}
}
o value atributo indica a URL para a qual o método do manipulador é mapeado e o methodatributo define o método de serviço para lidar com a solicitação HTTP GET. Os seguintes pontos importantes devem ser observados sobre o controlador definido acima -
Você definirá a lógica de negócios necessária dentro de um método de serviço. Você pode chamar outro método dentro deste método de acordo com o requisito.
Com base na lógica de negócios definida, você criará um modelo dentro deste método. Você pode usar diferentes atributos do modelo setter e esses atributos serão acessados pela vista para apresentar o resultado final. Este exemplo cria um modelo com seu atributo "mensagem".
Um método de serviço definido pode retornar um String, que contém o nome do viewa ser usado para renderizar o modelo. Este exemplo retorna "hello" como nome de visão lógica.
Criação de visualizações JSP
Spring MVC oferece suporte a muitos tipos de visualizações para diferentes tecnologias de apresentação. Isso inclui - JSPs, HTML, PDF, planilhas do Excel, XML, modelos Velocity, feeds XSLT, JSON, Atom e RSS, JasperReports, etc. Mas, mais comumente, usamos modelos JSP escritos com JSTL.
Vamos escrever um simples hello visualizar em /WEB-INF/hello/hello.jsp -
<html>
<head>
<title>Hello Spring MVC</title>
</head>
<body>
<h2>${message}</h2>
</body>
</html>
Aqui ${message}é o atributo que configuramos dentro do Controlador. Você pode ter vários atributos a serem exibidos dentro de sua visualização.
Exemplos de framework Spring Web MVC
Com base nos conceitos acima, vamos verificar alguns exemplos importantes que o ajudarão a construir seus aplicativos da Web Spring -
Sr. Não. | Exemplo e descrição |
---|---|
1 | Exemplo Hello World do Spring MVC Este exemplo explicará como escrever um aplicativo Spring Web Hello World simples. |
2 | Exemplo de manipulação de formulário Spring MVC Este exemplo explicará como escrever um aplicativo Spring Web usando formulários HTML para enviar os dados ao controlador e exibir um resultado processado. |
3 | Exemplo de redirecionamento de página Spring Aprenda a usar a funcionalidade de redirecionamento de página no Spring MVC Framework. |
4 | Exemplo de Spring Static Pages Aprenda como acessar páginas estáticas junto com páginas dinâmicas no Spring MVC Framework. |
5 | Exemplo de manipulação de exceção de primavera Aprenda como lidar com exceções no Spring MVC Framework. |