SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
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

JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no FrontendHenrique Gogó
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Curso de Introdução - PHP Zend Framework
Curso de Introdução - PHP Zend FrameworkCurso de Introdução - PHP Zend Framework
Curso de Introdução - PHP Zend FrameworkEvandro Klimpel Balmant
 
ZF Básico - 3. Quick Start
ZF Básico - 3. Quick StartZF Básico - 3. Quick Start
ZF Básico - 3. Quick StartMarcos Bezerra
 
Backbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectadosBackbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectadosHenrique Gogó
 
VueJS - Uma alternativa elegante
VueJS - Uma alternativa eleganteVueJS - Uma alternativa elegante
VueJS - Uma alternativa eleganteJonathan Bijos
 
Autenticação com AngularJS e loadOnDemand
Autenticação com AngularJS e loadOnDemandAutenticação com AngularJS e loadOnDemand
Autenticação com AngularJS e loadOnDemandDouglas Lira
 
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphereCriando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphereJuliano Martins
 
AngularJS com loadOnDemand
AngularJS com loadOnDemandAngularJS com loadOnDemand
AngularJS com loadOnDemandDouglas Lira
 
Criando serviços com AngularJS
Criando serviços com AngularJSCriando serviços com AngularJS
Criando serviços com AngularJSRodrigo Branas
 
Apache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentesApache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentesCI&T
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJSRodrigo Branas
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.jsGiovanni Bassi
 
Jquery - Dicas e Truques
Jquery - Dicas e TruquesJquery - Dicas e Truques
Jquery - Dicas e TruquesLambda 3
 

Mais procurados (20)

Vue.js
Vue.jsVue.js
Vue.js
 
Java script aula 09 - JQuery
Java script   aula 09 - JQueryJava script   aula 09 - JQuery
Java script aula 09 - JQuery
 
Java www
Java wwwJava www
Java www
 
Oficina jQuery
Oficina jQueryOficina jQuery
Oficina jQuery
 
JavaScript Model-View no Frontend
JavaScript Model-View no FrontendJavaScript Model-View no Frontend
JavaScript Model-View no Frontend
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Curso de Introdução - PHP Zend Framework
Curso de Introdução - PHP Zend FrameworkCurso de Introdução - PHP Zend Framework
Curso de Introdução - PHP Zend Framework
 
ZF Básico - 3. Quick Start
ZF Básico - 3. Quick StartZF Básico - 3. Quick Start
ZF Básico - 3. Quick Start
 
Backbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectadosBackbone.js + Rails - Front-end e back-end conectados
Backbone.js + Rails - Front-end e back-end conectados
 
VueJS - Uma alternativa elegante
VueJS - Uma alternativa eleganteVueJS - Uma alternativa elegante
VueJS - Uma alternativa elegante
 
Autenticação com AngularJS e loadOnDemand
Autenticação com AngularJS e loadOnDemandAutenticação com AngularJS e loadOnDemand
Autenticação com AngularJS e loadOnDemand
 
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphereCriando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
Criando um Web Service Restful com Jersey, Eclipse, JBoss, Tomcat, WebSphere
 
AngularJS com loadOnDemand
AngularJS com loadOnDemandAngularJS com loadOnDemand
AngularJS com loadOnDemand
 
Criando serviços com AngularJS
Criando serviços com AngularJSCriando serviços com AngularJS
Criando serviços com AngularJS
 
Java script aula 10 - angularjs
Java script   aula 10 - angularjsJava script   aula 10 - angularjs
Java script aula 10 - angularjs
 
Java script aula 07 - eventos
Java script   aula 07 - eventosJava script   aula 07 - eventos
Java script aula 07 - eventos
 
Apache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentesApache Wicket - Desenvolvimento WEB orientado a componentes
Apache Wicket - Desenvolvimento WEB orientado a componentes
 
Construindo Diretivas com AngularJS
Construindo Diretivas com AngularJSConstruindo Diretivas com AngularJS
Construindo Diretivas com AngularJS
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
Jquery - Dicas e Truques
Jquery - Dicas e TruquesJquery - Dicas e Truques
Jquery - Dicas e Truques
 

Destaque

Spring mvc
Spring mvcSpring mvc
Spring mvcBa Big
 
Webinar: Spring Framework - Introduction to Spring WebMVC & Spring with BigData
Webinar: Spring Framework - Introduction to Spring WebMVC & Spring with BigData Webinar: Spring Framework - Introduction to Spring WebMVC & Spring with BigData
Webinar: Spring Framework - Introduction to Spring WebMVC & Spring with BigData Edureka!
 
Spring MVC - The Basics
Spring MVC -  The BasicsSpring MVC -  The Basics
Spring MVC - The BasicsIlio Catallo
 
Introduction to Spring MVC
Introduction to Spring MVCIntroduction to Spring MVC
Introduction to Spring MVCRichard Paul
 
Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5Tuna Tore
 
