22
Spring Web MVC Eder Magalhães [email protected] twitter.com/edermag

Introducao ao Spring Web MVC

Embed Size (px)

DESCRIPTION

Spring Web MVC é um sofisticado framework para desenvolvimento de aplicativos web. A apresentação ilustra fundamentos introdutórios e características do framework.

Citation preview

Page 1: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Spring Web MVC  

Eder Magalhães [email protected]

twitter.com/edermag

Page 2: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Spring Framework para Web

! Spring Web MVC

!   Spring Web Flow

!   Spring Faces

!   Spring JavaScript

Page 3: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Flexível e sofisticado framework para desenvolvimento de aplicativos Web em Java, seguindo a estrutura Model View Controller.

Spring Web MVC

“Open  for  extension,  closed  for  modifica8on”  Bob  Mar8n,  the  open-­‐closer  principle  

Page 4: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Por falar em MVC, camadas...

Presenta)on  

Web  

Service  

Persistence  

Model  

Page 5: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Uma (re)visão sobre MVC

Page 6: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Features !   Controllers e Form-Beans são POJOS; !   Validadores e Conversores; !   Suporte a IoC / DI (Core Spring); !   Flexibilidade em Mapping Request + Render Response !   Arquitetura RESTFull; !   Suporte a JSR 303; !   Exception Handling; !   Favorece Testes; !   Plugável a outras tecnologias Web; !   Annotation Driven Development;

Page 7: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Demonstração

Page 8: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Criando um Controller

@Controller @RequestMapping("/produtos") public class ProdutoController { @RequestMapping public String lista() { return "lista"; } }

http://<host>/<appcontext>/produtos

lista.jsp  

Page 9: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Mais flexibilidade c/ RequestMapping

@Controller @RequestMapping("/produtos") public class ProdutoController { @RequestMapping(value="/{id}",method=RequestMethod.GET) public String exibe(@PathVariable("id") Integer id) { //... } @RequestMapping(params = "find=byDesc", method=RequestMethod.GET) public String filtraPorDescricao(@RequestParam String desc) { //... } }

http://<host>/<appcontext>/produtos/20

http://<host>/<appcontext>/produtos?find=byDesc&desc=Livro

Page 10: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Injeção de Dependência

@Controller @RequestMapping("/produtos") public class ProdutoController { @Autowire private ProdutoService service; //... }

@Component public class ProdutoServiceImpl implements ProdutoService { //... }

Page 11: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Acessando atributos na Session

@Controller @RequestMapping("/produtos") @SessionAttribute("user") public class ProdutoController { @RequestMapping(method=RequestMethod.DELETE) public String delete(Long id, @ModelAttribute("user") String username) { // ... } }

Page 12: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Trabalhando com a Request

@Controller @RequestMapping("/produtos") public class ProdutoController { @RequestMapping("requestValues") public String requestValues(HttpServletRequest req, Locale locale) { //... } }

Page 13: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Binding do view com model

@Controller @RequestMapping("/produtos") public class ProdutoController { @RequestMapping(method=RequestMethod.GET) public String formNovoProduto(Model model) { model.addAttribute(new Produto()); return ”novo”; } @RequestMapping(method=RequestMethod.POST) public String salvar(Produto produto) { //... } }

novo.jsp  

Page 14: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Validação public class Produto { @NotEmpty private String nome; @NumberFormat(pattern="$###,#0") private Double preco; //... }

public class ProdutoController { @RequestMapping(method=RequestMethod.POST) public String salvar( @Valid Produto p, BindingResult result) { //... } }  

Page 15: Introducao ao Spring Web MVC

Globalcode  –  Open4education

RESTful

@Controller @RequestMapping("/produtos") public class ProdutoController { @RequestMapping(value="atualizar", method=RequestMethod.PUT) public String atualizar(Produto produto) { //... } @RequestMapping(value="delete", method=RequestMethod.DELETE) public String delete(Produto produto) { //... } }

//view jsp <form:form action=“./produtos/delete“ method="DELETE"> ... </form:form> //fake  

Page 16: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Render Response @Controller @RequestMapping("/produtos") public class ProdutoController { @RequestMapping(value="/{id}",method=RequestMethod.GET) public String exibeProduto(@PathVariable("id") Integer id, Model model) { //... return "produto"; } @RequestMapping(params = "find=byId", method=RequestMethod.GET) public @ResponseBody Produto getProdutoPorId( @RequestParam Long id) { Produto produto = service.findById(id); return produto; } }

Page 17: Introducao ao Spring Web MVC

Globalcode  –  Open4education

JSON

public class ProdutoController { @RequestMapping(value = "/status", method=RequestMethod.GET) public @ResponseBody String getStatusProduto(Integer idProd) { return service.situacaoEmEstoque(idProd); } }

//view jsp usando JQuery function checkStatusProduto() { $.getJSON("produtos/status", { idProd: $('#inputId').val }, function (status) { $('#lStat').appendHtml("<h6>"+status+"</h6>"); });  }  

Page 18: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Custom tags <JSP> <%@ taglib uri="http://www.springframework.org/tags" prefix="s"%> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> ... <s:url value="/produtos/novo" var="save_form_url"/> <form:form id="form" method="post" action="${save_form_url}" modelAttribute="produto" cssClass="cleanform"> <form:label path="descricao“>Descricao</form:label> <form:input path="descricao" /> ... </form:form> ...

Page 19: Introducao ao Spring Web MVC

Globalcode  –  Open4education

O que mais? !   @RequestHeader

!   @RequestBody

!   @CookieValue

!   @ExceptionHandler

!   MultipartFile

!   Etags / HttpEntity / ResponseEntity

Page 20: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Mais informações !   http://www.springsource.org/documentation !   http://static.springsource.org/spring/docs/3.0.x/reference/mvc.html !   http://blog.springsource.com/2009/03/08/rest-in-spring-3-mvc/ !   http://src.springsource.org/svn/spring-samples/mvc-showcase !   http://blog.springsource.com/2010/01/25/ajax-simplifications-in-spring-3-0/ !   http://blog.springsource.com/2011/01/04/green-beans-getting-started-with-spring-mvc/ !   http://blog.globalcode.com.br/search/label/Spring !   http://www.springbrasil.com.br/

Page 21: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Follow !   @springrod

!   @kdonald

!   @poutsma

!   @benalexau

!   @youandwe

!   @globalcode

Page 22: Introducao ao Spring Web MVC

Globalcode  –  Open4education

Obrigado !

Eder Magalhães [email protected]

twitter.com/edermag