Spring Framework. Parte 03 Spring MVC

Tamanho: px
Começar a partir da página:

Download "Spring Framework. Parte 03 Spring MVC"

Transcrição

1 Spring Framework Parte 03 Spring MVC

2 Spring MVC Módulo do Spring Framework que permite o desenvolvimento de aplicações web baseadas em ações (action based) bem como o desenvolvimento de serviços REST. Integra-se à API de Servlets. Suporta: Diversas tecnologias de visão tais como JSP/JSTL, Velocity, FreeMarker, Thymeleaf, Tiles, XSLT e Groovy Markup Templates. Processamento assíncrono. Internacionalização. Oferece funcionalidades de segurança e de testes. 2

3 Padrão front controller 2: HTTP request Handler mapping 3: Web controller 1: HTTP request 10: HTTP Response Dispatcher Servlet 4: HTTP request 5: model and view name Web controller 9: HTTP Response View 8: model 7: view 6: view name View resolver 3

4 Controlador web Objeto responsável por responder um conjunto de requisições HTTP. As requisições atendíveis podem ser especificadas através de padrões de URL, por cabeçalhos HTTP e por métodos HTTP. 4

5 Anotações e define um controlador definições das requisições HTTP a serem define um parâmetro query referencia parâmetros em URLs estilo REST. org.springframework.ui.model: para armazenar objetos acessados pela view. org.springframework.web.servlet.modelandview: para armazenar o nome da view e objetos acessados pela view. 5

6 Atualizando as configurações Adicionar JSTL como dependência no pom.xml: <dependency> <groupid>javax.servlet</groupid> <artifactid>jstl</artifactid> </dependency> 6

