SlideShare uma empresa Scribd logo
Spring Web MVC	
  



                 Eder Magalhães
                   eder@yaw.com.br
                 twitter.com/edermag

       Globalcode	
  –	
  Open4education
Spring Framework para Web

! Spring Web MVC

!   Spring Web Flow

!   Spring Faces

!   Spring JavaScript




                            Globalcode	
  –	
  Open4education
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
Por falar em MVC, camadas...


            Presenta)on	
  

                Web	
  




                              Model	
  
               Service	
  

            Persistence	
  



                                          Globalcode	
  –	
  Open4education
Uma (re)visão sobre 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;

                                       Globalcode	
  –	
  Open4education
Demonstração




               Globalcode	
  –	
  Open4education
Criando um Controller
                                   http://<host>/<appcontext>/produtos


@Controller
@RequestMapping("/produtos")
public class ProdutoController {

    @RequestMapping
    public String lista() {
      return "lista";
    }

}

                                   lista.jsp	
  




                                                   Globalcode	
  –	
  Open4education
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
Injeção de Dependência
@Controller
@RequestMapping("/produtos")
public class ProdutoController {

    @Autowire
    private ProdutoService service;

    //...

}



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



                                                  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) {
      // ...
    }

}




                                                Globalcode	
  –	
  Open4education
Trabalhando com a Request
@Controller
@RequestMapping("/produtos")
public class ProdutoController {

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

}




                                                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”;                                                novo.jsp	
  
    }

    @RequestMapping(method=RequestMethod.POST)
    public String salvar(Produto produto) {
      //...
    }

}




                                                   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) {
                            //...
                          }
                  }	
  


                                                     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	
  



                                                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;
    }
}



                                                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>");
                         });	
  
                 }	
  



                                                   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>

  ...




                                              Globalcode	
  –	
  Open4education
O que mais?
!   @RequestHeader
!   @RequestBody
!   @CookieValue
!   @ExceptionHandler
!   MultipartFile
!   Etags / HttpEntity / ResponseEntity




                                          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/



                                                         Globalcode	
  –	
  Open4education
Follow
!   @springrod
!   @kdonald
!   @poutsma
!   @benalexau
!   @youandwe
!   @globalcode




                  Globalcode	
  –	
  Open4education
Obrigado !




                      Eder Magalhães
               eder@yaw.com.br
             twitter.com/edermag

             Globalcode	
  –	
  Open4education

Mais conteúdo relacionado

Mais procurados (20)

PPTX
Vue.js
Luís Felipe Souza
 
PDF
Java script aula 09 - JQuery
Cristiano Pires Martins
 
PDF
Java www
Mario Jorge Pereira
 
PDF
Oficina jQuery
Cleber Fonseca
 
PDF
JavaScript Model-View no Frontend
Henrique Gogó
 
PPTX
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
PPT
Curso de Introdução - PHP Zend Framework
Evandro Klimpel Balmant
 
PPT
ZF Básico - 3. Quick Start
Marcos Bezerra
 
PDF
Backbone.js + Rails - Front-end e back-end conectados
Henrique Gogó
 
PPTX
VueJS - Uma alternativa elegante
Jonathan Bijos
 
PDF
Autenticação com AngularJS e loadOnDemand
Douglas Lira
 
ODP
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Juliano Martins
 
PDF
AngularJS com loadOnDemand
Douglas Lira
 
PPTX
Criando serviços com AngularJS
Rodrigo Branas
 
PDF
Java script aula 10 - angularjs
Cristiano Pires Martins
 
PDF
Java script aula 07 - eventos
Cristiano Pires Martins
 
PDF
Apache Wicket - Desenvolvimento WEB orientado a componentes
CI&T
 
PPTX
Construindo Diretivas com AngularJS
Rodrigo Branas
 
PPTX
LambdaDay: Backbone.js
Giovanni Bassi
 
PPTX
Jquery - Dicas e Truques
Lambda 3
 
Java script aula 09 - JQuery
Cristiano Pires Martins
 
Oficina jQuery
Cleber Fonseca
 
JavaScript Model-View no Frontend
Henrique Gogó
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
Curso de Introdução - PHP Zend Framework
Evandro Klimpel Balmant
 