Back From the Social Future
Back From the Social FutureBack From the Social Future
Back From the Social FutureStephen Selby
 
¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training DaysLa Drupalera
 
Internet ve e posta yönetimi
Internet ve e posta yönetimiInternet ve e posta yönetimi
Internet ve e posta yönetimiErol Dizdar
 
Tomcat Maven Plugin
Tomcat Maven PluginTomcat Maven Plugin
Tomcat Maven PluginOlivier Lamy
 
Iliad or Seaside
Iliad or SeasideIliad or Seaside
Iliad or SeasideSho Yoshida
 
Web service overview
Web service overviewWeb service overview
Web service overviewSaran Yuwanna
 
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEGlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEBruno Borges
 
mapserver_install_linux
mapserver_install_linuxmapserver_install_linux
mapserver_install_linuxtutorialsruby
 
Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.adesso AG
 
Caderno SISP 2012
Caderno SISP 2012Caderno SISP 2012
Caderno SISP 2012GovBR
 

Destaque (20)

Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Webinar: Spring Framework - Introduction to Spring WebMVC & Spring with BigData
Webinar: Spring Framework - Introduction to Spring WebMVC & Spring with BigData Webinar: Spring Framework - Introduction to Spring WebMVC & Spring with BigData
Webinar: Spring Framework - Introduction to Spring WebMVC & Spring with BigData
 
Spring MVC - The Basics
Spring MVC -  The BasicsSpring MVC -  The Basics
Spring MVC - The Basics
 
Introduction to Spring MVC
Introduction to Spring MVCIntroduction to Spring MVC
Introduction to Spring MVC
 
Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5
 
Back From the Social Future
Back From the Social FutureBack From the Social Future
Back From the Social Future
 
Planet talent
Planet talentPlanet talent
Planet talent
 
¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days
 
Internet ve e posta yönetimi
Internet ve e posta yönetimiInternet ve e posta yönetimi
Internet ve e posta yönetimi
 
Tomcat Maven Plugin
Tomcat Maven PluginTomcat Maven Plugin
Tomcat Maven Plugin
 
Iliad or Seaside
Iliad or SeasideIliad or Seaside
Iliad or Seaside
 
Web service overview
Web service overviewWeb service overview
Web service overview
 
GlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EEGlassFish, Maven, Cloud e Java EE
GlassFish, Maven, Cloud e Java EE
 
Bug x tracker
Bug x trackerBug x tracker
Bug x tracker
 
mapserver_install_linux
mapserver_install_linuxmapserver_install_linux
mapserver_install_linux
 
Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.
 
Caderno SISP 2012
Caderno SISP 2012Caderno SISP 2012
Caderno SISP 2012
 
AngularJS and SPA
AngularJS and SPAAngularJS and SPA
AngularJS and SPA
 
FinistJUG - Apache TomEE
FinistJUG - Apache TomEEFinistJUG - Apache TomEE
FinistJUG - Apache TomEE
 

Semelhante a Spring MVC Framework

VRaptor - Alta produtividade no Desenvolvimento Web em Java
VRaptor - Alta produtividade no Desenvolvimento Web em JavaVRaptor - Alta produtividade no Desenvolvimento Web em Java
VRaptor - Alta produtividade no Desenvolvimento Web em JavaDaniel Faria Gomes
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingEder Magalhães
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaJSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaDr. Spock
 
Vraptor - Alta produtividade no Desenvolvimento Web em Java
Vraptor - Alta produtividade no Desenvolvimento Web em JavaVraptor - Alta produtividade no Desenvolvimento Web em Java
Vraptor - Alta produtividade no Desenvolvimento Web em JavaKaio Valente
 
Desenvolvimento web com VRaptor
Desenvolvimento web com VRaptorDesenvolvimento web com VRaptor
Desenvolvimento web com VRaptorDaniel Cavalcante
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Frameworkelliando dias
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysDr. Spock
 
O Aduino ama a Internet - TDC 2012
O Aduino ama a Internet - TDC 2012O Aduino ama a Internet - TDC 2012
O Aduino ama a Internet - TDC 2012Marco Antonio Maciel
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?Rafael Benevides
 
Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2rodrigoareis
 
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud NetflixLidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud NetflixEmmanuel Neri
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesEder Magalhães
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkMarcelo Rodrigo
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOLgrupoweblovers
 

Semelhante a Spring MVC Framework (20)

Spring MVC - QConSP
Spring MVC - QConSPSpring MVC - QConSP
Spring MVC - QConSP
 
VRaptor4
VRaptor4VRaptor4
VRaptor4
 
VRaptor - Alta produtividade no Desenvolvimento Web em Java
VRaptor - Alta produtividade no Desenvolvimento Web em JavaVRaptor - Alta produtividade no Desenvolvimento Web em Java
VRaptor - Alta produtividade no Desenvolvimento Web em Java
 
