Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introducao ao Spring Web MVC

4,076 views

Published on

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

Published in: Technology

Introducao ao Spring Web MVC

  1. 1. Spring Web MVC   Eder Magalhães eder@yaw.com.br twitter.com/edermag Globalcode  –  Open4education
  2. 2. Spring Framework para Web! Spring Web MVC!   Spring Web Flow!   Spring Faces!   Spring JavaScript Globalcode  –  Open4education
  3. 3. Spring Web MVC Flexível e sofisticado framework para desenvolvimento de aplicativos Web em Java, seguindo a estrutura Model View Controller. “Open  for  extension,  closed  for  modifica8on”   Bob  Mar8n,  the  open-­‐closer  principle   Globalcode  –  Open4education
  4. 4. Por falar em MVC, camadas... Presenta)on   Web   Model   Service   Persistence   Globalcode  –  Open4education
  5. 5. Uma (re)visão sobre MVC Globalcode  –  Open4education
  6. 6. 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; Globalcode  –  Open4education
  7. 7. Demonstração Globalcode  –  Open4education
  8. 8. Criando um Controller http://<host>/<appcontext>/produtos@Controller@RequestMapping("/produtos")public class ProdutoController { @RequestMapping public String lista() { return "lista"; }} lista.jsp   Globalcode  –  Open4education
  9. 9. Mais flexibilidade c/ RequestMapping http://<host>/<appcontext>/produtos/20@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?find=byDesc&desc=Livro Globalcode  –  Open4education
  10. 10. Injeção de Dependência@Controller@RequestMapping("/produtos")public class ProdutoController { @Autowire private ProdutoService service; //...} @Component public class ProdutoServiceImpl implements ProdutoService { //... } Globalcode  –  Open4education
  11. 11. 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) { // ... }} Globalcode  –  Open4education
  12. 12. Trabalhando com a Request@Controller@RequestMapping("/produtos")public class ProdutoController { @RequestMapping("requestValues") public String requestValues(HttpServletRequest req, Locale locale) { //... }} Globalcode  –  Open4education
  13. 13. 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”; novo.jsp   } @RequestMapping(method=RequestMethod.POST) public String salvar(Produto produto) { //... }} Globalcode  –  Open4education
  14. 14. Validaçãopublic 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) { //... } }   Globalcode  –  Open4education
  15. 15. 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   Globalcode  –  Open4education
  16. 16. 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; }} Globalcode  –  Open4education
  17. 17. JSONpublic 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>"); });   }   Globalcode  –  Open4education
  18. 18. 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> ... Globalcode  –  Open4education
  19. 19. O que mais?!   @RequestHeader!   @RequestBody!   @CookieValue!   @ExceptionHandler!   MultipartFile!   Etags / HttpEntity / ResponseEntity Globalcode  –  Open4education
  20. 20. 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/ Globalcode  –  Open4education
  21. 21. Follow!   @springrod!   @kdonald!   @poutsma!   @benalexau!   @youandwe!   @globalcode Globalcode  –  Open4education
  22. 22. Obrigado ! Eder Magalhães eder@yaw.com.br twitter.com/edermag Globalcode  –  Open4education

×