ZF Básico - 3. Quick Start
Marcos Bezerra
 
Backbone.js + Rails - Front-end e back-end conectados
Henrique Gogó
 
VueJS - Uma alternativa elegante
Jonathan Bijos
 
Autenticação com AngularJS e loadOnDemand
Douglas Lira
 
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Juliano Martins
 
AngularJS com loadOnDemand
Douglas Lira
 
Criando serviços com AngularJS
Rodrigo Branas
 
Java script aula 10 - angularjs
Cristiano Pires Martins
 
Java script aula 07 - eventos
Cristiano Pires Martins
 
Apache Wicket - Desenvolvimento WEB orientado a componentes
CI&T
 
Construindo Diretivas com AngularJS
Rodrigo Branas
 
LambdaDay: Backbone.js
Giovanni Bassi
 
Jquery - Dicas e Truques
Lambda 3
 

Destaque (20)

PPTX
Spring mvc
nagarajupatangay
 
PDF
Spring mvc
Ba Big
 
PPTX
Webinar: Spring Framework - Introduction to Spring WebMVC & Spring with BigData
Edureka!
 
PDF
Spring MVC - The Basics
Ilio Catallo
 
PDF
Introduction to Spring MVC
Richard Paul
 
ODP
Java Spring MVC Framework with AngularJS by Google and HTML5
Tuna Tore
 
PPTX
Back From the Social Future
Stephen Selby
 
PDF
Planet talent
Edwin Soares
 
PDF
¡This is drupal! - Global Training Days
La Drupalera
 
PDF
Internet ve e posta yönetimi
Erol Dizdar
 
PDF
Tomcat Maven Plugin
Olivier Lamy
 
PDF
Iliad or Seaside
Sho Yoshida
 
PDF
Web service overview
Saran Yuwanna
 
PDF
GlassFish, Maven, Cloud e Java EE
Bruno Borges
 
PPT
Bug x tracker
Abhimanyu Sood
 
PDF
mapserver_install_linux
tutorialsruby
 
PPTX
Lean web architecture mit jsf 2.0, cdi & co.
adesso AG
 
PDF
Caderno SISP 2012
GovBR
 
PPT
AngularJS and SPA
Lorenzo Dematté
 
PPTX
FinistJUG - Apache TomEE
Horacio Gonzalez
 
Spring mvc
nagarajupatangay
 
Spring mvc
Ba Big
 
Webinar: Spring Framework - Introduction to Spring WebMVC & Spring with BigData
Edureka!
 
Spring MVC - The Basics
Ilio Catallo
 
Introduction to Spring MVC
Richard Paul
 
Java Spring MVC Framework with AngularJS by Google and HTML5
Tuna Tore
 
Back From the Social Future
Stephen Selby
 
Planet talent
Edwin Soares
 
¡This is drupal! - Global Training Days
La Drupalera
 
Internet ve e posta yönetimi
Erol Dizdar
 
Tomcat Maven Plugin
Olivier Lamy
 
Iliad or Seaside
Sho Yoshida
 
Web service overview
Saran Yuwanna
 
GlassFish, Maven, Cloud e Java EE
Bruno Borges
 
Bug x tracker
Abhimanyu Sood
 
mapserver_install_linux
tutorialsruby
 
Lean web architecture mit jsf 2.0, cdi & co.
adesso AG
 
Caderno SISP 2012
GovBR
 
AngularJS and SPA
Lorenzo Dematté
 
FinistJUG - Apache TomEE
Horacio Gonzalez
 
Anúncio

Semelhante a Introducao ao Spring Web MVC (20)

KEY
Spring MVC - QConSP
Eduardo Bregaida
 
ODP
VRaptor4
Renan Montenegro
 
PPT
VRaptor - Alta produtividade no Desenvolvimento Web em Java
Daniel Faria Gomes
 
PDF
Vraptor
clauvane1708
 
PDF
JavaEE 7, na era do cloud computing
Eder Magalhães
 
PDF
Android na Prática
Ramon Ribeiro Rabello
 
PDF
JSF 2.0: Uma Evolução nas Interfaces Web com Java
Dr. Spock
 
