<p><img src="https://i.imgur.com/8nLaU2i.png" alt="" title="Entre no nosso site e veja nossos cursos"></p><h1 id="-Java-WebDeveloper---Sábado-Manhã---Aula-19" data-id="-Java-WebDeveloper---Sábado-Manhã---Aula-19"><a class="anchor hidden-xs" href="#-Java-WebDeveloper---Sábado-Manhã---Aula-19" title="-Java-WebDeveloper---Sábado-Manhã---Aula-19"><span class="octicon octicon-link"></span></a><img class="emoji" alt=":coffee:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/coffee.png"><span> Java WebDeveloper - Sábado Manhã - Aula 24</span></h1><h2 id="-Tema-da-aula" data-id="-Tema-da-aula"><a class="anchor hidden-xs" href="#-Tema-da-aula" title="-Tema-da-aula"><span class="octicon octicon-link"></span></a><img class="emoji" alt=":book:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/book.png"><span> Tema da aula:</span></h2><p><li><span>Back-end de um sistema sobre saúde no formato da Wikipedia. Projeto Back Hospital. Projeto Maven, Spring Boot, Spring Security, JPA, BD em MySQL.</li></span></p>
<blockquote style="border-left-color: red;">
<p><span class="color" data-color="red"></span><span> </span><small><i class="fa fa-user"></i> Prof Edson Belém - profedsonbelem@gmail.com <i class="fa fa-clock-o"></i> Sábado, Jul 25, 2020</small></p>
</blockquote><blockquote style="border-left-color: purple;">
<p><span class="color" data-color="purple"></span><span> </span><small><i class="fa fa-user"></i> Profa Luciana Medeiros - lucianamedeiros.coti@gmail.com <i class="fa fa-clock-o"></i> Sábado, Jul 25, 2020</small></p></blockquote>
</p><hr><h2 id="-Estrutura-do-projeto-depois-de-finalizado" data-id="-Estrutura-do-projeto-depois-de-finalizado"><a class="anchor hidden-xs" href="#-Estrutura-do-projeto-depois-de-finalizado" title="-Estrutura-do-projeto-depois-de-finalizado"><span class="octicon octicon-link"></span></a><img class="emoji" alt=":eye:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/eye.png"><span> Estrutura do projeto depois de finalizado:</span></h2>

