Spring MVC Framework

  • View
    1.081

  • Download
    0

Embed Size (px)

Transcript

  • 1. Spring MVC Framework. Rodrigo Urubatan Ferreira JardimArquiteto J2EE/ConsultorImmediate Consultoria rodrigo@usiinformatica.com.brhttp://www.usiinformatica.com.brhttp://www.immediate.com.brhttp://www.immediate.com.br http://www.rsjug.org

2. Spring Framework http://www.immediate.com.br http://www.rsjug.org 3. Desenvolvendo aplicaes com o Spring Framework Histrico do Framework Desenvolvendo para Interfaces no para classes concretas Inverso de Controle e Injeo de Dependncias Facilidades AOP do framework Desenvolvimento WEB com Spring MVC Framework http://www.immediate.com.br http://www.rsjug.org 4. Origem e Filosofia Expert One-to-One J2EE Design and Development by Rod Johnson J2EE deve ser mais fcil de utilizar Design OO mais importante do que qualquer tecnologia Utilizada (Incluindo J2EE) Checked Exceptions so utilizadas em excesso no java melhor programar para Interfaces do que para Classes Programar com o Spring deve ser um prazer A sua aplicao no deve depender do Spring (ou depender o menos possvel) Desenvolvedores principais: Jrgen Hller e Rod Johnson http://www.immediate.com.br http://www.rsjug.org 5. Desenvolvendo para Interfaces e no para classes concretas Facilidade para a troca de implementao Menor acoplamento entre os componentes Indiferena se o componente utilizado local ou remoto Compatibilidade com a futura utilizao de AOP e criao de proxies para adicionar verificaes e features no includas no projeto inicial http://www.immediate.com.br http://www.rsjug.org 6. Inverso de Controle e Injeo de dependncias O que Inverso de Controle O que Injeo de dependncias Formas de Injeo de dependncia BeanFactory o Container de injeo de dependncias do Spring Framework. http://www.immediate.com.brhttp://www.rsjug.org 7. Utilizando AOP de maneira fcil Conceitos AOP Aspect - um conceito distribuido pela aplicao, por exemplo,gerenciamento de transaes Advice - uma ao executada em um JointPoint JointPoint - a especificao de onde uma ao deve ser executada Pointcut - um conjunto de JointPoints especificando quando um advicedeve ser executado Introduction - a adio de metodos ou campos a objetos TargetObject - um objeto que contem um advice AOP Proxy - um objeto criado pelo framework AOP Weaving - o ato de juntar aspectos para criar um TargetObject Capacidades AOP do Spring Framework Utilizao do AOP http://www.immediate.com.brhttp://www.rsjug.org 8. Capacidades AOP do Spring Framework O spring traz um framework AOP muito poderoso e totalmente integrado com a BeanFactory utilizada por toda a aplicao, mas no suporta todos os recursos AOP suportados por outras implementaes de AOP. O spring no suporta interceptao de campos, apenas de mtodos. O suporte a AOP do spring implementa as interfaces definidas pela AOP Aliance. Por default so suportados os seguintes tipos de Advices: MethodInterceptor ThrowsAdvice BeforeAdvice AfterReturningAdvice http://www.immediate.com.br http://www.rsjug.org 9. Utilizao do AOP Um exemplo clssico de utilizao transparente do suporte a AOP do spring framework, o gerenciamento de transaes declarativas nativo do Spring, que implementado como um Advice AOP. podemos ver tambm, diversas implementaes de logging, controle de excees, adio de interfaces em objetos (por exemplo, uma interface IsModified)http://www.immediate.com.brhttp://www.rsjug.org 10. Adicionando uma interface a um objeto via AOP public class IsModifiedInterceptor extends implements IsModified { private boolean modified; public void resetModified(){*} erty> public Object invoke(MethodInvocation invocation) throws Throwable { if (invocation.getMethod().getName().indexOfisModifiedInterceptor (quot;setquot;) == 0) modified=true;return super.invoke(invocation); }}http://www.immediate.com.br http://www.rsjug.org 11. Desenvolvendo aplicaes WEB Configurao do framework Controllers Validao de formulrios Mapeando requests Resolvendo Views Integrando tecnologias de visualizao Localizao e utilizao de themas Tratamento de excees Exposio de objetos de negocio como servios remotos via XML-RPC, Hesian e Burlap Chamada de objetos remotos utilizando XML-RPC, Hesian, Burlap e EJBs http://www.immediate.com.brhttp://www.rsjug.org 12. Aplicao WEB Completa com oSpring Framework http://www.immediate.com.br http://www.rsjug.org 13. Configurando a aplicao O primeiro passo para utilizar o spring em uma aplicao WEB, informar ao framework quais sero os arquivos de configurao globais. arquivos web.xml e applicationContext.xml Configurar o listener que ira carregar o contexto. e opcionalmente configurar um contexto para cada servlet/dispatcher do framework utilizado. Arquivo -servlet.xml Opcionalmente configurar o framework MVC escolhido, caso este no seja o default do spring. http://www.immediate.com.brhttp://www.rsjug.org 14. web.xml uot;-//Sun Microsystems, Inc.//DTD Web Application 2.3//ENquot; quot;http://java.sun.com/dtd/web- app_2_3.dtdquot;> contextConfigLocation /WEB-INF/applicationContext-web.xml,/WEB-INF/applicationContext-hibernate.xml org.springframework.web.context.ContextLoaderListener exemplo org.springframework.web.servlet.DispatcherServlet 1cauchoorg.springframework.web.servlet.DispatcherServlet 4axisorg.apache.axis.transport.http.AxisServlet 5exemplo*.htmlcaucho/caucho/*http://www.immediate.com.br axis/axis/*http://www.rsjug.org 15. Controllers Controllers no framework MVC do Spring so equivalentes as Actions do Struts ou do WebWork. No framework MVC do Spring, existem 3 tipos bsicos de Controllers Controllers Simples - Apenas estender a classe AbstractController MultiActionController - Um Controller implementa diversas aes, semelhante a uma action implementando a interface Command do WebWork CommandController - so Controladores utilizados para facilitar a utilizao de formulrios e o binding dos parametros destes formulrios a estes JavaBeans SimpleFormController - Trs diversas funcionalidades de formulrio, validao de input e pgina de sucesso WizardController - facilita a implementao de formulrios multi pgina, como wizards, controla o estado de cada pgina, ...http://www.immediate.com.br http://www.rsjug.org 16. autowire=quot;byNamequot;> class=quot;org.springframework.web.servlet.m Uservc.multiaction.MultiActionControllerquot; > justjava.example.web.vo.User ue> class=quot;justjava.example.web.controlle userWiz1rs.ExampleFormquot;userWiz2 autowire=quot;byNamequot;>userWiz3userWizFinishuserFormuser-createdclass=quot;justjava.example.web.controllers. ExampleMultiActionquot; Userautowire=quot;byNamequot;/> justjava.example.web.vo.Userhttp://www.immediate.com.brhttp://www.rsjug.org 17. Validando Formulrios Utilizando o framework MVC do Spring, existem duas formas default de validao de formulrios: utilizando o commons-validator do projeto jakarta, para isto bastainformar no XML do spring a utilizao deste validator para um controllerespecifico. Utilizar uma classe implementando a interface Validator, desta formatendo uma validao muito mais flexivel e podendo ser realizada mesmodentro do Dao responsvel pelo objeto, facilitando validaes do tipo: oobjeto ja existe, o nome de usurio solicitado ja esta sendo utilizado, ...,este o metodo preferido de validao de formulrios no Spring Ao utilizar outro framework MVC a validao deste devera ser utilizada, mas o spring pode continuar utilizando o framework de validao nas camadas mais baixas, como os beans de negcio ou acesso a dados. http://www.immediate.com.br http://www.rsjug.org 18. Mapeando Requests BeanNameUrlHandlreMapping da URL. SimpleUrlHandlerMapping Mapeia requests baseado em delegat utilizados para diretrios no ANT eMAexampleForm Podem ser adicionados interceptorsprop> a qualquer mapeamento de requests, exampleWizard< horario de acesso as pginas ou /prop>exampleMAsegurana op>http://www.immediate.com.brhttp://www.rsjug.org 19. Resolvendo Views - viewResolver A resoluo de views no framework MVC do Spring, bem flexivel e suporta diversos tipos de recursos. Esta ralizada como a maior parte do framework por um Bean configurado no contexto. Os viewResolvers que vem implementados por default so os seguintes: AbstractCachingViewResolver ResourceBundleViewResolver UrlBasedViewResolver InternalResourceViewResolver VelocityViewResolver http://www.immediate.com.br http://www.rsjug.org 20. Tecnologias de Visualizao Configurando um dos viewResolvers disponiveis, pode-se utilizar o spring com as seguintes tecnologias de View: JSP/JSTL Tiles Velocity XSLT PDF Excel http://www.immediate.com.br http://www.rsjug.org 21. Localizando a aplicao e utilizandotemas A maior parte do Spring Framework localizavel. existem os seguintes localeResolvers ja implementados: AcceptHeaderLocaleResolver CookieLocaleResolver SessionLocaleResolver LocaleChangeInterceptor este interceptor pode ser adicionado ao hander resolver, e ira detectar um parmetrocom o nome siteLanguage no request para alterar o locale do usurio chamando nolocaleResolver do contexto o mtodo setLocalehttp://www.immediate.com.br http://www.rsjug.org 22. Tratando Excees SimpleMappingExceptionResolver Habilita a mesma feature da API servlet, possibilita mapear um nome de classe de exceo que pode ser jogada de um controller para uma view. HandlerExceptionResolver implementando esta interface em qualquer bean do contexto, o que se resume ao metodo: resolveException(Exception, Handler) pode-se programaticamente ficar sabendo qual exceo foi gerada e em qual controller do sistema, o que traz muito mais flexibilidade. http://www.immediate.com.brhttp://www.rsjug.org 23. Enviando e-mails A API javamail no exatamente fcil de ser utilizada. O spring possui uma API de abstrao para o envio de mensagens/e-mails, estes podem ser enviados utilizando JavaMail ou ento o MailSender desenvolvido pelo Jason Hunter, do pacote com.orreily.servlet. Qualquer uma destas imple