PPTX
Vraptor - Alta produtividade no Desenvolvimento Web em Java
Kaio Valente
 
PDF
Desenvolvimento web com VRaptor
Daniel Cavalcante
 
PDF
Spring MVC Framework
elliando dias
 
PDF
JSF 2.0 e ScrumToys
Dr. Spock
 
PDF
JSF 2.0 e ScrumToys
Dr. Spock
 
PPTX
O Aduino ama a Internet - TDC 2012
Marco Antonio Maciel
 
ODP
TDC 2014 SP - E o DeltaSpike ?
Rafael Benevides
 
PDF
Construindo portlets para IBM WebSphere Portal – Parte 2
rodrigoareis
 
PDF
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
Emmanuel Neri
 
PDF
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
Eder Magalhães
 
PDF
Desenvolvimento ágil com Kohana framework
Marcelo Rodrigo
 
PDF
Play Framework - FLISOL
grupoweblovers
 
PDF
Angular js
Bruno Catão
 
Spring MVC - QConSP
Eduardo Bregaida
 
VRaptor - Alta produtividade no Desenvolvimento Web em Java
Daniel Faria Gomes
 
Vraptor
clauvane1708
 
JavaEE 7, na era do cloud computing
Eder Magalhães
 
Android na Prática
Ramon Ribeiro Rabello
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
Dr. Spock
 
Vraptor - Alta produtividade no Desenvolvimento Web em Java
Kaio Valente
 
Desenvolvimento web com VRaptor
Daniel Cavalcante
 
Spring MVC Framework
elliando dias
 
JSF 2.0 e ScrumToys
Dr. Spock
 
JSF 2.0 e ScrumToys
Dr. Spock
 
O Aduino ama a Internet - TDC 2012
Marco Antonio Maciel
 
TDC 2014 SP - E o DeltaSpike ?
Rafael Benevides
 
Construindo portlets para IBM WebSphere Portal – Parte 2
rodrigoareis
 
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
Emmanuel Neri
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
Eder Magalhães
 
Desenvolvimento ágil com Kohana framework
Marcelo Rodrigo
 
Play Framework - FLISOL
grupoweblovers
 
Angular js
Bruno Catão
 
Anúncio

Mais de Eder Magalhães (20)

PDF
Cvc programacao reativa
Eder Magalhães
 
PDF
Concorrencia, baixa Latência e alta disponibilidade
Eder Magalhães
 
PDF
Java Is Back, Novidade do Java 8
Eder Magalhães
 
PDF
Desenvolva uma app Java web em poucos passos, com o Forge
Eder Magalhães
 
PDF
MongoDB outras alternativas de persistência
Eder Magalhães
 
PDF
Java e uma visão sobre PaaS
Eder Magalhães
 
PDF
JDK8: Lambda, Jigsaw e novidades
Eder Magalhães
 
PDF
Introdução a Plataforma Java EE
Eder Magalhães
 
PDF
As modificações na Linguagem: Java 7 e Java 8
Eder Magalhães
 
PDF
Desenvolvimento Produtivo com Spring Roo
Eder Magalhães
 
PDF
Futuro da linguagem e plataforma: Java 7 e 8
Eder Magalhães
 
PDF
Arquiteturas Java EE no Google App Engine
Eder Magalhães
 
PDF
Java7 tdc2011
Eder Magalhães
 
PDF
Richfaces 4 - Desenvolvimento JSF mais rico
Eder Magalhães
 
PDF
JSF 2 Components JustJava2011
Eder Magalhães
 
PDF
Introducao Spring ROO
Eder Magalhães
 
PDF
Introducao Google GO
Eder Magalhães
 
PDF
JavaFX: Abordagem Prática
Eder Magalhães
 
PDF
Desenvolvimento RIA com GWT e Spring
Eder Magalhães
 
PDF
Profissao java gwt e javafx
Eder Magalhães
 
Cvc programacao reativa
Eder Magalhães
 
Concorrencia, baixa Latência e alta disponibilidade
Eder Magalhães
 
Java Is Back, Novidade do Java 8
Eder Magalhães
 
Desenvolva uma app Java web em poucos passos, com o Forge
Eder Magalhães
 
MongoDB outras alternativas de persistência
Eder Magalhães
 