<hr>
<h3><img class="emoji" alt=":coffee:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/coffee.png"><span> pom.xml</span></h3>
``` xml=
<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
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0</modelVersion>
<groupId>br.com.coti</groupId>
<artifactId>projetoBackHospital</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</properties>
<dependencies>
<!-- security rest -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- mysql ultima configuracao -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<addResources>true</addResources>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
</plugin>
</plugins>
</build>
</project>
```
<h3><img class="emoji" alt=":coffee:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/coffee.png"><span> Application.java</span></h3>
``` java=
package br.com.coti.application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@SpringBootApplication
@EntityScan(basePackages = "br.com.coti.entity")
@EnableJpaRepositories(basePackages = "br.com.coti.repository")
@ComponentScan(basePackages = "br.com.coti.controller")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
<h3><img class="emoji" alt=":coffee:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/coffee.png"><span> UsuarioController.java</span></h3>
``` java=
package br.com.coti.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import br.com.coti.entity.Usuario;
import br.coti.coti.repository.UsuarioRepository;
@CrossOrigin()
@RestController
@ResponseBody
@Validated
public class UsuarioController {
@Autowired
UsuarioRepository dao;
@GetMapping("/usuario")
public ResponseEntity<?> listagem() {
List<Usuario> lista = dao.findAll();
return ResponseEntity.status(200).body(lista);
}
@PostMapping("/register")
public ResponseEntity<?> registrar(@RequestBody Usuario usuario) {
try {
Usuario resp = dao.save(usuario);
if (resp.getIdUsuario() == null) {
throw new Exception("Usuario nao Gravado");
}
return ResponseEntity.status(200).body(resp);
} catch (Exception ex) {
Map<String, String> mapa = new HashMap<String, String>();
mapa.put("erro", "Mensagem ..." + ex.getMessage());
return ResponseEntity.status(500).body(mapa);
}
}
@PostMapping("/login")
public ResponseEntity<?> registrador(@RequestBody Usuario usuario) {
try {
Usuario resp = dao.findByEmailAndSenha
(usuario.getEmail(), usuario.getSenha());
if (resp == null) {
throw new Exception("Nao Logado");
}
return ResponseEntity.status(200).body(resp);
} catch (Exception ex) {
Map<String, String> mapa = new HashMap<String, String>();
mapa.put("erro", ex.getMessage());
return ResponseEntity.status(500).body(mapa);
}
}
}
```
<h3><img class="emoji" alt=":coffee:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/coffee.png"><span> UsuarioSecurity.java</span></h3>
```java=
package br.com.coti.controller;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpMethod;
import org.springframework.security.config.annotation
.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config
.annotation.web.builders.HttpSecurity;
import org.springframework.security.config
.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
public class UsuarioSecurity extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
auth.inMemoryAuthentication().withUser("medico")
.password("{noop}password").roles("USER").and()
.withUser("paciente").password("{noop}password")
.roles("USER").and().withUser("administrador")
.password("{noop}admin").roles("USER", "ADMIN");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic().and().authorizeRequests()
.antMatchers(HttpMethod.GET, "/usuario/**").hasRole("ADMIN")
.antMatchers(HttpMethod.POST, "/register/**").hasRole("ADMIN")
.antMatchers(HttpMethod.POST, "/login/**")
.hasRole("USER").antMatchers(HttpMethod.POST, "/login/**")
.hasRole("ADMIN").and().csrf().disable()
.formLogin().disable();
}
}
```
<h3><img class="emoji" alt=":coffee:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/coffee.png"><span> Usuario.java</span></h3>
```java=
package br.com.coti.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "tblusuario")
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idUsuario;
@Column(length = 50)
private String nome;
@Column(length = 50, unique = true)
private String email;
@Column(columnDefinition = " enum ('medico','paciente','administrador') ")
private String perfil;
@Column(length = 250)
private String senha;
@Column
private Integer latitude;
@Column
private String longitude;
public Usuario() {
}
public Usuario(Long idUsuario, String nome,
String email, String perfil, String senha, Integer latitude,
String longitude) {
super();
this.idUsuario = idUsuario;
this.nome = nome;
this.email = email;
this.perfil = perfil;
this.senha = senha;
this.latitude = latitude;
this.longitude = longitude;
}
@Override
public String toString() {
return "Usuario [idUsuario=" + idUsuario + ", nome=" + nome
+ ", email=" + email + ", perfil=" + perfil
+ ", senha=" + senha + "]";
}
public Long getIdUsuario() {
return idUsuario;
}
public void setIdUsuario(Long idUsuario) {
this.idUsuario = idUsuario;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPerfil() {
return perfil;
}
public void setPerfil(String perfil) {
this.perfil = perfil;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public Integer getLatitude() {
return latitude;
}
public void setLatitude(Integer latitude) {
this.latitude = latitude;
}
public String getLongitude() {
return longitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
}
```
<h3><img class="emoji" alt=":coffee:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/coffee.png"><span> UsuarioRepository.java</span></h3>
```java=
package br.coti.coti.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import br.com.coti.entity.Usuario;
@Repository
public interface UsuarioRepository extends JpaRepository<Usuario, Long> {
public Usuario findByEmailAndSenha(String login, String senha);
}
```
<h3><img class="emoji" alt=":coffee:" src="https://cdn.jsdelivr.net/npm/@hackmd/emojify.js@2.1.0/dist/images/basic/coffee.png"><span> application.properties</span></h3>
```java=
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.datasource.url=
jdbc:mysql://localhost:3306/BDEND?createDatabaseIfNotExist=true
&serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=coti
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.format-sql=true
spring.thymeleaf.enabled=false
server.port=4545
```
<br>
<blockquote style="border-left-color: blue;">
<p><span class="color" data-color="red"></span><span> </span><small><i class="fa fa-user"></i> Prof Edson Belém - profedsonbelem@gmail.com <i class="fa fa-clock-o"></i> Sábado, Jul 25, 2020</small></p>
</blockquote><blockquote style="border-left-color: green;">
<p><span class="color" data-color="purple"></span><span> </span><small><i class="fa fa-user"></i> Profa Luciana Medeiros - lucianamedeiros.coti@gmail.com <i class="fa fa-clock-o"></i> Sábado, Jul 25, 2020</small></p></blockquote>