7 Atualizando as configurações Disponibilizando o contexto do Spring para o contexto da aplicação web: public class SpringMVCServlet extends AbstractAnnotationConfigDispatcherServletInitializer protected Class<?>[] getrootconfigclasses() { return new Class[]{AppConfig.class; 7

8 CRUD Fabricante: listagem Controlador web (1): package cursospring.revenda_veiculos.web; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.controller; import org.springframework.ui.model; import org.springframework.web.bind.annotation.requestmapping; public class CRUDFabricante private FabricanteRepository repositorio; 8

9 CRUD Fabricante: listagem Controlador web public String inicio(model model){ model.addattribute("fabricantes", repositorio.todos()); return "fabricantes/inicio"; 9

10 CRUD Fabricante: listagem Controlador web public String inicio(model model){ model.addattribute("fabricantes", repositorio.todos()); return "fabricantes/inicio"; Visão (página) a ser renderizada com os dados inseridos em model. 10

11 CRUD Fabricante: listagem Página src/main/webapp/web- INF/views/fabricantes/inicio.jsp (1): page language="java" contenttype="text/html; charset=iso " pageencoding="iso "%> taglib uri=" prefix="c"%> <!DOCTYPE html> <html> <head> <title>fabricantes</title> </head> <body> <h2>fabricantes</h2> <table> <tr> <th>fabricante</th> <th colspan="2">opções</th> </tr> 11

12 CRUD Fabricante: listagem Página src/main/webapp/web- INF/views/fabricantes/inicio.jsp (2): <c:foreach var="fabricante" items="${fabricantes"> <tr> <td>${fabricante.descricao</td> <td> EXCLUIR </td> <td> ALTERAR </td> </tr> </c:foreach> </table> </body> </html> 12

13 CRUD Fabricante: exclusão Controlador web (1): public class CRUDFabricante { 13

14 CRUD Fabricante: exclusão Controlador web public String Integer idfabricante, Model model){ try{ repositorio.excluir(idfabricante); model.addattribute("mensagem", "Fabricante excluído com sucesso."); catch(exception ex){ ex.printstacktrace(); model.addattribute("mensagem", "Ocorreu um erro durante a operação."); return "forward:/fabricantes"; 14

15 CRUD Fabricante: exclusão Controlador web public String Integer idfabricante, Model model){ try{ repositorio.excluir(idfabricante); model.addattribute("mensagem", "Fabricante excluído com sucesso."); catch(exception ex){ ex.printstacktrace(); model.addattribute("mensagem", return "forward:/fabricantes"; Como queremos voltar à listagem "Ocorreu um erro durante de fabricantes a operação."); após a exclusão, aproveitamos o método inicio realizando um forward para a URL /fabricantes. 15

16 CRUD Fabricante: exclusão fabricante/inicio.jsp: <h2>fabricantes</h2> <c:url var="actionurl" value="/fabricantes" /> <c:if test="${not empty mensagem"> <p style="border: 1px solid black;">${mensagem</p> </c:if> <table> <td>${fabricante.descricao</td> <td> <a href="${actionurl/excluir?id=${fabricante.id"> EXCLUIR </a> </td> 16

17 Forward e Redirect É comum que após processar uma requisição o controlador web direcione o fluxo da aplicação para uma página diferente da utilizada na submissão. Temos duas formas disponíveis: forward e redirect. Diferença básica: No forward o processamento é realizado no servidor. No redirect a mudança de página é feita pelo browser. 17

18 Forward As mudanças de URL são todas processadas no servidor antes da resposta ser enviada ao cliente. Por haver apenas uma requisição, o mesmo contexto de requisição é utilizado pelas páginas e métodos envolvidos no processamento. O mesmo model fica disponível a todos os métodos Java. Ao final do processamento da requisição, a URL na barra de endereços do navegador não muda. Assim, o reload da página resultante irá executar a requisição original. 18

19 Forward 19

20 Redirect É um mecanismo especificado pelo HTTP. Dois passos. Ao receber uma requisição, a aplicação pede ao browser para acessar uma segunda URL. Por isso a URL na barra de endereços muda. O pedido é um recurso do HTTP: código 301 ou 302 e cabeçalho Location. O reload de página não repetirá a requisição original, mas sim a segunda URL. Como acontecem duas requisições, os dados da primeira requisição, não estarão disponíveis no contexto da segunda requisição. Um model diferente por método Java. 20

21 Redirect 21

22 Flash scope Utilizado para manter dados que devem estar disponíveis após um redirect. Para utilizar o flash scope basta declarar um parâmetro do tipo RedirectAttributes. 22

23 CRUD Fabricante: exclusão com redirect Controlador web (1): import org.springframework.web.servlet.mvc.support.redirectattributes; public class CRUDFabricante { 23

24 CRUD Fabricante: exclusão com redirect Controlador web public String Integer idfabricante, RedirectAttributes redattr){ try{ repositorio.excluir(idfabricante); redattr.addflashattribute("mensagem", "Fabricante excluído com sucesso."); catch(exception ex){ ex.printstacktrace(); redattr.addflashattribute("mensagem", "Ocorreu um erro durante a operação."); return "redirect:/fabricantes"; 24

25 CRUD Fabricante: novo registro Atualizando pom.xml com bean validation: <dependency> <groupid>javax.validation</groupid> <artifactid>validation-api</artifactid> </dependency> <dependency> <groupid>org.hibernate</groupid> <artifactid>hibernate-validator</artifactid> </dependency> 25

26 CRUD Fabricante: novo registro Decorando Fabricante com anotações da bean validation: import javax.validation.constraints.notnull; public class Fabricante private String descricao; 26

27 CRUD Fabricante: novo registro inicio.jsp link para um novo registro: <h2>fabricantes</h2> <c:url var="actionurl" value="/fabricantes" /> <c:if test="${not empty mensagem"> <p style="border: 1px solid black;">${mensagem</p> </c:if> <a href="${actionurl/novo">novo fabricante</a> <table> 27

28 CRUD Fabricante: novo registro Controlador web método novo: import org.springframework.web.servlet.modelandview; import public ModelAndView novo(){ ModelAndView modelandview = new ModelAndView("fabricantes/edicao"); modelandview.addobject("fabricante", new Fabricante()); modelandview.addobject("titulo", "Novo Fabricante"); return modelandview; 28

29 CRUD Fabricante: novo registro Controlador web método novo: import org.springframework.web.servlet.modelandview; import public ModelAndView novo(){ ModelAndView modelandview = new ModelAndView("fabricantes/edicao"); modelandview.addobject("fabricante", new Fabricante()); modelandview.addobject("titulo", "Novo Fabricante"); return modelandview; O objeto fabricante será utilizado para receber os valores do campos do formulário. 29

30 CRUD Fabricante: novo registro Controlador web método novo: import org.springframework.web.servlet.modelandview; import public ModelAndView novo(){ ModelAndView modelandview = new ModelAndView("fabricantes/edicao"); modelandview.addobject("fabricante", new Fabricante()); modelandview.addobject("titulo", "Novo Fabricante"); return modelandview; É informado o título da página pois a mesma página será utilizada nas operações de novo fabricante e edição de fabricante. 30

31 CRUD Fabricante: novo registro Página edicao.jsp (1): page language="java" contenttype="text/html; charset=iso " pageencoding="iso "%> taglib uri=" prefix="c"%> taglib uri=" prefix="form" %> <!DOCTYPE html> <html> <head> <title>${titulo</title> </head> <body> <h2>${titulo</h2> <c:url var="actionurl" value="/fabricantes/salvar" /> 31

32 CRUD Fabricante: novo registro Página edicao.jsp (1): page language="java" contenttype="text/html; charset=iso " pageencoding="iso "%> taglib uri=" prefix="c"%> taglib uri=" prefix="form" %> <!DOCTYPE html> <html> <head> <title>${titulo</title> Biblioteca de tags Spring para </head> manipulação de formulários. <body> <h2>${titulo</h2> <c:url var="actionurl" value="/fabricantes/salvar" /> 32

33 CRUD Fabricante: novo registro Página edicao.jsp (2): <form:form action="${actionurl" method="post" modelattribute="fabricante"> <label for="descricao">descrição</label> <form:input path="descricao"/> <form:errors path="descricao" cssstyle="color: red"/> <form:hidden path="id"/> <input type="hidden" name="titulo" value="${titulo"> <br> <button type="submit">salvar</button> </form:form> </body> </html> 33

34 CRUD Fabricante: novo registro Página edicao.jsp (2): <form:form action="${actionurl" method="post" modelattribute="fabricante"> <label for="descricao">descrição</label> <form:input path="descricao"/> <form:errors path="descricao" cssstyle="color: red"/> <form:hidden path="id"/> <input type="hidden" name="titulo" value="${titulo"> <br> <button type="submit">salvar</button> </form:form> </body> </html> Define o identificador do objeto que será utilizado (binding) para receber/preencher os campos do formulário. O objeto será inserido no contexto do model. Note que este é o identificador a ser utilizado no controlador para acessar os campos do formulário. 34

35 CRUD Fabricante: novo registro Controlador web método salvar (1): import javax.validation.valid; import org.springframework.validation.bindingresult; import org.springframework.web.bind.annotation.modelattribute; import method=requestmethod.post) public Fabricante fabricante, BindingResult String titulo, Model model, RedirectAttributes rattrs){ if(br.haserrors()){ model.addattribute("titulo", titulo); return "fabricantes/edicao"; 35

36 CRUD Fabricante: novo registro Indica Controlador que os atributos web do método salvar (1): Indica que o spring deve injetar um objeto import objeto org.springframework.validation.bindingresult; devem ser validados presente no contexto do model e que é import segundo org.springframework.web.bind.annotation.modelattribute; as anotações da identificado pela string fabricante. Na import Bean org.springframework.web.bind.annotation.requestmethod; Validation. página, usamos o mesmo method=requestmethod.post) public Fabricante fabricante, BindingResult String titulo, Model model, RedirectAttributes rattrs){ if(br.haserrors()){ model.addattribute("titulo", titulo); return "fabricantes/edicao"; Armazena o resultado da validação. 36

37 CRUD Fabricante: novo registro Controlador web método salvar (2): try{ if(fabricante.getid() == null) repositorio.inserir(fabricante); else repositorio.atualizar(fabricante); rattrs.addflashattribute("mensagem", "Fabricante salvo com sucesso."); catch(exception ex){ ex.printstacktrace(); rattrs.addflashattribute("mensagem", "Ocorreu um erro durante a operação."); return "redirect:/fabricantes"; 37

38 CRUD Fabricante: alterar registro inicio.jsp link de edição: <td> <a href="${actionurl/editar/${fabricante.id"> ALTERAR </a> </td> 38

39 CRUD Fabricante: alterar registro Controlador web: import public String Integer id, Model model){ Fabricante f = repositorio.getporid(id); if(f == null) return "forward:/fabricantes"; model.addattribute("fabricante", f); model.addattribute("titulo", "Alterar Fabricante"); return "fabricantes/edicao"; 39

40 Outras tags Spring para formulários checkbox: produz um campo input do tipo checkbox. Pode ser associada a atributos com um ou muitos valores (coleções e arrays). Quando seu valor não é indicado, é assumido o tipo boolean. checkboxes: gera vários campos do tipo checkbox a partir de uma coleção. radiobutton: produz uma tag input do tipo radio. radiobuttons: gera um conjunto relacionado de radio buttons a partir de uma coleção. password: gera uma tag input do tipo password. option: gera uma tag option para um campo select. options: opções de um campo select gerados a partir de uma coleção. textarea: produz uma tag textarea. 40

41 CRUD Veículo Classe Foto: package cursospring.revenda_veiculos.dominio; import public class Foto private byte[] bytes; private String mimetype; public Foto() { public Foto(byte[] bytes, String mimetype) { this.bytes = bytes; this.mimetype = mimetype; //getters e setters 41

42 CRUD Veículo Classe Veiculo (1): package cursospring.revenda_veiculos.dominio; import javax.persistence.basic; import javax.persistence.embedded; import javax.persistence.entity; import javax.persistence.fetchtype; import javax.persistence.joincolumn; import javax.persistence.manytoone; import javax.persistence.table; import javax.validation.constraints.min; import javax.validation.constraints.notnull; public class Veiculo extends Entidade { 42

43 CRUD Veículo Classe private private String placa; private String private Foto private Integer cilindradas; 43

44 CRUD Veículo Classe @JoinColumn(name="ID_MODELO") private Modelo modelo; public Veiculo() { public Veiculo(Integer id, String placa){ super(id); this.placa = placa; 44

45 CRUD Veículo Classe Veiculo (4): public String getmimetypefoto() { if(foto!= null) return foto.getmimetype(); return null; //getters e setters 45

46 CRUD Veículo create-schema.sql: create table VEICULOS (ID int auto_increment, ANOFABRICACAO int not null, PLACA varchar(10) not null, CHASSI varchar(50), CILINDRADAS int, BYTES blob, MIMETYPE varchar(50), ID_MODELO int not null, primary key(id), foreign key(id_modelo) references MODELOS); drop-schema.sql: drop table VEICULOS; 46

47 CRUD Veículo Interface VeiculoRepositorio: package cursospring.revenda_veiculos.dominio; import java.util.list; public interface VeiculoRepositorio { public Integer inserir(veiculo v); public void excluir(integer id); public List<Veiculo> todos(); public Veiculo getporid(integer id); public Foto getfoto(integer idveiculo); 47

48 CRUD Veículo Classe VeiculoDAO (1): package cursospring.revenda_veiculos.dao; import java.util.list; import org.hibernate.query; import org.hibernate.session; import org.hibernate.sessionfactory; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.repository; import org.springframework.transaction.annotation.transactional; import cursospring.revenda_veiculos.dominio.foto; import cursospring.revenda_veiculos.dominio.veiculo; public class VeiculoDAO implements VeiculoRepositorio { 48

49 CRUD Veículo Classe VeiculoDAO private SessionFactory public Integer inserir(veiculo v) { sessionfactory.getcurrentsession().save(v); return public void excluir(integer id) { String hql = "delete Veiculo where id = :idveiculo"; Session session = sessionfactory.getcurrentsession(); Query q = session.createquery(hql). setparameter("idveiculo", id); q.executeupdate(); 49

50 CRUD Veículo Classe VeiculoDAO public List<Veiculo> todos() { Session session = sessionfactory.getcurrentsession(); return session.createquery("from public Veiculo getporid(integer id) { Session session = sessionfactory.getcurrentsession(); return (Veiculo)session.get(Veiculo.class, id); 50

51 CRUD Veículo Classe VeiculoDAO public Foto getfoto(integer idveiculo) { String hql = "select v.foto from Veiculo v where v.id = :id "; Session session = sessionfactory.getcurrentsession(); Query q = session.createquery(hql). setparameter("id", idveiculo); return (Foto)q.uniqueResult(); 51

52 CRUD Veículo Página veiculos/inicio.jsp (1): page language="java" contenttype="text/html; charset=iso " pageencoding="iso "%> taglib uri=" prefix="c"%> <!DOCTYPE html> <html> <head> <title>veículos</title> </head> <body> <h2>veículos</h2> <c:url var="actionurl" value="/veiculos" /> <c:if test="${not empty mensagem"> <p style="border: 1px solid black;">${mensagem</p> </c:if> <a href="${actionurl/novo">novo veículo</a> 52

53 CRUD Veículo Página veiculos/inicio.jsp (2): <table> <tr> <th>placa</th> <th>fabricante</th> <th>modelo</th> <th>ano</th> <th>cilindradas</th> <th colspan="2">opções</th> </tr> <c:foreach var="veiculo" items="${veiculos"> <tr> <td>${veiculo.placa</td> <td>${veiculo.modelo.fabricante.descricao</td> <td>${veiculo.modelo.descricao</td> <td>${veiculo.anofabricacao</td> <td>${veiculo.cilindradas</td> 53

54 CRUD Veículo Página veiculos/inicio.jsp (3): <td> <a href="${actionurl/excluir/${veiculo.id"> EXCLUIR </a> </td> </tr> </c:foreach> </table> </body> </html> 54

55 CRUD Veículo Página veiculos/edicao.jsp (1): page language="java" contenttype="text/html; charset=iso " pageencoding="iso "%> taglib uri=" prefix="c"%> taglib uri=" prefix="form" %> <!DOCTYPE html> <html> <head> <title>novo veículo</title> </head> <body> <h2>novo veículo</h2> <c:url var="actionurl" value="/veiculos/salvar" /> <form:form action="${actionurl" method="post" modelattribute="veiculo" > 55

56 CRUD Veículo Página veiculos/edicao.jsp (2): <label for="placa">placa</label> <form:input path="placa"/>* <form:errors path="placa" cssstyle="color: red"/><br> <label for="anofabricacao">ano</label> <form:input path="anofabricacao"/>* <form:errors path="anofabricacao" cssstyle="color: red"/><br> <label for="cilindradas">cilindradas</label> <form:input path="cilindradas"/> <form:errors path="cilindradas" cssstyle="color: red"/><br> <label for="chassi">chassi</label> <form:input path="chassi"/> <form:errors path="chassi" cssstyle="color: red"/><br> 56

57 CRUD Veículo Página veiculos/edicao.jsp (3): <label for="selectmodelo">modelo</label> <form:select path="modelo.id" id="selectmodelo" > <form:options items="${modelos" itemvalue="id" itemlabel="descricao" /> </form:select> <form:errors path="modelo" cssstyle="color: red"/><br> <button type="submit">salvar</button> </form:form> </body> </html> 57

58 CRUD Veículo Classe CRUDVeiculo (1): package cursospring.revenda_veiculos.web; import java.util.list; import javax.validation.valid; import org.springframework.beans.factory.annotation.autowired; import org.springframework.stereotype.controller; import org.springframework.ui.model; import org.springframework.validation.bindingresult; import org.springframework.web.bind.annotation.modelattribute; import org.springframework.web.bind.annotation.pathvariable; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.requestmethod; import org.springframework.web.servlet.modelandview; import org.springframework.web.servlet.mvc.support.redirectattributes; import cursospring.revenda_veiculos.dominio.modelo; import cursospring.revenda_veiculos.dominio.modelorepository; 58

59 CRUD Veículo Classe CRUDVeiculo (2): import cursospring.revenda_veiculos.dominio.veiculo; public class CRUDVeiculo private VeiculoRepositorio private ModeloRepository public List<Modelo> listademodelos(){ return modelorepositorio.todos(); 59

60 CRUD Veículo Classe CRUDVeiculo (2): import cursospring.revenda_veiculos.dominio.veiculo; public class CRUDVeiculo insere retorno do método no private VeiculoRepositorio veiculorepositorio; contexto model. Assim, a de modelos ficará disponível private ModeloRepository modelorepositorio; para as páginas acessadas através deste public List<Modelo> listademodelos(){ return modelorepositorio.todos(); 60

61 CRUD Veículo Classe CRUDVeiculo public ModelAndView inicio(){ ModelAndView modelandview = new ModelAndView("veiculos/inicio"); modelandview.addobject("veiculos", veiculorepositorio.todos()); return public ModelAndView novo(){ ModelAndView modelandview = new ModelAndView("veiculos/edicao"); modelandview.addobject("veiculo", new Veiculo()); return modelandview; 61

62 CRUD Veículo Classe CRUDVeiculo method=requestmethod.post) public Veiculo veiculo, BindingResult br, Model model, RedirectAttributes rattrs){ if(br.haserrors()){ return "veiculos/edicao"; try{ veiculorepositorio.inserir(veiculo); rattrs.addflashattribute("mensagem", "Veículo salvo com sucesso."); catch(exception ex){ ex.printstacktrace(); rattrs.addflashattribute("mensagem", "Ocorreu um erro durante a operação."); return "redirect:/veiculos"; 62

63 CRUD Veículo Classe CRUDVeiculo public String Integer id, RedirectAttributes redattr){ try{ veiculorepositorio.excluir(id); redattr.addflashattribute("mensagem", "Veículo excluído com sucesso."); catch(exception ex){ ex.printstacktrace(); redattr.addflashattribute("mensagem", "Ocorreu um erro durante a operação."); return "redirect:/veiculos"; 63

64 CRUD Veículo Classe ModeloDAO: public class ModeloDAO implements ModeloRepository { 64

65 CRUD Veículo: upload da foto Dependência para upload de arquivos: <dependency> <groupid>commons-fileupload</groupid> <artifactid>commons-fileupload</artifactid> </dependency> 65

66 CRUD Veículo: upload da foto Classe AppConfig adição do bean gerenciador de uploads: import public CommonsMultipartResolver multipartresolver(){ CommonsMultipartResolver resolver = new CommonsMultipartResolver(); resolver.setmaxuploadsize(1024 * 1024 * 5); resolver.setmaxinmemorysize(1024 * 1024 * 5); return resolver; 66

67 CRUD Veículo: upload da foto Página veiculos/edicao.jsp: <form:form action="${actionurl" method="post" modelattribute="veiculo" enctype="multipart/form-data"> <label for="arquivofoto">foto</label> <input type="file" name="arquivofoto" accept="image/*"/> <button type="submit">salvar</button> </form:form> 67

68 CRUD Veículo: upload da foto CRUDVeiculo atualização do método salvar method=requestmethod.post) public Veiculo veiculo, BindingResult br, Model model, RedirectAttributes MultipartFile file){ if(br.haserrors()){ return "veiculos/edicao"; try{ if(file!= null){ Foto foto = new Foto(file.getBytes(), file.getcontenttype()); veiculo.setfoto(foto); 68

69 CRUD Veículo: upload da foto CRUDVeiculo atualização do método salvar method=requestmethod.post) public Veiculo veiculo, BindingResult br, Model model, RedirectAttributes MultipartFile file){ if(br.haserrors()){ return "veiculos/edicao"; try{ Será preenchido com o arquivo if(file!= null){ submetido. Note que a string Foto foto = new Foto(file.getBytes(), arquivofoto corresponde ao nome file.getcontenttype()); dado ao campo presente no veiculo.setfoto(foto); formulário de submissão. 69

70 CRUD Veículo: upload da foto CRUDVeiculo atualização do método salvar (2): veiculorepositorio.inserir(veiculo); rattrs.addflashattribute("mensagem", "Veículo salvo com sucesso."); catch(exception ex){ ex.printstacktrace(); rattrs.addflashattribute("mensagem", "Ocorreu um erro durante a operação."); return "redirect:/veiculos"; 70

71 CRUD Veículo: acessando a foto com Ajax veiculos/inicio.jsp (1): <head> <c:url var="actionurl" value="/veiculos" /> <title>veículos</title> <script src=" </script> <script src=" </script> <script> $(function() { $("#dialogfoto").dialog({ autoopen: false ); ); 71

72 CRUD Veículo: acessando a foto com Ajax veiculos/inicio.jsp (1): <head> <c:url var="actionurl" value="/veiculos" /> <title>veículos</title> <script src=" </script> <script src=" </script> <script> $(function() { $("#dialogfoto").dialog({ autoopen: false ); ); Esta instrução foi movida para o início da tag head para que a URL já esteja disponível aos scripts em JS. 72

73 CRUD Veículo: acessando a foto com Ajax veiculos/inicio.jsp (2): function verfoto(idveiculo){ var imgurl = '${actionurl/foto/'+idveiculo; $('#imgfoto').attr('src', imgurl); $('#dialogfoto').dialog("open"); </script> </head> 73

74 CRUD Veículo: acessando a foto com Ajax veiculos/inicio.jsp (3): <td>${veiculo.cilindradas</td> <td> <c:choose> <c:when test="${not empty veiculo.foto"> <a href="#" onclick="verfoto(${veiculo.id)"> VER FOTO </a> </c:when> <c:otherwise> -- </c:otherwise> </c:choose> </td> 74

75 CRUD Veículo: acessando a foto com Ajax veiculos/inicio.jsp (4): </table> <div id="dialogfoto" title="foto" style="border: 1px black solid;"> <img id="imgfoto"> </div> </body> 75

76 CRUD Veículo: acessando a foto com Ajax CRUDVeiculo método public ResponseEntity<byte[]> foto(@pathvariable Integer id){ Foto foto = veiculorepositorio.getfoto(id); HttpHeaders headers = new HttpHeaders(); String[] tokens = foto.getmimetype().split("/"); MediaType mimetype = new MediaType(tokens[0], tokens[1]); headers.setcontenttype(mimetype); return new ResponseEntity<>(foto.getBytes(), headers, HttpStatus.OK); 76

77 CRUD Veículo: acessando a foto com Ajax CRUDVeiculo método public ResponseEntity<byte[]> foto(@pathvariable Integer id){ Foto foto = veiculorepositorio.getfoto(id); HttpHeaders headers = new HttpHeaders(); String[] tokens = foto.getmimetype().split("/"); MediaType mimetype = new MediaType(tokens[0], tokens[1]); headers.setcontenttype(mimetype); return new ResponseEntity<>(foto.getBytes(), headers, HttpStatus.OK); Um ResponseEntity representa dados a serem inseridos na resposta HTTP. Pelo tipo de retorno deste método, SringMVC entende que não deve renderizar uma visão. 77

78 Pesquisa de veículo: Ajax + JSON Adicionar biblioteca Jackson ao pom.xml: <dependency> <groupid>com.fasterxml.jackson.core</groupid> <artifactid>jackson-databind</artifactid> </dependency> 78

79 Pesquisa de veículo: Ajax + JSON VeiculoRepositorio: método getpormodelo import java.util.list; public interface VeiculoRepositorio { public List<Veiculo> getpormodelo(integer idmodelo); 79

80 Pesquisa de veículo: Ajax + JSON VeiculoDAO: public class VeiculoDAO implements VeiculoRepositorio public List<Veiculo> getpormodelo(integer idmodelo) { String hql = "from Veiculo v where v.modelo.id = :id "; Session session = sessionfactory.getcurrentsession(); Query q = session.createquery(hql).setparameter("id", idmodelo); return q.list(); 80

81 Pesquisa de veículo: Ajax + JSON CRUDVeiculo: package cursospring.revenda_veiculos.web; import java.util.list; import org.springframework.web.bind.annotation.responsebody; public class CRUDVeiculo public String paginadebusca(){ public List<Veiculo> pesquisar(@requestparam Integer idmodelo){ return veiculorepositorio.getpormodelo(idmodelo); 81

82 Pesquisa de veículo: Ajax + JSON CRUDVeiculo: package cursospring.revenda_veiculos.web; import java.util.list; import org.springframework.web.bind.annotation.responsebody; public class CRUDVeiculo public String paginadebusca(){ return "veiculos/busca"; Indica que a resposta do método deve ser colocada no payload da resposta HTTP. Por padrão, Spring MVC converterá os objetos Java retornados pelo método em uma public List<Veiculo> pesquisar(@requestparam Integer idmodelo){ return veiculorepositorio.getpormodelo(idmodelo); 82

83 Pesquisa de veículo: Ajax + JSON Página veiculos/busca.jsp (1): <%@ page language="java" contenttype="text/html; charset=iso " pageencoding="iso "%> <%@ taglib uri=" prefix="c"%> <!DOCTYPE html> <html> <head> <c:url var="actionurl" value="/veiculos" /> <title>veículos</title> <script src=" </script> <script> $(document).ready(function($){ $('#formpesquisa').submit(function(event){ event.preventdefault(); buscar(); ); ) 83

84 Pesquisa de veículo: Ajax + JSON Página veiculos/busca.jsp (2): function buscar(){ $.getjson('${actionurl/pesquisar', $('#formpesquisa').serialize(), function(data){ var linhas = ''; for(var i=0; i<data.length; i++){ linhas += '<tr><td>'+data[i].placa+'</td>'+ '<td>'+data[i].modelo.descricao+'</td>'+ '<td>'+data[i].anofabricacao+'</td></tr>'; console.log(">>"+linhas); var $tbody = $('#tabelaveiculos').children('tbody'); $tbody.empty(); $tbody.append(linhas); ); </script> 84

85 Pesquisa de veículo: Ajax + JSON Página veiculos/busca.jsp (3): </head> <body> <h2>busca de Veículos</h2> <form id="formpesquisa"> <select name="idmodelo"> <c:foreach var="modelo" items="${modelos"> <option value="${modelo.id">${modelo.descricao</option> </c:foreach> </select> <input type="submit" value="pesquisar"> </form> <table id="tabelaveiculos"> <thead> <tr> <th>placa</th> <th>modelo</th> <th>ano</th> 85

86 Pesquisa de veículo: Ajax + JSON Página veiculos/busca.jsp (4): </tr> </thead> <tbody> </tbody> </table> </body> </html> 86

87 Servindo conteúdo estático É preciso registrar um gerenciador de recursos. import public class AppWebConfig extends public void addresourcehandlers(resourcehandlerregistry registry){ registry.addresourcehandler("/resources/**").addresourcelocations("/resources/"); 87

88 Servindo conteúdo estático É preciso registrar um gerenciador de recursos. import URL de acesso aos arquivos. public class AppWebConfig extends public void addresourcehandlers(resourcehandlerregistry registry){ registry.addresourcehandler("/resources/**").addresourcelocations("/resources/"); Diretório em que se encontram os arquivos (JS, CSS, imagens, etc). 88

89 Servindo conteúdo estático index.jsp: taglib uri=" prefix="c"%> taglib uri=" prefix="form" %> <html> <body> <h2>hello World!</h2> <img src="resources/logo.jpg" > </body> </html> 89

90 Servindo conteúdo estático index.jsp: taglib uri=" prefix="c"%> taglib uri=" prefix="form" %> Repare que não é necessário o uso da <html> tag c:url para obter o endereço <body> completo da URL resources. <h2>hello World!</h2> <img src="resources/logo.jpg" > </body> </html> 90

91 Referências Johnson, Rod et al. Spring Framework Reference Documentation, release. Disponível em < Márcio d Ávila. Informações úteis sobre cabeçalhos HTTP e tipos MIME. Disponível em < Paraschiv, Eugen. Serve static resources with Spring. Disponível em < Souza, Alberto. Spring MVC: domine o principal framework web Java. São Paulo: Casa do Código, Stack Overflow. JSTL tag wiki. Disponível em < 91

92 Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Campus Natal Central Diretoria Acadêmica de Gestão e Tecnologia da Informação Curso de formação em Spring Framework 4 Parte 03 Spring MVC Autor: Alexandre Gomes de Lima Natal, outubro de

Spring Framework. Parte 05 Spring Security

Spring Framework. Parte 05 Spring Security Spring Framework Parte 05 Spring Security Introdução Spring Security é um framework para facilitar a incorporação de funcionalidades relativas ao controle de acesso necessárias às aplicações. Possui recursos

Leia mais

Spring Framework. Parte 04 transações

Spring Framework. Parte 04 transações Spring Framework Parte 04 transações Spring e transações O uso de transações é recorrente no desenvolvimento de sistema corporativos. Spring provê suporte ao controle de transações de duas maneiras: programática

Leia mais

Spring Framework. Parte 02 acesso a dados e testes de integração

Spring Framework. Parte 02 acesso a dados e testes de integração Spring Framework Parte 02 acesso a dados e testes de integração H2 Database H2 é um SGBDR escrito em Java que pode atuar tanto no modo embutido como na forma clienteservidor. Após instalação, executar

Leia mais

Spring Framework. Parte 01 introdução e primeiros passos

Spring Framework. Parte 01 introdução e primeiros passos Spring Framework Parte 01 introdução e primeiros passos O que é Spring Framework? É um framework de apoio ao desenvolvimento de aplicações corporativas em Java que surgiu como uma alternativa à complexa

Leia mais

PROJETO ECLIPSE: Estrutura do projeto: (Dynamic Web Project) LIBS: Java WebDeveloper. Prof. Edson Belém

PROJETO ECLIPSE: Estrutura do projeto: (Dynamic Web Project) LIBS: Java WebDeveloper. Prof. Edson Belém PROJETO ECLIPSE: Estrutura do projeto: (Dynamic Web Project) LIBS: antlr-2.7.7.jar aspectjweaver-1.8.13.jar attoparser-2.0.4.release.jar classmate-1.3.4.jar dom4j-1.6.1.jar hibernate-commons-annotations-5.0.1.final.jar

Leia mais

SPRING - VALIDAÇÃO. Altere o arquivo formulario.jsp como segue:

SPRING - VALIDAÇÃO. Altere o arquivo formulario.jsp como segue: Altere o arquivo formulariojsp como segue: SPRING - VALIDAÇÃO

Leia mais

PROJETO WEB: Java. Prof Fernando Gomes

PROJETO WEB: Java. Prof Fernando Gomes PROJETO WEB: Este projeto nos mostra uma página JSP que contém um formulário para digitarmos um número inteiro. Na mesma página, o sistema retorna se esse número é primo ou não - caso não seja primo, retorna

Leia mais

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

Lista de exercícios I - RESPOSTAS Servlets e banco de dados www.posse.ueg.br Home Page: http://www.posse.ueg.br/index.php/conexao-ueg/meuperfil/userprofile/ronaldo Dado o diagrama de classe abaixo: Lista de exercícios I - RESPOSTAS Servlets e banco de dados 1.

Leia mais

Desenvolvimento Web com Java. Sérgio Lopes Caelum -

Desenvolvimento Web com Java. Sérgio Lopes Caelum - Desenvolvimento Web com Java Sérgio Lopes Caelum - http://www.caelum.com.br sergio.lopes@caelum.com.br Sérgio Lopes Desenvolvedor Java desde 2002 Instrutor de Java pela Caelum Trabalho com Web e Celulares

Leia mais

HTML BÁSICO E TEMPLATE VIEW. Gabrielle Amorim Porto

HTML BÁSICO E TEMPLATE VIEW. Gabrielle Amorim Porto HTML BÁSICO E TEMPLATE VIEW Gabrielle Amorim Porto HTML BÁSICO E TEMPLATE VIEW Hypertext Markup Language Linguagem de marcação de hipertexto; Descreve a estrutura das páginas Web utilizando tags. HTML

Leia mais

O que faz um servidor/navegador web? 14/03/2016 Rômulo da Silva Lima Slid e 2

O que faz um servidor/navegador web? 14/03/2016 Rômulo da Silva Lima Slid e 2 HTML O que faz um servidor/navegador web? e 2 O que é? HyperText Markup Language Utilizada para produzir páginas WEB Documentos escritos na linguagem HTML podem ser traduzidos por browser O HTML utiliza

Leia mais

2 Criar uma Enterprise Application que num módulo EJB irá conter um ou vários Beans.

2 Criar uma Enterprise Application que num módulo EJB irá conter um ou vários Beans. Enterprise java Bens Folha 8-1 Session beans A Aplicação cliente que acede a um session bean (Exemplo retirado de: https://netbeans.org/kb/docs/javaee/entappclient.html) 1 Criar uma Java Class Library

Leia mais

TUTORIAL INTEGRAÇÃO SPRING, HIBERNATE E MYSQL

TUTORIAL INTEGRAÇÃO SPRING, HIBERNATE E MYSQL TUTORIAL INTEGRAÇÃO SPRING, HIBERNATE E MYSQL Nesse tutorial será mostrado como integrar o uso do Spring MVC com Hibernate e MySQL para desenvolver aplicações web. Será utilizado o Spring Tools Suite,

Leia mais

Tutorial Jogo da Velha WEB

Tutorial Jogo da Velha WEB Tutorial Jogo da Velha WEB Criação do Projeto 1- Inicie o Eclipse 2- Crie um novo projeto Web dinâmico. 3- Na tela seguinte, digite o nome do projeto e caso no campo Target Runtime não estiver aparecendo

Leia mais

COM222 DESENVOLVIMENTO DE SISTEMAS WEB. Aula 01: HTML e CSS

COM222 DESENVOLVIMENTO DE SISTEMAS WEB. Aula 01: HTML e CSS COM222 DESENVOLVIMENTO DE SISTEMAS WEB Aula 01: HTML e CSS 2 Conteúdo Noções introdutórias HTML CSS HTML: HyperText Markup Language 3 Linguagem usada para construir páginas Web Função principal Estruturar

Leia mais

Java para WEB com Struts 2 e Hibernate

Java para WEB com Struts 2 e Hibernate Java para WEB com Struts 2 e Hibernate Aula 01 http://fernandoanselmo.orgfree.com fernando.anselmo74@gmail.com Apresentação Fernando Anselmo fernando.anselmo74@gmail.com 25 anos na área de Desenvolvimento

Leia mais

Java Server Faces Navegação de

Java Server Faces Navegação de Java Server Faces Navegação de Páginas Prof. Rodrigo Henrique Cunha Palácios rodrigopalacios@utfpr.edu.br Slides fornecidos pelo professor Prof. Edson Shozo Nishi Navegação de Páginas Controle de fluxo

Leia mais

Primeiros Passos com Spring MVC por Normandes Junior

Primeiros Passos com Spring MVC por Normandes Junior Primeiros Passos com Spring MVC por Normandes Junior 1ª Edição, 10/02/2016 2016 AlgaWorks Softwares, Treinamentos e Serviços Ltda. Todos os direitos reservados. Nenhuma parte deste livreto pode ser reproduzida

Leia mais

jquery Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Desenvolvimento de Sistemas web

jquery Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Desenvolvimento de Sistemas web jquery Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Desenvolvimento de Sistemas web Introdução jquery é uma biblioteca JavaScript que tem como objetivo principal facilitar a programação

Leia mais

Table of Contents

Table of Contents Table of Contents Introdução Rotas ngroute $routeparams Parametros Customizados Resolve $locationchangestart e $locationchangesuccess Controladores Variavel Função Diretivas Customizadas Atributo 1.1 1.2

Leia mais

Programação para Internet II

Programação para Internet II Programação para Internet II Aulas 09 e 10 Fernando F. Costa nando@fimes.edu.br Linguagens de Expressão - EL É uma Linguagem de script que permite o acesso à componentes Java (JavaBeans) através de JSP.

Leia mais

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE ATO CONVOCATÓRIO Nº 006/2016 CONTRATO DE GESTÃO IGAM Nº 002/IGAM/2012 09/2017 1 PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE ATO CONVOCATÓRIO

Leia mais

JSP Standard Tag Library (JSTL)

JSP Standard Tag Library (JSTL) JSP JSTL JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs (porém bem menor) Oferece dois recursos Conjunto padrão de tags básicos (Core, XML, banco de

Leia mais

Objetivos. Aprender o que são JavaBeans e como podem ser usados em páginas JSPs Usando ações-padrão ao invés de scripts

Objetivos. Aprender o que são JavaBeans e como podem ser usados em páginas JSPs Usando ações-padrão ao invés de scripts JSP Mais Recursos Objetivos Aprender o que são JavaBeans e como podem ser usados em páginas JSPs Usando ações-padrão ao invés de scripts Usando atributos Quando o atributo é uma String

Leia mais

JSP (JAVASERVER PAGES)

JSP (JAVASERVER PAGES) UNIDADEC Nesta unidade, você irá conhecer a tecnologia JSP (JavaServer Pages). JSP permite implementar páginas dinâmicas na web. As páginas JSP contêm marcas HTML e instruções Java. O objetivo desta unidade

Leia mais

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS 1. Explique a(s) diferença(s) entre design pattern e framework. 2. Analisar o arquivo de configurações (web.xml) abaixo identificando quais suas

Leia mais

Desenvolvimento para Web em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM Lamarck Heinsch Mestrando PPGI/CT/UFSM

Desenvolvimento para Web em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM Lamarck Heinsch Mestrando PPGI/CT/UFSM Desenvolvimento para Web em Java Profa Andréa Schwertner Charão DLSC/CT/UFSM Lamarck Heinsch Mestrando PPGI/CT/UFSM Tecnologias Web Java (OO) Fonte: Wikipedia Tecnologias Web em Java Java SE: Applets Java

Leia mais

JSP Standard Tag Library (JSTL)

JSP Standard Tag Library (JSTL) JSP JSTL JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs (porém bem menor) Oferece dois recursos Conjunto padrão de tags básicos (Core, XML, banco de

Leia mais

AJAX. Prof. Marcos Alexandruk

AJAX. Prof. Marcos Alexandruk Prof. Marcos Alexandruk m.alexandruk@hotmail.com Asynchronous JavaScript and XML Não é uma "nova tecnologia" Utiliza os recursos já existentes do JavaScript Jesse James Garret utilizou o termo pela primeira

Leia mais

AULA 07 HIBERNATE. Ao término desse capítulo você terá aprendido: Fundamentos do MVC Estrutura dos pacotes no NetBeans

AULA 07 HIBERNATE. Ao término desse capítulo você terá aprendido: Fundamentos do MVC Estrutura dos pacotes no NetBeans AULA 07 HIBERNATE Ao término desse capítulo você terá aprendido: Fundamentos do MVC Estrutura dos pacotes no NetBeans O JDBC é uma das maneiras mais diretas para desenvolver um aplicativo Java que interaja

Leia mais

Regras de Navegação e Templates

Regras de Navegação e Templates Regras de Navegação e Templates Primeiras páginas Paulo Ricardo Lisboa de Almeida 1 Instanciando a aplicação Clone o projeto da aula com o Git (disponível no site da disciplina) Suba o banco de dados Crie

Leia mais

Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL.

Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL. Construindo um sistema simples de cadastro de fornecedores em PHP e MySQL. Procuraremos mostrar os principais procedimentos para fazer um cadastro de registros numa base de dados MySQL utilizando a linguagem

Leia mais

Programação para web HTML: Formulários

Programação para web HTML: Formulários Programação para web HTML: Formulários Professor: Harlley Lima E-mail: harlley@decom.cefetmg.br Departamento de Computação Centro Federal de Educação Tecnológica de Minas Gerais Belo Horizonte, 9 de março

Leia mais

JSP Standard Tag Library (JSTL)

JSP Standard Tag Library (JSTL) JSP JSTL JSP Standard Tag Library (JSTL) Esforço de padronização do JCP: JSR-152 Baseado no Jakarta Taglibs (porém bem menor) Oferece dois recursos Conjunto padrão de tags básicos (Core, XML, banco de

Leia mais

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades. REST Representational State Transfer É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades. Não é um padrão. Exemplo ASP.NET Web API namespace WebAPIApp.Models

Leia mais

Mapeando Relacionamentos Entre Classes com Anotações Hibernate Por: Raphaela Galhardo Fernandes Gleydson de Azevedo F. Lima

Mapeando Relacionamentos Entre Classes com Anotações Hibernate Por: Raphaela Galhardo Fernandes Gleydson de Azevedo F. Lima Classes com Anotações Hibernate Por: Raphaela Galhardo Fernandes Gleydson de Azevedo F. Lima Resumo Este tutorial destina-se a apresentar alguns exemplos de mapeamentos de associações/relacionamentos entre

Leia mais

PROJETOS EXEMPLO DE ASP.NET MVC

PROJETOS EXEMPLO DE ASP.NET MVC INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIAS E TECNOLOGIAS DO RIO GRANDE DO NORTE PROFESSOR: JOSÉ ANTÔNIO DA CUNHA PROJETOS EXEMPLO DE ASP.NET MVC Projeto 1: Projeto 2: Implementando o CRUD em ASP.NET MVC,

Leia mais

Desenvolvimento de Aplicações para Internet

Desenvolvimento de Aplicações para Internet Desenvolvimento de Aplicações para Internet CSS Celso Olivete Júnior olivete@fct.unesp.br HTML Formatando o documento... Formulário Responsável por fazer a interação entre os dados fornecidos pelo usuário

Leia mais

Uploadde arquivos com o método POST

Uploadde arquivos com o método POST Uploadde arquivos com o método POST O PHP é capaz de receber o uploadde qualquer browser que siga as normas da W3C. Isto permite que se faça o uploadde arquivos de texto e binários. Com as funções de autenticação

Leia mais

Professor Jefferson Chaves Jefferson de Oliveira Chaves

Professor Jefferson Chaves Jefferson de Oliveira Chaves Professor Jefferson Chaves Jefferson.chaves@ifc-araquari.edu.br Entrada de dados; Formulários Escopo de variáveis; $_GET, $_POST e as variáveis $_SUPERGLOBAIS; O método isset( ); As declarações include

Leia mais

Desenvolvimento de Aplicações Web. Prof. José Eduardo A. de O. Teixeira www.vqv.com.br / j.edu@vqv.com.br

Desenvolvimento de Aplicações Web. Prof. José Eduardo A. de O. Teixeira www.vqv.com.br / j.edu@vqv.com.br Desenvolvimento de Aplicações Web Programação Contextualização de aplicações Web: navegadores e servidores como interpretadores, tecnologias do lado do cliente (XHTML, CSS, Javascript) e do lado do servidor

Leia mais

JSP e Servlet Princípio de MVC

JSP e Servlet Princípio de MVC UNIPÊ Centro Universitário de João Pessoa Desenvolvimento para Web HTTP e Servlets JSP e Servlet Princípio de MVC ducaribas@gmail.com 1 12 JSP e Servlets Desvantagens de JSP e Servlets Servlets Escrever

Leia mais

Trabalhando com Servlet

Trabalhando com Servlet Trabalhando com Servlet Primeiro Servlet O primeiro passo a ser dado é criar uma classe Java como qualquer outra. Essa nova classe criada deve estender a classe abstrata HttpServlet pertencente ao pacote

Leia mais

Tutorial 1 Configuração Apache Tomcat no NetBeans 8.0 (passo a passo)

Tutorial 1 Configuração Apache Tomcat no NetBeans 8.0 (passo a passo) Nome do laboratório: Laboratório de Programação Ferramenta 1 -NetBeans 8.0 WEB Elaborado por: Osmar de Oliveira Braz Junior Descrição Este tutorial tem como objetivo mostrar a construção de aplicações

Leia mais

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos) Desenvolvimento de Sistemas Web A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos) Prof. Mauro Lopes 1-31 24 Objetivos Dando continuidade aos estudos sobre JSP,

Leia mais

O que é uma tag Tag tag tag tag tag tags tags HTML O que é uma tag library biblioteca de tags tags Java Standard Tag Library JSTL Tag Library JSTL

O que é uma tag Tag tag tag tag tag tags tags HTML O que é uma tag library biblioteca de tags tags Java Standard Tag Library JSTL Tag Library JSTL O que é uma tag Tag é uma tecnologia para o ambiente JSP. Um desenvolvedor pode usar código Java para criar um pequeno componente reutilizável que pode ser colocado na página JSP para executar alguma tarefa

Leia mais

Engenharia de Software

Engenharia de Software UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre 2 o Teste, 17 de Junho de 2017 Duração: 90 minutos Nome: Número: Este teste tem um conjunto de

Leia mais

Java Server Pages (JSP)

Java Server Pages (JSP) Java Server Pages () joao@ecomp.uefs.br Departamento de Ciências Exatas Universidade Estadual de Feira de Santana Problemas com Sevlet Como fazer um Servlet para exibir esta página? 1 Código do Servlet

Leia mais

Aplicação MVC com Class Library

Aplicação MVC com Class Library Aplicação MVC com Class Library Vamos considerar uma Class Library com o modelo de dados e com acesso à base de dados através do Entity Framework. Uma Class Library nunca funciona sozinha. Vamos usá-la

Leia mais

Desenvolvimento de Aplicações para Internet Aula 5

Desenvolvimento de Aplicações para Internet Aula 5 Desenvolvimento de Aplicações para Internet Aula 5 Celso Olivete Júnior olivete@fct.unesp.br www.fct.unesp.br/docentes/dmec/olivete Na aula passada Linguagem PHP: Introdução tiposdedados operadores estruturas

Leia mais

Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos) Linguagem de Programação para Web Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos) Prof. Mauro Lopes 1-31 28 Objetivos Dando continuidade aos estudos sobre JSP, apresentaremos os

Leia mais

Programação para Internet II

Programação para Internet II Programação para Internet II Aulas 05 e 06 Fernando F. Costa nando@fimes.edu.br http://blog.fimes.edu.br/fernando JavaBeans Fundamentos básicos de JavaBeans JavaBeans são componentes de softwares escritos

Leia mais

Engenharia de Software

Engenharia de Software UNIVERSIDADE DE LISBOA INSTITUTO SUPERIOR TÉCNICO Engenharia de Software LEIC/LETI, 3 o Ano, 2 o Semestre 2 o Teste, 17 de Junho de 2017 Duração: 90 minutos Nome: Número: Este teste tem um conjunto de

Leia mais

Vamos falar de Hibernate?

Vamos falar de Hibernate? Vamos falar de Hibernate? Hibernate é um framework ORM (Object-Relationship Management) muito bacana que nos permite ter muita produtividade na manipulação de objetos a serem persistidos no banco de dados.

Leia mais

Sessão e inclusão de arquivos no PHP

Sessão e inclusão de arquivos no PHP Sessão e inclusão de arquivos no PHP Neste pequeno sistema iremos tratar de alguns pontos diferenciais: - Sessão no PHP baseado em validação de login no banco de dados para acesso ao sistema; - Inclusão

Leia mais

Adicionando mais tags HTML

Adicionando mais tags HTML Instituto Federal de Minas Gerais Campus Ponte Nova Adicionando mais tags HTML Professor: Saulo Henrique Cabral Silva Bookmark Bookmark ou demarcação de destinos para links (informações) dentro do próprio

Leia mais

Continuação... Criando a Interface e adiante

Continuação... Criando a Interface e adiante Continuação... Criando a Interface e adiante Racepitulando 1. Criar um projeto web: JavaServer Faces + Tomcat + Primefaces 2. Criar um banco de dados Postgresql 3. Adicionar os jars: javax.persistence

Leia mais

Treinamento. Professor: Maurício Giacomini Penteado 1/42

Treinamento. Professor: Maurício Giacomini Penteado 1/42 Treinamento Professor: Maurício Giacomini Penteado 1/42 Conceitos Clientes Container 2/42 Processo de Solicitação 3/42 4/42 5/42 Objetos do processo de solicitação: Headers Request Response Contexto Config

Leia mais

Programação para Internet

Programação para Internet AULA: Passagem de parâmetros em PHP (URL e Formulários) Programação para Internet http://docentes.ifrn.edu.br/albalopes alba.lopes@ifrn.edu.br Passagem de parâmetros Em PHP, há algumas formas de passar

Leia mais

Meta Programming. Nelson Ferraz nferraz@gmail.com

Meta Programming. Nelson Ferraz nferraz@gmail.com Meta Programming Nelson Ferraz nferraz@gmail.com Resumo Meta Programming Code Generation AppML 23/11/07 Nelson Ferraz 2 Meta Programming Programas que manipulam programas Geração de

Leia mais

Introdução ao Javascript

Introdução ao Javascript Programação WEB I Introdução ao Javascript Apresentação da Disciplina,Introdução a linguagem Javascript Objetivos da Disciplina Apresentar os principais conceitos da linguagem Javascript referente à programação

Leia mais

Tutorial Cold Fusion Módulo 2 Cold Fusion Brasil -

Tutorial Cold Fusion Módulo 2 Cold Fusion Brasil - www.coldfusionbrasil.com.br 2000 ENTENDENDO MAIS SOBRE CFOUTPUT 3 USO DO PARÂMETRO GROUP 3 USO DO PARÂMETRO GROUPCASESENSITIVE 4 USO DO PARÂMETRO STARTROW 4 USO DO PARÂMETRO MAXROWS 4 CRIANDO FORMULÁRIOS

Leia mais

Many-to-many. Mapear no Context Na classe Context.cs, dentro do método OnModelCreating, adicionar o trecho

Many-to-many. Mapear no Context Na classe Context.cs, dentro do método OnModelCreating, adicionar o trecho Many-to-many Adicionar o relacionamento Transporte Clientes Na classe Transporte.cs Adicionar o relacionamento public virtual ICollection Clientes get; set; Na classe Cliente.cs Adicionar o relacionamento

Leia mais

Laboratório de Sistemas e Serviços Web

Laboratório de Sistemas e Serviços Web Ministério da Ciência, Tecnologia e Ensino Superior U.C. 21182 Laboratório de Sistemas e Serviços Web Época Recurso, 2017/2018 INSTRUÇÕES PARA A RESOLUÇÃO DO EXAME, ACONSELHA-SE QUE LEIA ATENTAMENTE O

Leia mais

Desenvolvimento Web TCC Turma A-1

Desenvolvimento Web TCC Turma A-1 Desenvolvimento Web TCC-00.226 Turma A-1 Conteúdo Model-View-Controller (MVC) Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2013.2/tcc-00.226

Leia mais

Web Services REST JAX-RS

Web Services REST JAX-RS Web Services REST JAX-RS Professor: Ricardo Luis dos Santos IFSUL 2015 Agenda Principais tecnologias envolvidas Testando os serviços desenvolvidos JAX-RS Principais anotações JAX-RS Principais anotações

Leia mais

JPA 2.0 e Servlet 3.0

JPA 2.0 e Servlet 3.0 JPA 2.0 e Servlet 3.0 Elaine Silva Instrutora Globalcode Melissa Villela Instrutora Globalcode 1 Agenda > Objetivo > JPA 2.0 > Servlet 3.0 > Conclusões 2 Agenda > Objetivo > JPA 2.0 > Servlet 3.0 > Conclusões

Leia mais

Introdução à linguagem HTML. Volnys Borges Bernal

Introdução à linguagem HTML. Volnys Borges Bernal 1 Introdução à linguagem HTML Volnys Borges Bernal 2013-2015 Volnys Bernal 2 Introdução à linguagem HTML Sumário Visão geral Primeira página Principais tags Principais atributos Formulários 2011-2015 Volnys

Leia mais

VALIDAÇÃO DE DADOS COM O PADRÃO MVC

VALIDAÇÃO DE DADOS COM O PADRÃO MVC VALIDAÇÃO DE DADOS COM O PADRÃO MVC Emanuel Braz da Cruz Leonardo Soares Vianna André Lúcio de Oliveira Bruno Lessa RESUMO A validação de dados no padrão MVC consiste de atributos simples e fácil de usar

Leia mais

O que fazer ao receber o Caso de Uso NOMEDAENTIDADE CRUD?

O que fazer ao receber o Caso de Uso NOMEDAENTIDADE CRUD? O que fazer ao receber o Caso de Uso NOMEDAENTIDADE CRUD? Um caso de uso envolve uma regra de negocio com as telas e entidades associadas na operação. No documento é descrito todas as validações de tela

Leia mais

API - Lista de Compras

API - Lista de Compras Editora Inovação EIRELI API - Lista de Compras Guilherme Branco Stracini 2015 L i s t a d e C o m p r a s - A P I Sumário Sobre... 2 A aplicação... 2 A API... 2 Ambiente de Manutenção... 3 Ambiente de

Leia mais

TUTORIAL DE INTRODUÇÃO AO CEWOLF

TUTORIAL DE INTRODUÇÃO AO CEWOLF 1 TUTORIAL DE INTRODUÇÃO AO CEWOLF CRIANDO GRÁFICOS COM JSP, CEWOLF/JFREECHART E MYSQL 1. Introdução O Cewolf (http://cewolf.sourceforge.net/) é uma biblioteca que facilita a criação de gráficos dinâmicos

Leia mais

Desenvolvimento de Aplicações para Internet Aula 11

Desenvolvimento de Aplicações para Internet Aula 11 Desenvolvimento de Aplicações para Internet Aula 11 Celso Olivete Júnior olivete@fct.unesp.br www.fct.unesp.br/docentes/dmec/olivete jquery Na aula passada: Selecionando atributos Manipulando CSS Inserindo

Leia mais

Enums em Java: utilização e persistência

Enums em Java: utilização e persistência Enums em Java: utilização e persistência Jadson José dos Santos jadsonjs@gmail.com Nas primeiras versões da linguagem Java, a única forma que existia para se utilizar constantes enumeradas era através

Leia mais

Java: Linguagem de programação (OOP) JavaScipt: Linguagem de scripts (OOP)

Java: Linguagem de programação (OOP) JavaScipt: Linguagem de scripts (OOP) Executado do lado do cliente, interage com o usuário sem a necessidade do script passar pelo servidor. Desenvolvida por Brendan Eich, da Netscape Communications Corporation em 1995 (LiveScript). 1ª linguagem

Leia mais

Autoria Web. Formulários Aula 5. Cleverton Hentz

Autoria Web. Formulários Aula 5. Cleverton Hentz Autoria Web Formulários Aula 5 Cleverton Hentz Sumário da Aula } Introdução } Formulários Básicos } Elementos Suportados 2 Introdução } Os formulários possibilitam o envio de informação para o servidor

Leia mais

Autoria Web. Professor: Diego Oliveira. Conteúdo 03: Tags de Formulário

Autoria Web. Professor: Diego Oliveira. Conteúdo 03: Tags de Formulário Autoria Web Professor: Diego Oliveira Conteúdo 03: Tags de Formulário Caminhos Os caminhos dentro de um projeto HTML podem ser Relativos ou Absolutos O caminho Relativo é o caminho a partir da página em

Leia mais

A figura acima mostra o script de criação do banco de dados que chamaremos de minicurso.

A figura acima mostra o script de criação do banco de dados que chamaremos de minicurso. Primeiro passo é criar um banco de dados. Pois com um esquema montado, utilizaremos o Framework de mapeamento objeto relacional o Hibernate, para montar nosso projeto. A figura acima mostra o script de

Leia mais

Programação para Internet

Programação para Internet Universidade Federal de Uberlândia Faculdade de Computação Programação para Internet Curso de Sistemas de Informação Prof. Dr. Daniel A. Furtado Módulo 10 Web Dinâmica Introdução ao AJAX AJAX Introdução

Leia mais

Recursos Complementares (Tabelas e Formulários)

Recursos Complementares (Tabelas e Formulários) Linguagem de Programação para Web Recursos Complementares (Tabelas e Formulários) Prof. Mauro Lopes 1-31 30 Objetivo Nesta aula iremos trabalhar o conceito de tabelas e todas as tags associadas ao seu

Leia mais

Introdução ao Desenvolvimento Web

Introdução ao Desenvolvimento Web MKT-MDL-02 Versão 00 Introdução ao Desenvolvimento Web Aula 1 O que vamos ver nesta aula? Introdução ao Desenvolvimento Web Arquitetura Cliente-Servidor HTML CSS Servlets Por que Java Web? Integração com

Leia mais

Construção de Sites 2. Prof. Christiano Lima Santos

Construção de Sites 2. Prof. Christiano Lima Santos Construção de Sites 2 Prof. Christiano Lima Santos Introdução a JavaScript Parte 01 Como usar JavaScript em uma página 1.1 Forma #1 aplicando diretamente à tag HTML teste

Leia mais

4 Geração Automatizada de Interfaces

4 Geração Automatizada de Interfaces 4 Geração Automatizada de Interfaces A Ontologia de Descrição de Interfaces Ricas, discutida no capítulo 3, lança a base para a especificação de uma completa solução de software para auxiliar o projeto

Leia mais

Bem vindos ao Curso de ASP.NET MVC 3 Razor e C#

Bem vindos ao Curso de ASP.NET MVC 3 Razor e C# Bem vindos ao Curso de ASP.NET MVC 3 Razor e C# Pré-requisitos: O curso de C# Csharp veja aqui e o curso de ASP.NET Básico veja aqui Valor R$129.00 compre aqui Veja o video do curso aqui Aprenda ASP.NET

Leia mais

Managed Beans e Tags JSF

Managed Beans e Tags JSF Managed Beans e Tags JSF Passos iniciais no Projeto Paulo Ricardo Lisboa de Almeida 1 Instanciando a aplicação Clone o projeto da aula com o Git (disponível no site da disciplina) Suba o banco de dados

Leia mais

DESENVOLVIMENTO DE SISTEMAS WEB. Lista de Exercícios AV2-01. Luiz Leão

DESENVOLVIMENTO DE SISTEMAS WEB. Lista de Exercícios AV2-01. Luiz Leão DESENVOLVIMENTO DE SISTEMAS WEB Luiz Leão luizleao@gmail.com http://www.luizleao.com Questão 01 Sobre as características da programação orientada a objetos, explique o encapsulamento. Questão 01 - Resposta

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa

Leia mais

TAGS. O HTML trabalha com o sistema de tags (etiquetas). Esse sistema funciona da seguinte maneira. <tag>conteúdo da tag</tag>

TAGS. O HTML trabalha com o sistema de tags (etiquetas). Esse sistema funciona da seguinte maneira. <tag>conteúdo da tag</tag> HTML DDW TAGS O HTML trabalha com o sistema de tags (etiquetas). Esse sistema funciona da seguinte maneira. conteúdo da tag Toda tag aberta, deve ser fechada, salvo raras exceções, nesses casos

Leia mais

22/05/2012 CRIANDO UM PROJETO COM TELAS ESTRUTURA DA APLICAÇÃO LOGIN BANCO DE DADOS TAREFAS PHP MYSQL PARTE 2

22/05/2012 CRIANDO UM PROJETO COM TELAS ESTRUTURA DA APLICAÇÃO LOGIN BANCO DE DADOS TAREFAS PHP MYSQL PARTE 2 CRIANDO UM PROJETO COM TELAS Páginas com formulário Acesso ao banco de dados PHP MYSQL PARTE 2 Luciana Balieiro Cosme ESTRUTURA DA APLICAÇÃO LOGIN BANCO DE DADOS # Coluna Nome e Tipo 1 codigo int(11) AUTO_INCREMENT

Leia mais

1. Fazer aplicação exemplo

1. Fazer aplicação exemplo 1. Fazer aplicação exemplo 1.1. Criar novo projeto Web (EstudoDeCaso.Exemplo) 1.2. index.jsp (com os links individuais para cadastros) 1.3. cadastrarpessoa.jsp (formulário simples) 1.4. servlet CadastrarPessoa

Leia mais

(UFF) JSF (I) TEPIS II

(UFF) JSF (I) TEPIS II Aula 11: JSF (I) Diego Passos Universidade Federal Fluminense Técnicas de Projeto e Implementação de Sistemas II Diego Passos (UFF) JSF (I) TEPIS II 1 / 34 Java Server Faces API que provê um framework

Leia mais

Componentes Web do JEE

Componentes Web do JEE Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Campus Natal-Central Diretoria Acadêmica de Gestão e Tecnologia da Informação Tecnologia em Análise e Desenvolvimento de Sistemas

Leia mais

Retrofit. Criar um novo projeto. Selecionar a API. Retrofit para consumir Web Service Luiz Eduardo Guarino de Vasconcelos

Retrofit. Criar um novo projeto. Selecionar a API. Retrofit para consumir Web Service Luiz Eduardo Guarino de Vasconcelos Retrofit Criar um novo projeto Selecionar a API Empty Activity MainActivity Finish. Adicionar Novas Dependências Menu File > Project Structure Modulo app > Aba Dependencies Clique em adicionar (+) no canto

Leia mais

Utilizando Swing com Hibernate

Utilizando Swing com Hibernate Programando com Java Artigo http://mballem.wordpress.com/ Utilizando Swing com Hibernate Utilizando a SessionFactory Autor Marcio Ballem: é formado em Sistemas de Informação e possui certificação Oracle

Leia mais

Programação para Dispositivos Móveis

Programação para Dispositivos Móveis Prof. MSc. Flávio Barros flavioifma@gmail.com www.flaviobarros.com.br Programação para Dispositivos Móveis Aula: CRUD Agenda com SQLite Parte II Caxias - MA Projeto Android Estrutura Activity MainActivity.java

Leia mais

Desenvolvimento Web XHTML Formulários. Prof. Bruno E. G. Gomes

Desenvolvimento Web XHTML Formulários. Prof. Bruno E. G. Gomes Desenvolvimento Web XHTML Formulários Prof. Bruno E. G. Gomes 2014 Introdução Um recurso bastante utilizado no desenvolvimento Web é o envio de dados de uma página para o servidor quando fornecemos informações,

Leia mais

Volnys Bernal. Introdução à linguagem HTML. Introdução à linguagem HTML. Visão geral. Visão geral. Visão geral. Visão geral.

Volnys Bernal. Introdução à linguagem HTML. Introdução à linguagem HTML. Visão geral. Visão geral. Visão geral. Visão geral. 1 2 Introdução à linguagem HTML Sumário Volnys Borges Bernal Primeira página Principais tags Principais atributos 3 4 HTML HTML = HyperText Markup Language Linguagem de marcação (Markup) para criação de

Leia mais

Tutorial Hibernate + Vraptor para projetos Restful.

Tutorial Hibernate + Vraptor para projetos Restful. Tutorial Hibernate + Vraptor para projetos Restful. Configurando o Projeto Passo 1 Baixe o Eclipse IDE for Java EE Developers: https://www.eclipse.org/downloads. Passo 2 Vamos criar um novo projeto Maven,

Leia mais

AULA 01. Introdução (HTML, CSS e Javascript) JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS

AULA 01. Introdução (HTML, CSS e Javascript) JAVA ENTERPRISE EDITION - DESENVOLVENDO APLICAÇÕES CORPORATIVAS AULA 01 Introdução (HTML, CSS e Javascript) Mestrado em Educação (em andamento) MBA em Negócios em Mídias Digitais MBA em Marketing e Vendas Especialista em games Bacharel em Sistema de Informação Email:

Leia mais