JavaRush /Blogue Java /Random-PT /Parte 8. Escrevendo um pequeno aplicativo em spring-boot

Parte 8. Escrevendo um pequeno aplicativo em spring-boot

Publicado no grupo Random-PT
Este material é a parte final da série “Introdução ao Desenvolvimento Empresarial”. Artigos anteriores: Parte 8. Escrevendo um pequeno aplicativo em spring-boot - 1Vejamos 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. Parte 8. Escrevendo um pequeno aplicativo em spring-boot - 2Clique 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 Parte 8. Escrevendo um pequeno aplicativo em spring-boot - 3e 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
Parte 8. Escrevendo um pequeno aplicativo em spring-boot - 4Parte 8. Escrevendo um pequeno aplicativo em spring-boot - 5Na próxima janela, selecione o nome e localização do projeto no sistema de arquivos: Parte 8. Escrevendo um pequeno aplicativo em spring-boot - 6Clique no botão Concluir. O projeto foi criado. Temos a seguinte estrutura de projeto: Parte 8. Escrevendo um pequeno aplicativo em spring-boot - 7Aqui 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 thtag pé uma ferramenta do mecanismo de template Thymeleaf. Graças a ela, o valor da tag pserá 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: Parte 8. Escrevendo um pequeno aplicativo em spring-boot - 9Nos logs de inicialização, veremos que nossa aplicação web foi iniciada na porta 8080: Parte 8. Escrevendo um pequeno aplicativo em spring-boot - 10E isso significa que podemos ir para a página no navegador: http:// localhost:8080 : Parte 8. Escrevendo um pequeno aplicativo em spring-boot - 11Aqui a página index.html foi exibida para nós. Vamos seguir o link para greetin: Parte 8. Escrevendo um pequeno aplicativo em spring-boot - 12Durante 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: Parte 8. Escrevendo um pequeno aplicativo em spring-boot - 13Tudo funciona como esperado. Agora tente rastrear o caminho da variável name:
  1. O usuário passou o valor do parâmetro nome=Amigo -> via url
  2. O controlador processou nossa ação, aceitou a variável name e configurou o atributo model, com o nome name e o valor aceito ->
  3. 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!

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION