Sobes.tech
Junior

Como criar uma aplicação web em Java?

sobes.tech IA

Resposta da IA

Criar uma aplicação web em Java pode ser feito usando frameworks e tecnologias do ecossistema Java Enterprise Edition (Java EE) ou Spring.

Principais passos e componentes:

  1. Escolha da tecnologia/framework:

    • Java EE: Usa especificações como Servlet/JSP, JSF, JAX-RS (RESTful), JPA. Requer um servidor de aplicações (Tomcat, Jetty, WildFly, GlassFish).
    • Spring Framework: Framework popular com um amplo conjunto de módulos (Spring MVC, Spring Boot, Spring Data). Spring Boot permite criar aplicações autónomas (standalone) com servidor embutido.
  2. Estrutura do projeto:

    • Usa um sistema de build, por exemplo, Maven ou Gradle.
    • Estrutura típica para uma aplicação web (arquivo WAR):
      ├── src
      │   ├── main
      │   │   ├── java       // Código Java (servlets, controladores, serviços)
      │   │   ├── resources  // Recursos (ficheiros de configuração, propriedades)
      │   │   └── webapp     // Recursos web (HTML, CSS, JS, JSP, WEB-INF)
      │   └── test           // Testes
      └── pom.xml ou build.gradle // Ficheiro de build
      
    • WEB-INF contém web.xml (descriptor de implantação para Java EE) e classes/bibliotecas.
  3. Frontend:

    • HTML, CSS, JavaScript.
    • Tecnologias de rendering no servidor (Server-Side Rendering - SSR): JSP, Thymeleaf, Freemarker.
    • Frameworks para frontend (Client-Side Rendering - CSR): React, Angular, Vue.js (neste caso, backend em Java fornece API REST).
  4. Backend:

    • Servlets: Tecnologia fundamental do Java EE para processar pedidos HTTP. Processam pedidos e geram respostas.
    • JSP (JavaServer Pages): Permitem inserir código Java em HTML para conteúdo dinâmico. Frequentemente usados com servlets (servlet como controlador, JSP como visualização).
    • Frameworks:
      • Spring MVC: Permite implementar o padrão Model-View-Controller (MVC). Usa controladores para processar pedidos, modelos para dados e visualizações para exibição.
      • Spring Boot: Simplifica a configuração e implantação de aplicações Spring. Inclui servidor embutido, autoconfiguração.
      • JSF (JavaServer Faces): Framework UI baseado em componentes para Java EE.
      • JAX-RS: Especificação Java EE para criar serviços web RESTful.
  5. Acesso a dados:

    • JDBC (Java Database Connectivity): API de baixo nível para trabalhar com bases de dados.
    • Frameworks ORM (Object-Relational Mapping): JPA (Hibernate, EclipseLink), Spring Data JDBC/JPA. Permitem trabalhar com bases de dados usando objetos Java.
  6. Desdobramento:

    • Ficheiro WAR: Empacota e desdobra num servidor de aplicações Java EE (Tomcat, Jetty, etc.).
    • JAR autónomo (Spring Boot): Contém um servidor embutido e pode ser iniciado como um JAR normal.

Exemplo de criação de uma aplicação web simples usando Spring Boot (API REST):

  1. Uso do Spring Initializr (start.spring.io) para gerar um projeto base com dependências Spring Web e Spring Data JPA (para exemplo com base de dados).
  2. Criar uma classe controladora para tratar pedidos HTTP:
    package com.example.demo.controller;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController // Anotação que indica que é um controlador REST
    public class HelloWorldController {
    
        @GetMapping("/hello") // Trata pedidos GET na rota /hello
        public String sayHello(@RequestParam(value = "name", defaultValue = "World") String name) {
            // Aceita parâmetro opcional name
            return String.format("Hello, %s!", name); // Forma a string de resposta
        }
    }
    
  3. Criar uma classe de entidade e um repositório usando Spring Data JPA (se necessário trabalhar com base de dados).
  4. Configurar a fonte de dados em application.properties ou application.yml.
  5. Executar a classe principal da aplicação Spring Boot.

Este método permite criar rapidamente uma aplicação web funcional, concentrando-se na lógica de negócio.