brutos mvc

Download Brutos MVC

Post on 17-Aug-2015

25 views

Category:

Technology

0 download

Embed Size (px)

TRANSCRIPT

  1. 1. Brutos ApplicationBrutos Application FrameworkFramework Um controlador MVCUm controlador MVC
  2. 2. SumrioSumrio O que ?O que ? Quais as vantagens em utiliz-lo?Quais as vantagens em utiliz-lo? Como obter o Brutos Framework?? Como configur-lo?Como configur-lo? Definindo controladores.Definindo controladores. Definindo aes.Definindo aes. Definindo interceptores.Definindo interceptores. Tratando excees.Tratando excees. Mapeamento de beans.Mapeamento de beans.
  3. 3. O que ?O que ? O Brutos application framework um controlador MVC desenvolvidoO Brutos application framework um controlador MVC desenvolvido em Java. Projetado para reduzir a complexidade do desenvolvimentoem Java. Projetado para reduzir a complexidade do desenvolvimento web, com mapeamento configurvel, resoluo de vista, bem comoweb, com mapeamento configurvel, resoluo de vista, bem como suporte ao upload e download de arquivos. Podendo ser configuradosuporte ao upload e download de arquivos. Podendo ser configurado usando XML, anotaes e CoC.usando XML, anotaes e CoC. O framework segue os seguintes princpios:O framework segue os seguintes princpios: flexibilidade;flexibilidade; baixo acoplamento ebaixo acoplamento e produtividade.produtividade.
  4. 4. Quais as vantagens em utiliz-Quais as vantagens em utiliz- lo?lo? Baixo acoplamento.Baixo acoplamento. Gerao de componentes testveis.Gerao de componentes testveis. Suporte avanado de mapeamento.Suporte avanado de mapeamento. Fcil aprendizado.Fcil aprendizado.
  5. 5. Como obter o Brutos Framework?? Os pacotes de liberao esto hospedados no sistema de arquivos daOs pacotes de liberao esto hospedados no sistema de arquivos da SourceForge em formato ZIP. Cada pacote contm jars, exemplos, cdigoSourceForge em formato ZIP. Cada pacote contm jars, exemplos, cdigo fonte e entre outros. Seu download pode ser feito a partir da urlfonte e entre outros. Seu download pode ser feito a partir da url http://sourceforge.net/projects/brutos/files/brutos/.http://sourceforge.net/projects/brutos/files/brutos/. Obtendo o pacoteObtendo o pacote Repositrio de artefatos Maven.Repositrio de artefatos Maven. So produzidos uma srie de artefatos sob o groupId org.brandao.So produzidos uma srie de artefatos sob o groupId org.brandao. brutos-core:brutos-core: O artefato principal, necessrio para construir aplicaesO artefato principal, necessrio para construir aplicaes usando o Brutos APIs nativo.usando o Brutos APIs nativo. brutos-annotation:brutos-annotation: Artefato opcional que permite a construo deArtefato opcional que permite a construo de aplicaes usando anotaes. Este artefato depende do brutos-core.aplicaes usando anotaes. Este artefato depende do brutos-core. brutos-web:brutos-web: Artefato opcional que permite a construo de aplicaes web.Artefato opcional que permite a construo de aplicaes web. Este artefato depende do brutos-core.Este artefato depende do brutos-core. O repositrio oficial do Brutos Framework O repositrio oficial do Brutos Framework http://www.brutosframework.com.br/maven/2http://www.brutosframework.com.br/maven/2..
  6. 6. Como configur-lo?Como configur-lo? org.brandao.brutos.web.ContextLoaderListenerorg.brandao.brutos.web.ContextLoaderListener Registrar o listener no web.xmlRegistrar o listener no web.xml Registrar o filtro no web.xmlRegistrar o filtro no web.xml Brutos Framework FilterBrutos Framework Filterorg.brandao.brutos.web.http.BrutosRequestFilterorg.brandao.brutos.web.http.BrutosRequestFilterBrutos Framework FilterBrutos Framework Filter**REQUESTREQUESTFORWARDFORWARDINCLUDEINCLUDEERRORERROR Ateno: Se estiver sendo usado um container que suporte a especificao Servlet 3.0, o registro do ContextLoadListener e DispatcherServlet ou BrutosRequestFilter no sero necessrios. Eles sero automaticamente registrados.
  7. 7. Definindo controladores.Definindo controladores. public class SampleController { ... } Um controlador pode ser definido de trs formas diferentes:Um controlador pode ser definido de trs formas diferentes: seguindo a nomenclatura Controller ao definir o nome da classe;seguindo a nomenclatura Controller ao definir o nome da classe; usando a anotao @Controller ouusando a anotao @Controller ou usando o elemento do schema brutos-controllers.xsd.usando o elemento do schema brutos-controllers.xsd. vistavista: /WEB-INF/samplecontroller/index.jsp: /WEB-INF/samplecontroller/index.jsp URIURI: /sample: /sample
  8. 8. Definindo controladores.Definindo controladores. @Controller public class Sample { ... } vistavista: /WEB-INF/samplecontroller/index.jsp: /WEB-INF/samplecontroller/index.jsp URIURI: /sample: /sample
  9. 9. Definindo controladores.Definindo controladores. ... vistavista: /WEB-INF/sample/index.jsp: /WEB-INF/sample/index.jsp URIURI: /controller: /controller public class Sample { ... }
  10. 10. Definindo aes.Definindo aes. public class SampleController { public void testAction() { ... } } Uma ao pode ser definida de trs formas diferentes:Uma ao pode ser definida de trs formas diferentes: seguindo a nomenclatura Action ao definir o nome do mtodo;seguindo a nomenclatura Action ao definir o nome do mtodo; usando a anotao @Action ouusando a anotao @Action ou usando o elemento do schema brutos-controllers.xsd.usando o elemento do schema brutos-controllers.xsd. vistavista: /WEB-INF/samplecontroller/testAction/index.jsp: /WEB-INF/samplecontroller/testAction/index.jsp URIURI: /sample/test: /sample/test
  11. 11. Definindo aes.Definindo aes. public class SampleController { @Action public void test() { ... } } vistavista: /WEB-INF/samplecontroller/testAction/index.jsp: /WEB-INF/samplecontroller/testAction/index.jsp URIURI: /sample/test: /sample/test
  12. 12. Definindo aes.Definindo aes. vistavista: /WEB-INF/samplecontroller/test.jsp: /WEB-INF/samplecontroller/test.jsp URIURI: /controller/test: /controller/test @Action(value=/test, view=@View(test)) public class SampleController { }
  13. 13. Definindo aes.Definindo aes. vistavista: /WEB-INF/sample/testAction/index.jsp: /WEB-INF/sample/testAction/index.jsp URIURI: /controller/test: /controller/test public class Sample { public void test() { ... } }
  14. 14. Definindo Interceptores.Definindo Interceptores. public class SampleInterceptorInterceptorController extends AbstractInterceptor { public void intercepted(InterceptorStack stack, InterceptorHandler handler) throws InterceptedException { ... } } Um interceptor pode ser definido de trs formas diferentes:Um interceptor pode ser definido de trs formas diferentes: seguindo a nomenclatura interceptorController ao definir o nome da classe;seguindo a nomenclatura interceptorController ao definir o nome da classe; usando a anotao @Intercepts ouusando a anotao @Intercepts ou usando o elemento do schema brutos-controllers.xsd.usando o elemento do schema brutos-controllers.xsd. ObsObs:: Um interceptor obrigatoriamente tem que implementar a interface InterceptorController.Um interceptor obrigatoriamente tem que implementar a interface InterceptorController. Para interceptar a execuo de um controlador, basta usar a anotao @InterceptedBy nele ouPara interceptar a execuo de um controlador, basta usar a anotao @InterceptedBy nele ou usar o elemento do schema brutos-controllers.xsd.usar o elemento do schema brutos-controllers.xsd.
  15. 15. Definindo Interceptores.Definindo Interceptores. @Intercepts public class SampleInterceptor extends AbstractInterceptor { public void intercepted(InterceptorStack stack, InterceptorHandler handler) throws InterceptedException { ... } }
  16. 16. Definindo Interceptores.Definindo Interceptores. public class SampleInterceptor extends AbstractInterceptor { public void intercepted(InterceptorStack stack, InterceptorHandler handler) throws InterceptedException { ... } }
  17. 17. Tratando excees.Tratando excees. Um exceo pode ser interceptada e tratada de trs formas diferentes:Um exceo pode ser interceptada e tratada de trs formas diferentes: apenas declarando a no mtodo;apenas declarando a no mtodo; usando a anotao @TrowSafe em nvel de classe ou mtodo;usando a anotao @TrowSafe em nvel de classe ou mtodo; usando o elemento do schema brutos-controllers.xsd.usando o elemento do schema brutos-controllers.xsd. public class SampleController { public void testAction() throws NullPointerException{ ... } } vista da aovista da ao: /WEB-INF/samplecontroller/testAction/index.jsp: /WEB-INF/samplecontroller/testAction/index.jsp URI da aoURI da ao: /sample/test: /sample/test vista da exceovista da exceo : /WEB-INF/samplecontroller/testAction/nullpointerexception.jsp: /WEB-INF/samplecontroller/testAction/nullpointerexception.jsp
  18. 18. Tratando excees.Tratando excees. public class SampleController { @ThrowSafe(target=NullPointerException.class, view=npe) public void testAction() { ... } } vista da aovista da ao: /WEB-INF/samplecontroller/testAction/index.jsp: /WEB-INF/samplecontroller/testAction/index.jsp URI da aoURI da ao: /sample/test: /sample/test vista da exceovista da exceo : /WEB-INF/samplecontroller/testAction/npe.jsp: /WEB-INF/samplecontroller/testAction/npe.jsp
  19. 19. Tratando excees.Tratando excees. @ThrowSafe(target=NullPointerException.class, view=npeController) public class SampleController { public void testAction() { ... } } vista da aovista da ao: /WEB-INF/samplecontroller/testAction/index.jsp: /WEB-INF/samplecontroller/testAction/index.jsp URI da aoURI da ao: /sample/test: /sample/test vista da exceovista da exceo : /WEB-INF/samplecontroller/npeController.jsp: /WEB-INF/samplecontroller/npeController.jsp
  20. 20. Tratando excees.Tratando excees. public class SampleController { public void testAction() { ... } } vista da aovista da ao: /WEB-INF/samplecontroller/testAction/index.jsp: /WEB-INF/samplecontroller/testAction/index.jsp URI da aoURI da ao: /sample/tes