Java e uma visão sobre PaaS
Eder Magalhães
 
JDK8: Lambda, Jigsaw e novidades
Eder Magalhães
 
Introdução a Plataforma Java EE
Eder Magalhães
 
As modificações na Linguagem: Java 7 e Java 8
Eder Magalhães
 
Desenvolvimento Produtivo com Spring Roo
Eder Magalhães
 
Futuro da linguagem e plataforma: Java 7 e 8
Eder Magalhães
 
Arquiteturas Java EE no Google App Engine
Eder Magalhães
 
Java7 tdc2011
Eder Magalhães
 
Richfaces 4 - Desenvolvimento JSF mais rico
Eder Magalhães
 
JSF 2 Components JustJava2011
Eder Magalhães
 
Introducao Spring ROO
Eder Magalhães
 
Introducao Google GO
Eder Magalhães
 
JavaFX: Abordagem Prática
Eder Magalhães
 
Desenvolvimento RIA com GWT e Spring
Eder Magalhães
 
Profissao java gwt e javafx
Eder Magalhães
 

Último (7)

DOCX
150 PMBOK 7 Scenario-Based PMP Exam Questions and Answers.docx
Marcelo Cruz
 
PPTX
Windows 11 Apostila do Básico ao Avançado
deividcosimo1
 
PDF
Ceritificado Imersão SOC HackOne Sab/Dom.pdf
RodrigoMori7
 
PDF
Aulas Extras - O que é e por que Aprender e Utilizar.pdf
fmartinsss
 
PPTX
Exercícios de PowerPoint Completo Básico .pptx
LucasSantos564546
 
PPTX
5 Critérios para seleção do objeto de estudo.pptx
Eduardo Corrêa
 
PDF
Estudos DAC - projeto de arquitetura futurista
ra189223
 
150 PMBOK 7 Scenario-Based PMP Exam Questions and Answers.docx
Marcelo Cruz
 
Windows 11 Apostila do Básico ao Avançado
deividcosimo1
 
Ceritificado Imersão SOC HackOne Sab/Dom.pdf
RodrigoMori7
 
Aulas Extras - O que é e por que Aprender e Utilizar.pdf
fmartinsss
 
Exercícios de PowerPoint Completo Básico .pptx
LucasSantos564546
 
5 Critérios para seleção do objeto de estudo.pptx
Eduardo Corrêa
 
Estudos DAC - projeto de arquitetura futurista
ra189223
 

Introducao ao Spring Web MVC

  • 1. Spring Web MVC   Eder Magalhães [email protected] twitter.com/edermag Globalcode  –  Open4education
  • 2. Spring Framework para Web ! Spring Web MVC !   Spring Web Flow !   Spring Faces !   Spring JavaScript Globalcode  –  Open4education
  • 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. Por falar em MVC, camadas... Presenta)on   Web   Model   Service   Persistence   Globalcode  –  Open4education
  • 5. Uma (re)visão sobre MVC Globalcode  –  Open4education
  • 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. Demonstração Globalcode  –  Open4education
  • 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. 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. Injeção de Dependência @Controller @RequestMapping("/produtos") public class ProdutoController { @Autowire private ProdutoService service; //... } @Component public class ProdutoServiceImpl implements ProdutoService { //... } Globalcode  –  Open4education
  • 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. Trabalhando com a Request @Controller @RequestMapping("/produtos") public class ProdutoController { @RequestMapping("requestValues") public String requestValues(HttpServletRequest req, Locale locale) { //... } } Globalcode  –  Open4education
  • 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. 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) { //... } }   Globalcode  –  Open4education
  • 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. 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. 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>"); });   }   Globalcode  –  Open4education
  • 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. O que mais? !   @RequestHeader !   @RequestBody !   @CookieValue !   @ExceptionHandler !   MultipartFile !   Etags / HttpEntity / ResponseEntity Globalcode  –  Open4education
  • 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. Follow !   @springrod !   @kdonald !   @poutsma !   @benalexau !   @youandwe !   @globalcode Globalcode  –  Open4education
  • 22. Obrigado ! Eder Magalhães [email protected] twitter.com/edermag Globalcode  –  Open4education