Vraptor
VraptorVraptor
Vraptor
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computing
 
Android na Prática
Android na PráticaAndroid na Prática
Android na Prática
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaJSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com Java
 
Vraptor - Alta produtividade no Desenvolvimento Web em Java
Vraptor - Alta produtividade no Desenvolvimento Web em JavaVraptor - Alta produtividade no Desenvolvimento Web em Java
Vraptor - Alta produtividade no Desenvolvimento Web em Java
 
Desenvolvimento web com VRaptor
Desenvolvimento web com VRaptorDesenvolvimento web com VRaptor
Desenvolvimento web com VRaptor
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
JSF 2.0 e ScrumToys
JSF 2.0 e ScrumToysJSF 2.0 e ScrumToys
JSF 2.0 e ScrumToys
 
O Aduino ama a Internet - TDC 2012
O Aduino ama a Internet - TDC 2012O Aduino ama a Internet - TDC 2012
O Aduino ama a Internet - TDC 2012
 
TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?TDC 2014 SP - E o DeltaSpike ?
TDC 2014 SP - E o DeltaSpike ?
 
Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2Construindo portlets para IBM WebSphere Portal – Parte 2
Construindo portlets para IBM WebSphere Portal – Parte 2
 
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud NetflixLidando com desafios dos microserviços com a stack Spring Cloud Netflix
Lidando com desafios dos microserviços com a stack Spring Cloud Netflix
 
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfacesJSF2 c/ PrimeFaces, RichFaces e ICEfaces
JSF2 c/ PrimeFaces, RichFaces e ICEfaces
 
Desenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana frameworkDesenvolvimento ágil com Kohana framework
Desenvolvimento ágil com Kohana framework
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
Angular js
Angular jsAngular js
Angular js
 

Mais de Eder Magalhães

Concorrencia, baixa Latência e alta disponibilidade
Concorrencia, baixa Latência e alta disponibilidadeConcorrencia, baixa Latência e alta disponibilidade
Concorrencia, baixa Latência e alta disponibilidadeEder Magalhães
 
Java Is Back, Novidade do Java 8
Java Is Back, Novidade do Java 8Java Is Back, Novidade do Java 8
Java Is Back, Novidade do Java 8Eder Magalhães
 
Desenvolva uma app Java web em poucos passos, com o Forge
Desenvolva uma app Java web em poucos passos, com o ForgeDesenvolva uma app Java web em poucos passos, com o Forge
Desenvolva uma app Java web em poucos passos, com o ForgeEder Magalhães
 
MongoDB outras alternativas de persistência
MongoDB outras alternativas de persistênciaMongoDB outras alternativas de persistência
MongoDB outras alternativas de persistênciaEder Magalhães
 
Java e uma visão sobre PaaS
Java e uma visão sobre PaaSJava e uma visão sobre PaaS
Java e uma visão sobre PaaSEder Magalhães
 
JDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidadesJDK8: Lambda, Jigsaw e novidades
JDK8: Lambda, Jigsaw e novidadesEder Magalhães
 
Introdução a Plataforma Java EE
Introdução a Plataforma Java EEIntrodução a Plataforma Java EE
Introdução a Plataforma Java EEEder Magalhães
 
As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8As modificações na Linguagem: Java 7 e Java 8
As modificações na Linguagem: Java 7 e Java 8Eder Magalhães
 
Desenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring RooDesenvolvimento Produtivo com Spring Roo
Desenvolvimento Produtivo com Spring RooEder Magalhães
 
Futuro da linguagem e plataforma: Java 7 e 8
Futuro da linguagem e plataforma: Java 7 e 8Futuro da linguagem e plataforma: Java 7 e 8
Futuro da linguagem e plataforma: Java 7 e 8Eder Magalhães
 
Arquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineArquiteturas Java EE no Google App Engine
Arquiteturas Java EE no Google App EngineEder Magalhães
 
Richfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoRichfaces 4 - Desenvolvimento JSF mais rico
Richfaces 4 - Desenvolvimento JSF mais ricoEder Magalhães
 
JSF 2 Components JustJava2011
JSF 2 Components JustJava2011JSF 2 Components JustJava2011
JSF 2 Components JustJava2011Eder Magalhães
 
JavaFX: Abordagem Prática
JavaFX: Abordagem PráticaJavaFX: Abordagem Prática
JavaFX: Abordagem PráticaEder Magalhães
 
Desenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e SpringDesenvolvimento RIA com GWT e Spring
Desenvolvimento RIA com GWT e SpringEder Magalhães
 
Profissao java gwt e javafx
Profissao java gwt e javafxProfissao java gwt e javafx
Profissao java gwt e javafxEder Magalhães
 

Mais de Eder Magalhães (20)

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

Spring MVC Framework

  • 1. Spring Web MVC   Eder Magalhães eder@yaw.com.br 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 eder@yaw.com.br twitter.com/edermag Globalcode  –  Open4education