Este material é a parte final da série “Introdução ao Desenvolvimento Empresarial”. Artigos anteriores:
Vejamos o exemplo mais simples de implementação MVC usando Spring-MVC como exemplo. Para fazer isso, vamos escrever um pequeno aplicativo Hello World em spring-boot. Para que você possa repetir tudo sozinho, darei instruções passo a passo. Primeiro escreveremos um pequeno aplicativo e depois o analisaremos.
Etapa 1: Crie um aplicativo Spring-Boot no IntelliJ IDEA
Usando Arquivo -> Novo -> Projeto... crie um novo projeto. Na janela que se abre, no menu lateral esquerdo, selecione Spring Initializr, selecione Project SDK e deixe a opção Initializr Service URL como padrão.
Clique no botão Avançar. Na próxima janela precisamos selecionar os parâmetros do projeto. Teremos um projeto Maven. Selecione Tipo - Projeto Maven, preencha Grupo e Artefato
e clique em Avançar. Na próxima janela precisamos selecionar os componentes do Spring Framework que iremos utilizar. Precisamos apenas de dois:
- Spring Web é um componente que nos permitirá criar aplicações Web. Este componente inclui Spring MVC.
- Thymeleaf - O chamado mecanismo de modelo. Algo que nos permitirá transferir dados de Java para páginas HTML
Na próxima janela, selecione o nome e localização do projeto no sistema de arquivos:
Clique no botão Concluir. O projeto foi criado. Temos a seguinte estrutura de projeto:
Aqui estamos interessados em 2 arquivos: pom.xml - descritor de implantação. Algo que permite importar de forma rápida e fácil bibliotecas de diferentes frameworks para o nosso projeto, bem como algo onde configuramos a montagem da nossa aplicação. Nosso aplicativo é construído usando Maven, pom.xml é o arquivo de configuração deste sistema de construção. Classe Java - MvcDemoApplication. Esta é a classe principal da nossa aplicação, a partir da qual lançaremos nosso projeto spring-boot. Para começar, basta executar o método principal desta classe. Aqui está o código desta classe, bem como o arquivo pom.xml: MvcDemoApplication:
@SpringBootApplication
public class MvcDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MvcDemoApplication.class, args);
}
}
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.javarush</groupId>
<artifactId>mvc_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mvc_demo</name>
<description>Spring MVC Demo</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Passo 2. Crie páginas da web
Nossa aplicação será extremamente simples. Teremos uma página principal - index.html, dentro da qual haverá um link para a página de boas-vindas - saudação.html. Na página de saudação exibiremos a saudação. Vamos implementar a capacidade de enviar um nome de saudação para a página saudação.html por meio de parâmetros de URL. Vamos criar a página principal da nossa aplicação - index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Main page</title>
</head>
<body>
<p>Get your greeting <a href="/greeting">here</a></p>
</body>
</html>
Agora vamos criar a página saudação.html:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>
Aqui, em uma página HTML atípica, você pode ver uma tag: O
<p th:text="'Hello, ' + ${name} + '!'" />
atributo
th
tag
p
é uma ferramenta do mecanismo de template Thymeleaf. Graças a ela, o valor da tag
p
será o texto “Olá,“ + o valor da variável
name
, que definiremos a partir do código Java.
Etapa 3: crie um controlador
Dentro do pacote mvc_demo criaremos um pacote contoller, dentro do qual criaremos nosso controlador, HelloWorldController:
@Controller
public class HelloWorldController {
@RequestMapping(value = "/greeting")
public String helloWorldController(@RequestParam(name = "name", required = false, defaultValue = "World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
}
Por um lado há muito pouco código, mas por outro lado há muita coisa acontecendo. Vamos começar a análise. A anotação @Controller indica que esta classe é um controlador. Os controladores no Spring processam solicitações HTTP para endereços específicos. Nossa classe possui um método helloWorldController, que é marcado com a anotação - @RequestMapping(value = "/greeting"). Esta anotação nos diz que este método processa solicitações HTTP GET para o endereço /greeting. Em outras palavras, esse método funcionará se alguém acessar /greeting. Este método retorna String. De acordo com Spring-MVC, o método controlador deve retornar o nome da visualização. A seguir, o Spring procurará um arquivo html com o mesmo nome, que será retornado como resposta à solicitação HTTP. Como você pode ver, nosso método retorna o nome da página web que criamos anteriormente - saudação. Nosso método leva 2 argumentos. Vejamos eles: Parâmetro 1: @RequestParam(name = "name", require = false, defaultValue = "World") String name. A anotação @RequestParam afirma que o parâmetro String name é um parâmetro url. Os parênteses de anotação indicam que este parâmetro na url é opcional (required = false), se estiver ausente, o valor do parâmetro String name será World (defaultValue = "World"), e se estiver presente, então este parâmetro na url será chamado nome (nome = "nome") Pode haver muita coisa que não está clara aqui. Vamos dar exemplos. A tabela abaixo mostra qual será o valor do parâmetro String name para diferentes opções de acesso ao endereço /greeting (com e sem parâmetros na URL)
URL de exemplo |
Valor do parâmetro do nome da string |
/saudações |
Mundo |
/saudação?name=Amigo |
Amigo |
/saudação?name=Zor |
Zor |
Parâmetro 2: O segundo parâmetro é o modelo Modelo. Este parâmetro é um modelo. Este modelo consiste internamente em vários atributos. Cada atributo possui um nome e um valor. Algo como pares de valores-chave. Usando este parâmetro, podemos transferir dados do código Java para páginas HTML. Ou, na terminologia MVC, transfira dados do Modelo para a Visualização. Resta analisar a última linha. A forma como passamos dados de Java para HTML ou de Model para View. O corpo do método contém a seguinte linha:
model.addAttribute("name", name);
Aqui criamos um novo atributo chamado nome e atribuímos a ele o valor do parâmetro nome. Lembre-se, recentemente discutimos a tag:
<p th:text="'Hello, ' + ${name} + '!'" />
Dissemos que o valor da tag p será o texto “Hello”, + o valor da variável name, que definiremos a partir do código Java. Definimos esse valor usando a linha
model.addAttribute("name", name);
Etapa 5. Iniciar
Para iniciar, precisamos executar o método principal na classe MvcDemoApplication:
Nos logs de inicialização, veremos que nossa aplicação web foi iniciada na porta 8080:
E isso significa que podemos ir para a página no navegador:
http:// localhost:8080 :
Aqui a página index.html foi exibida para nós. Vamos seguir o link para greetin:
Durante esta transição, nosso controlador funcionou. Não passamos nenhum parâmetro pela URL, portanto, conforme indicado na anotação, o valor do atributo name assumiu o valor padrão World. Vamos agora tentar passar o parâmetro via url:
Tudo funciona como esperado. Agora tente rastrear o caminho da variável name:
- O usuário passou o valor do parâmetro nome=Amigo -> via url
- O controlador processou nossa ação, aceitou a variável name e configurou o atributo model, com o nome name e o valor aceito ->
- Do modelo, esses dados iam para a View, para a página saudação.html e eram exibidos para o usuário
Isso é tudo!
Hoje apresentamos a você um tópico bastante amplo e interessante sobre MVC (Modelo - Visualização - Controlador). Este é o final da série, cujo objetivo é apresentar o que você precisa saber antes de iniciar o desenvolvimento empresarial.
Deixe tópicos de seu interesse nos comentários - nós faremos isso! |
GO TO FULL VERSION