Académique Documents
Professionnel Documents
Culture Documents
Edson Gonalves
Tecnologia e Conhecimento ao Alcance de Todos Pesquisar search...
Do desenvolvimento at a produo
Muitos desenvolvedores se acostumaram com a automao das ferramentas de desenvolvimento e, claro, com tanta facilidade, parar e iniciar o servio Java ali simples. Entretanto, o desenvolvedor java no pode apenas saber como operar uma ferramenta de desenvolvimento.
www.edsongoncalv es.com.br/tag/tomcat/ 1/20
08/01/13
O profissional de Java precisa, na realidade necessita, conhecer o servidor Java que executa seus aplicativos. No apenas o bsico de instalar, configurar, iniciar e parar. Tambm no vale dizer que sabe ler logs. Vai alm. O profissional Java precisa saber como o servidor Java, que escolheu usar, opera. Isso vai desde as suas caractersticas bsicas de configurao, at como ele pode ser modificado e otimizado para melhorar o desempenho do que desenvolveu. Est bem, voc vai dizer que no quer ser administrador, mas sim um desenvolvedor, certo? Errado! Isto comum no governo, onde um carimba e outro coloca a folha. Se olhar para fora, ver que muitos fazem vrias tarefas diferentes. E no seu caso, o servidor Java a extenso do seu aplicativo.
08/01/13
8) Bibliotecas As bibliotecas que usa no desenvolvimento precisam estar em produo. Se exportou o WAR file, EAR file, e nenhum est com as bibliotecas, ou falta alguma, porque foram colocadas diretamente no servidor Java, precisa fazer o mesmo em produo. Algumas bibliotecas tambm costumam dar problema quando existem duas do mesmo tipo, mas com verses diferentes. 9) Localizao No deveria estar nesta lista, mas infelizmente, um erro tambm comum. possvel configurar o Locale em seu aplicativo ou diretamente no servidor Java. No porque na sua mquina o Locale em pt-br que online vai ser tambm. Saber modificar isso no servidor Java que seja, no difcil e lhe salva de dores de cabea com uma configurao muito simples. 10) Erro na descompactao do arquivo WAR Probleminha comum quando voc sobe por FTP o aplicativo com o Tomcat ligado, por exemplo, causando um hot deploy sem o arquivo ter finalizado totalmente o seu envio. Alternativamente, ocorreu alguma queda de pacote no envio e ocorreu uma falha, deixando o arquivo impossibilitado de ser operado e, consequentemente, o servidor Java lanar um erro na descompactao. 11) Assumir o problema , eu sei, isto no se trata de erro de produo. Mas pensar um ato importante para resolver problemas. Sair culpando outro, sendo que o problema seu, no faz parte do meio que escolheu como profisso. Se assumiu um cargo como desenvolvedor, assuma tambm que o que fizer, desenvolver, pode ter falhas e que elas so corrigveis. Assumir o problema o primeiro passo em direo da soluo.
08/01/13
ser que, algum possvel bug pode causar problemas em seu aplicativo. 3) Profiler Usar um profiler vai lhe orientar como seu aplicativo se comporta e ver possveis picos de memria/CPU que possam lhe causar problemas, mais adiante, com muitos usurios acessando.
08/01/13
Category: Off-Topic Edson Gonalves @ 21:46 Ol Pessoal, tudo bom? Como vo vocs? Sei que estou sumido do blog. Muitos leitores esto, nestes meses, me mandando comentrios pedindo a continuao de alguns artigos, de sries, que comecei e ainda no terminei. Quero informar a todos que, neste momento, estou renovando meus livros, por isso parei um pouco de postar no blog. Muitas pessoas j sabem, outras nem fazem muita ideia, mas escrever toma muito tempo. Quem possui pouco tempo livre, como eu, no caso, deixar os finais de semana com a famlia e o descanso das noites, para nos dedicar a escrita. Os escritores que sempre apoio em meu blog, at mesmo outros que desejarem aparecer no mural, s entrar em contato comigo. Sei o quanto difcil divulgar um livro e ter um pouco de reconhecimento. Muita gente acha que ganhamos dinheiro com livros, que ficamos ricos, mas estou aqui para desmentir. Na rea de informtica, quem escreve para ter o prazer de ajudar aqueles que esto com as mesmas dificuldades que, com certeza, passamos um dia. Quero deixar aqui os meus sinceros agradecimentos a todos aqueles que postam comentrios elogiando, criticando e pedindo mais tutoriais no blog. Para aqueles que no liberei os comentrios, fiquem tranquilos que eu os li. S no os liberei, muitas vezes, porque no tive tempo ou, por serem pedidos e perguntas relacionadas diretamente a mim, sobre o assunto, no me permiti o tempo necessrio para responde-los. Assim que terminar o meu primeiro objetivo, que a completa reformulao e atualizao, do livro Desenvolvendo Aplicaes Web com JSP, SERVLETS, JAVASERVER FACES, HIBERNATE, EJB 3 PERSISTENCE E AJAX, voltarei a postar os diversos tutoriais, que j os tenho quase prontos, no blog. Deixo aqui o espao aberto, neste tpico, para que comentem o que acham interessante de estar neste livro que estou trabalhando. J garanto que muitas criticas e pedidos, vindos de algumas centenas de leitores, no sero ignorados. Professores de universidades, faculdades e escolas tcnicas do Brasil e alguns pases de lngua portuguesa, que tambm me procuraram para deixar seus pedidos e criticas, quero manter meu compromisso de que todos sero levados em considerao. Agradeo a compreenso de todos. Bons cdigos! Tags: AJAX, Eclipse IDE, EclipseLink, Java EE 6, JPA 2.0, JSF 2.0, livro, Livros, MVC, MySQL, NetBeans, Off-Topic, RichFaces, Tomcat Comments (24) jan 28 2011
08/01/13
Em 2011 quero comear com um artigo ensinando uma dvida muito frequente aos usurios de hospedagem da Integrator Host: embeber as fontes desktop no relatrio JasperReports para serem usadas no aplicativo Web. No geral, relatrios so criados no desktop, onde usamos uma ferramenta visual, arrastando, modificando e, claro, gerando uma aparncia agradvel. Se a aparncia ento for feita por um Designer, este pouco se importa onde vai ser gerado tal relatrio, o importante o VISUAL. neste momento que comea o problema. Um relatrio pode usar fontes desktop que no esto disponveis no servidor online. Pior, se o seu aplicativo roda em um servidor compartilhado, raramente uma empresa de hospedagem vai ficar instalando suas fontes desktop na mquina servidora, toda vez que voc estiver com um relatrio enfeitadinho. Se instalar, tambm no ser na hora. O que fazer neste caso ento? Como obter independncia? Pensando nesta questo, a equipe de desenvolvimento do JasperReports incluiu a capacidade de adicionar as fontes desktop em seu aplicativo, para que estejam disponveis quando aquele seu belo relatrio for gerado para o cliente. O que veremos neste artigo como executar tal tarefa, partindo de um relatrio j gerado no iReport.
Figura 1 A tabela usada O relatrio foi criado usando o assistente do iReport 4, onde o resultado final, aps minhas pequenas alteraes, o que mostra a Figura 2.
Figura 2 Relatrio gerado pelo assistente com pequenas modificaes Tenham em mente que este artigo no vai ensin-los a criar relatrios e sim como contornar um problema comum entre os desenvolvedores Java. Caso queiram dominar a arte de desenvolver relatrios
www.edsongoncalv es.com.br/tag/tomcat/
6/20
08/01/13
Figura 3 A fonte escolhida para o texto esttico Produtos do relatrio Embora esta fonte seja importante para o design do meu relatrio, no tenho garantias que ela exista no servidor onde hospedo meus aplicativos. Logo, o que parece simples, pode se tornar um pesadelo se no for eu o responsvel pela administrao do sistema operacional.
www.edsongoncalv es.com.br/tag/tomcat/
7/20
08/01/13
Figura 4 A fonte escolhida e usada no relatrio pronta para ser exportada No exemplo que explico, chamei o arquivo que exportei de font.jar. justamente este arquivo que vou adicionar em meu projeto. A fonte como uma biblioteca no seu aplicativo Web pelo Eclipse IDE No Eclipse, basta clicar com o direito do mouse sobre o projeto, selecionar o item Properties. Na caixa de dilogo Properties, vamos em Java Build Path, na aba Libraries. Para adicionarmos a biblioteca font.jar, vamos no boto Add External JARs.
Figura 5 O JAR font.jar adicionado nas bibliotecas do meu projeto Claro que eu no poderia deixar de comentar uma particularidade do Eclipse IDE na verso Helios. Para projetos Java EE. Nesta verso, temos um item de nome diferente para adicionarmos as bibliotecas do projeto no aplicativo Web. Este item est na janela Properties, em Deployment Assembly. neste local que determinamos quais bibliotecas sero exportadas ao executarmos o servidor Java.
www.edsongoncalv es.com.br/tag/tomcat/
8/20
08/01/13
Figura 6 Adicionando os arquivos JARs do projeto no aplicativo Web Ao clicarmos no boto Add, a caixa de dilogo New Assembly Directive surge. Esta caixa de dilogo a responsvel por selecionarmos as bibliotecas do projeto em Java Build Path Entries.
Figura 7 Obtendo os arquivos JARs de Java Build Path Ao clicarmos em Next, veremos todas as bibliotecas que dispomos em Java Build Path. Selecionem todas as bibliotecas para executar o relatrio JasperReports devem estar presentes finalizando no boto Finish.
Figura 8 Arquivos JARs selecionados Retornando ao dilogo Properties, no item Deployment Assembly, temos todas as bibliotecas que sero
www.edsongoncalv es.com.br/tag/tomcat/ 9/20
08/01/13
Figura 9 As bibliotecas que sero exportadas para o diretrio /lib do projeto Web A fonte como uma biblioteca no seu aplicativo Web pelo NetBeans IDE No NetBeans IDE, basta adicionar em Libraries, clicando com o direito do mouse e selecionando, no menu de contexto, o item Add JAR / Folder.
Figura 10 As bibliotecas que sero exportadas para o diretrio /lib do projeto Web
www.edsongoncalv es.com.br/tag/tomcat/
10/20
08/01/13
Figura 11 Arquivo PDF gerado como relatrio sem a fonte no diretrio lib do projeto
Figura 12 Arquivo PDF gerado como relatrio com a fonte no diretrio lib do projeto
08/01/13
Figura 1 - Criao da property da verso do hibernate validator Criando a dependncia Com a propriedade definida para informar qual verso desejamos utilizar, no qual o Maven dever baixar, resta configurar as dependncias. Na aba Dependencies, cliquem no boto Create e preencham conforme a Figura 2 ilustra.
08/01/13
A Listagem 1 exibe a entidade Contato modificada. Note as anotaes de validao onde colocamos as mensagens de erro embutidas. Mais adiante iremos captur-las para exibir o problema ao usurio. Listagem 1. A entidade Contato com anotaes Bean Validation. 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 pcaeb.o.nertr akg rcmitgao; ipr jvxpritne* mot aa.essec.; ipr jvxvldto.osrit.; mot aa.aiaincntans* @niy Ett @al(ae="ott" Tbenm cnao) pbi casCnao{ ulc ls ott @d I @eeaeVlesrtg =GnrtoTp.DNIY Gnrtdau(taey eeainyeIETT) @ounnm ="d) Clm(ae i" piaeLn i; rvt og d @oNl Ntul @iemn5 msae" nm nopd trmnsqe5 Sz(i=, esg=O oe oe e eo u crcee!) aatrs" piaeSrn nm; rvt tig oe @oNl Ntul @atr(eep="[\\-+\.\w\])@[-az-Ptenrgx ^\w\](\[\\-+*(AZ-09 ]\.+AZ-]24$,msae"-alcmfraoicreo" +\)[-az{,}" esg=Emi o omt nort.) piaeSrn eal rvt tig mi; @atr(eep="\?\(09{}\)[.](09{}[. Ptenrgx \(\b[-]2)\?- ?[-]4)](09{}\b,msae"eeoee fraoicreo) ?[-]4)\" esg=Tlfn m omt nort" piaeSrn tlfn; rvt tig eeoe } /gtesestes /etr etr
A infra-estrutura definida pela JSR 303 nos permite descrever as restries, usando anotaes no modelo de classes de persistncia, como definir se um campo aceitar uma quantidade mnima de caracteres ou se no aceitar nulo, por exemplo. Cada anotao associada a uma validao, verificando se a instncia da entidade anotada obedece regra ou no. A Tabela 1 apresenta todas as anotaes possveis de serem usadas e suas funcionalidades. Annotation @AssertFalse @AssertTrue @DecimalMax(value=) O que faz? Checa se a propriedade anotada falsa. Checa se a propriedade anotada verdadeira. A propriedade anotada precisa ser um nmero, cujo valor deve estar menor ou igual ao valor mximo previsto. O parmetro value a representao em string do valor mximo aceito de acordo com o formato representado em BigDecimal. Suporta tipos como BigDecimal, BigInteger, String, byte, short, int, long e os respectivos wrappers de tipos primitivos. A propriedade anotada precisa ser um nmero, cujo valor deve estar maior ou igual ao valor mnimo previsto. O parmetro value a representao em string do valor mnimo de acordo com a representao de sequncia de BigDecimal. Suporta tipos como BigDecimal, BigInteger, String, byte, short, int, long e os
13/20
@DecimalMin(value=)
www.edsongoncalv es.com.br/tag/tomcat/
08/01/13
@Digits(integer=, fraction=)
@Future @Max(value=)
@Min(value=)
respectivos wrappers de tipos primitivos. Verifica se a propriedade possui a quantidade de dgitos antes e depois do separador de casa decimal. Por exemplo: @Digits(integer=9, fraction=2) significa que espera-se 9 dgitos inteiros e 2 dgitos fracionrios. Suporta os tipos: BigDecimal, BigInteger, String, byte, short, int, long e os respectivos wrappers de tipos primitivos. Checa se a data est no futuro. Suporta os tipos java.util.Date e java.util.Calendar. Verifica se o valor menor ou igual ao valor anotado. Suporta os tipos: BigDecimal, BigInteger, String, byte, short, int, long e os respectivos wrappers de tipos primitivos. Verifica se o valor maior ou igual ao valor anotado. Suporta os tipos: BigDecimal, BigInteger, String, byte, short, int, long e os respectivos wrappers de tipos primitivos.
@NotNull
Checa se o valor anotado no nulo (null). Uma String cujo valor seja vazio () vai passar. @Null Checa se o valor anotado nulo (null). @Past Checa se uma data est no passado. Suporta os tipos java.util.Date e java.util.Calendar. @Pattern(regex=, flag=) Checa se a propriedade obedece expresso regular. @Size(min=, max=) Confere se a quantidade de elementos est entre o mnimo e o mximo, suportando tipos como: Strings, Collections, Maps e arrays. @Valid Impe uma validao recursiva aos objetos associados. Digamos que, no bean Post, houvesse a anotao @Valid no atributo comments. J na classe Comment, temos um atributo de validao anotado. Se um valor transmitido a comments, de Post, no estiver de acordo com a validao existente na classe Comment, de acordo com o atributo anotado, um erro ser gerado em tempo de execuo. A notao @Valid est sendo usada no PostController para validar os erros existentes em Post ou Comment. Tabela 1. Anotaes e regras para criar restries (Constraints).
Alterando o controlador
Alteraremos a classe ContatoController, criada no pacote br.com.integrator.web, de acordo com o mostrado na Listagem 2. Listagem 2. A classe ContatoController alterada. 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 pcaeb.o.nertrwb akg rcmitgao.e; ipr jvxvldto.ai; mot aa.aiainVld ipr ogsrnfaeokbasfcoyantto.uoie; mot r.pigrmwr.en.atr.noainAtwrd ipr ogsrnfaeokseetp.otolr mot r.pigrmwr.troyeCnrle; ipr ogsrnfaeoku.oeMp mot r.pigrmwr.iMdla; ipr ogsrnfaeokvldto.idnRsl; mot r.pigrmwr.aiainBnigeut ipr ogsrnfaeokwbbn.noain* mot r.pigrmwr.e.idantto.; ipr b.o.nertrdoCnaoA; mot rcmitgao.a.ottDO ipr b.o.nertrCnao mot rcmitgao.ott;
14/20
www.edsongoncalv es.com.br/tag/tomcat/
08/01/13
1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2
@otolr Cnrle @eusMpig"cnao*" Rqetapn(/ott/*) pbi casCnaootolr{ ulc ls ottCnrle @uoie Atwrd piaeCnaoA cnaoa; rvt ottDO ottDo @eusMpigvle="cnao{d" mto = Rqetapn(au /ott/i}, ehd RqetehdGT eusMto.E) pbi Srn so(PtVral(i" Ln i,Mdla ulc tig hw@ahaibe"d) og d oeMp mdla){ oeMp mdla.dAtiue"ott" cnaoa.idi); oeMpadtrbt(cnao, ottDofn(d) rtr "ott/hw; eun cnaoso" } @eusMpigvle="cnao,mto =RqetehdGT Rqetapn(au /ott" ehd eusMto.E) pbi Srn ls(oeMpmdla){ ulc tig itMdla oeMp mdla.dAtiue"otts,cnaoa.idl() oeMpadtrbt(cnao" ottDofnAl); rtr "ott/it; eun cnaols" } @eusMpigvle="cnao{d" mto = Rqetapn(au /ott/i}, ehd RqetehdDLT) eusMto.EEE pbi Srn dlt(PtVral(i" Ln i){ ulc tig eee@ahaibe"d) og d cnaoa.eoecnaoa.idi); ottDormv(ottDofn(d) rtr "eiet/ott" eun rdrc:cnao; }
3 3 3 4 3 5 3 6 3 7 3 @eusMpigvle="cnaofr" mto = 8 Rqetapn(au /ott/om, ehd RqetehdGT eusMto.E) 3 pbi Srn fr(oeMpmdla){ 9 ulc tig omMdla oeMp 4 mdla.dAtiue"ott" nwCnao); 0 oeMpadtrbt(cnao, e ott() 4 rtr "ott/rae; 1 eun cnaocet" 4 } 2 4 3 4 @eusMpigvle="cnao,mto =RqetehdPS) 4 Rqetapn(au /ott" ehd eusMto.OT 4 pbi Srn cet(VldCnaocnao Bnigeut 5 ulc tig rae@ai ott ott, idnRsl rsl){ eut 4 i (euthsros) 6 f rsl.aErr() 4 rtr "ott/rae; 7 eun cnaocet" 4 8 4 cnaoa.ess(ott) 9 ottDopritcnao; 5 rtr "eiet/ott" 0 eun rdrc:cnao; 5 } 1 5 2 5 @eusMpigvle="cnao{d/om,mto = 3 Rqetapn(au /ott/i}fr" ehd RqetehdGT eusMto.E) 5 pbi Srn udtFr(PtVral(i" Ln i,Mdla 4 ulc tig paeom@ahaibe"d) og d oeMp mdla){ oeMp 5 mdla.dAtiue"ott" cnaoa.idi); 5 oeMpadtrbt(cnao, ottDofn(d) 5 rtr "ott/pae; 6 eun cnaoudt" 5 } 7 5 8 5 @eusMpigmto =RqetehdPT 9 Rqetapn(ehd eusMto.U) 6 pbi Srn udt(VldCnaocnao Bnigeut 0 ulc tig pae@ai ott ott, idnRsl rsl){ eut 6 i (euthsros) 1 f rsl.aErr()
www.edsongoncalv es.com.br/tag/tomcat/
15/20
08/01/13
6 2 6 3 6 4 6 5 6 6 6 7 6 8
rtr "ott/pae; eun cnaoudt" cnaoa.eg(ott) ottDomrecnao; rtr "eiet/ott" eun rdrc:cnao; } }
Como visto na Listagem 1, as anotaes @Size e @Pattern possuem o atributo message, que capturamos pelo Spring MVC na classe ContatoController (Listagem 2) - atravs da classe javax.validation.Valid (anotao @Valid). Assim como a anotao @Controller, as anotaes pertencentes a Bean Validation so obtidas graas a adio do elemento <mvc:annotation-driven />. Isto permite que as informaes anotadas sejam injetadas onde a validao necessria na sua aplicao.Caso haja um erro, o mtodo hasErrors(), de org.springframework.validation.BindingResult, retorna true, nos possibilitando conduzir a navegao da pgina, com seus respectivos erros, inclusive paralisando a ao ao qual se encontra. A utilizao de hasErrors() ocorre em ContatoController, nos mtodos create() e update() com o seguinte if:
i (euthsros) f rsl.aErr() /eeuauaa pr cnui apgn cmo ersa uuro /xct m o aa odzr ia o s ro o si
As informaes recebidas da validao pela classe Controller so transmitidas para o formulrio e capturadas. Veja como isto ocorre na descrio da Listagem 3.
Alterando as views
Temos trs pginas que representam nosso CRUD feitas. Estas pginas foram criadas dentro do diretrio chamado WEB-INF/jsp/contato(fisicamente na ferramenta: src/main/webapp/WEB-INF/jsp/contato). Teremos que alter-las para permitir que os erros sejam exibidos. O formulrio de cadastro Abra o arquivo create.jsp e altere como na Listagem 3, adicionando as tags <form:errors />. Listagem 3. A pgina create.jsp. 0 <@tgi pei=srn" 1 % alb rfx"pig ui"tp/wwsrnfaeokogtg"> r=ht:/w.pigrmwr.r/as% 0 <@tgi pei=fr" 2 % alb rfx"om ui"tp/wwsrnfaeokogtg/om % r=ht:/w.pigrmwr.r/asfr" > 0 <@tgi pei=c ui"tp/jv.u.o/s/slcr"% 3 % alb rfx"" r=ht:/aasncmjpjt/oe > 0 <@tgi pei=ft ui"tp/jv.u.o/s/slft % 4 % alb rfx"m" r=ht:/aasncmjpjt/m" > 0 <@tgi pei=f" 5 % alb rfx"n ui"tp/jv.u.o/s/slfntos % r=ht:/aasncmjpjt/ucin" > 0 6 0 <DCYEhm PBI "/WC/T HM 40 Tastoa/E" 7 !OTP tl ULC -/3/DD TL .1 rniinl/N "tp/www.r/Rhm4loedd> ht:/w.3ogT/tl/os.t" 0 <tl 8 hm> 0 <ed 9 ha> 1 <eaht-qi=CnetTp"cnet"ethm;castIO 0 mt tpeuv"otn-ye otn=tx/tl hre=S85-" 891> 1 1 <tl tp=tx/s"mda"cen> sye ye"etcs ei=sre"
www.edsongoncalv es.com.br/tag/tomcat/
16/20
08/01/13
ipr r(<:r au=/ttcsye/tl.s">) 1 2 @motul"culvle"sai/tlssyecs/"; 1 3 <sye /tl> 1 <il>aata<tte 4 tteCdsrr/il> 1 5 1 <ha> 6 /ed 1 <oy 7 bd> 1 8 <i i=wa" dv d"rp> 1 9 2 0 <i i=mn" dv d"eu> 2 1 <@icuefl=/eujp % % nld ie"mn.s" > 2 2 <dv /i> 2 3 <i i=mi" dv d"an> 2 4 <i i=bd" dv d"oy> 2 5 <:r vr"r"vle"cnao / cul a=ul au=/ott" > 2 6 <omfr ato=$ul"mto=PS" fr:om cin"{r} ehd"OT mdltrbt=cnao> oeAtiue"ott" 2 7 <i> dv 2 8 <ae fr"oe>oe<lbl lbl o=nm"Nm:/ae> 2 9 <omerr pt=nm"csls=err">b / fr:ros ah"oe sCas"ros/<r > 3 0 <omiptcstl=wdh20x mxegh"0 pt=nm" fr:nu sSye"it:5p" alnt=3" ah"oe sz=3"> ie"0/ 3 1 3 2 <dv /i> 3 3 <r> b/ 3 4 <i> dv 3 5 <ae fr"mi"Eal<lbl lbl o=eal>mi:/ae> 3 6 <omerr pt=eal csls=err">b / fr:ros ah"mi" sCas"ros/<r > 3 7 <omiptcstl=wdh20x mxegh"0 pt=eal fr:nu sSye"it:5p" alnt=3" ah"mi" sz=3"> ie"0/ 3 8 3 9 <dv /i> 4 0 <r> b/ 4 1 <i> dv 4 2 <ae fr"eeoe>eeoe<lbl lbl o=tlfn"Tlfn:/ae> 4 3 <omerr pt=tlfn"csls=err">b / fr:ros ah"eeoe sCas"ros/<r > 4 4 <omiptcstl=wdh20x mxegh"0 fr:nu sSye"it:5p" alnt=3" pt=tlfn"sz=2"> ah"eeoe ie"0/ 4 <dv 5 /i> 4 6 <r>dv b/<i> 4 7 <nu i=cir tp=sbi"vle"ra Cnao/ ipt d"ra" ye"umt au=Cir ott"> 4 8 <dv /i> 4 9 <fr:om /omfr> 5 0 <dv /i> 5 1 <dv /i> 5 2 <dv /i> 5 <bd> 3 /oy 5 <hm> 4 /tl A tag <form:errors /> foi utilizada na Listagem 3 com dois parmetros: path e cssClass. No parmetro path transmitimos o atributo da classe Contato, validada pelas anotaes de Bean Validation, onde receber a mensagem.
www.edsongoncalv es.com.br/tag/tomcat/
17/20
08/01/13
Figura 3 Processo de validao partindo da anotao no JavaBean Contato Podemos ter uma idia de como ficar a pgina create.jsp depois das alteraes visualizando a Figura 4.
Figura 4 Validao transmitida para a pgina de JSP Alterando a pgina de atualizao de dados Como feito na pgina create.jsp, a pgina update.jsp tambm receber as tags <form:errors />. A Listagem 4 exibe a pgina com as mudanas, na ntegra. Listagem 4. A pgina update.jsp. 0 <@tgi pei=srn" 1 % alb rfx"pig ui"tp/wwsrnfaeokogtg"> r=ht:/w.pigrmwr.r/as% 0 <@tgi pei=fr" 2 % alb rfx"om ui"tp/wwsrnfaeokogtg/om % r=ht:/w.pigrmwr.r/asfr" > 0 <@tgi pei=c ui"tp/jv.u.o/s/slcr"% 3 % alb rfx"" r=ht:/aasncmjpjt/oe > 0 <@tgi pei=ft ui"tp/jv.u.o/s/slft % 4 % alb rfx"m" r=ht:/aasncmjpjt/m" > 0 <@tgi pei=f" 5 % alb rfx"n ui"tp/jv.u.o/s/slfntos % r=ht:/aasncmjpjt/ucin" > 0 6 0 <DCYEhm PBI "/WC/T HM 40 Tastoa/E" 7 !OTP tl ULC -/3/DD TL .1 rniinl/N "tp/www.r/Rhm4loedd> ht:/w.3ogT/tl/os.t" 0 <tl 8 hm> 0 <ed 9 ha> 1 <eaht-qi=CnetTp"cnet"ethm;castIO 0 mt tpeuv"otn-ye otn=tx/tl hre=S85-" 891> 1 1 <tl tp=tx/s"mda"cen> sye ye"etcs ei=sre" 1 2 @motul"culvle"sai/tlssyecs/"; ipr r(<:r au=/ttcsye/tl.s">) 1 3 <sye /tl> 1 <il>taia<tte 4 tteAulzr/il> 1 <ha> 5 /ed 1 <oy 6 bd> 1 7 <i i=wa" dv d"rp>
www.edsongoncalv es.com.br/tag/tomcat/ 18/20
1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2
<i i=mn" dv d"eu> <@icuefl=/eujp % % nld ie"mn.s" > <dv /i> <i i=mi" dv d"an> <i i=bd" dv d"oy> <:r vr"r"vle"cnao$cnaoi} / cul a=ul au=/ott/{ott.d" > <omfr ato=$ul"mto=PT fr:om cin"{r} ehd"U" mdltrbt=cnao> oeAtiue"ott" <i> dv <ae fr"oe>oe<lbl lbl o=nm"Nm:/ae> <omerr pt=nm"csls=err">b / fr:ros ah"oe sCas"ros/<r > <omiptcstl=wdh20x mxegh"0 pt=nm" fr:nu sSye"it:5p" alnt=3" ah"oe sz=3"> ie"0/ <dv /i> <r> b/ <i> dv <ae fr"mi"Eal<lbl lbl o=eal>mi:/ae> <omerr pt=eal csls=err">b / fr:ros ah"mi" sCas"ros/<r > <omiptcstl=wdh20x mxegh"0 pt=eal fr:nu sSye"it:5p" alnt=3" ah"mi" sz=3"> ie"0/ <dv /i> <r> b/ <i> dv <ae fr"eeoe>eeoe<lbl lbl o=tlfn"Tlfn:/ae> <omerr pt=tlfn"csls=err">b / fr:ros ah"eeoe sCas"ros/<r > <omiptcstl=wdh20x mxegh"0 fr:nu sSye"it:5p" alnt=3" pt=tlfn"sz=2"> ah"eeoe ie"0/ <dv /i> <r> b/ <i> dv <nu i=aulzr tp=sbi"vle"taia Cnao/ ipt d"taia" ye"umt au=Aulzr ott"> <dv /i> <omhde pt=i"> fr:idn ah"d/ <fr:om /omfr> <dv /i> <dv /i> <dv /i> <bd> /oy <hm> /tl
Consideraes finais
Com as validaes, boa parte dos problemas iniciais de um desenvolvimento usando o Spring MVC foram resolvidos. Mas vejam s: o comeo. Caso haja interesse do leitor em aprender um exemplo mais complexo, a revista JavaMagazine #78 publicou, um artigo meu com o Spring MVC 3 na criao de um blog, do comeo ao fim. um bom incio para se desenvolver um projeto mais completo e complexo. Para os que acompanham o blog, o assunto Spring MVC no para por aqui. Veremos em breve um site completo, feito com o framework, unindo vrias caractersticas do Spring, de seu framework MVC e a parte de segurana com Spring Security.
08/01/13
Tags: Eclipse IDE, Hibernate, Java EE 6, JPA, JPA 2.0, MySQL, Spring, Spring MVC, Tomcat Comments (12) Prxima Pgina Arquivos abril 2012 (1) setembro 2011 (1) agosto 2011 (1) janeiro 2011 (1) outubro 2010 (1) agosto 2010 (2) junho 2010 (2) maio 2010 (3) abril 2010 (3) maro 2010 (2) fevereiro 2010 (4) janeiro 2010 (3) Categorias Android 2.1 (1) Certificaes (1) Hibernate (1) Inicio (1) iReport (1) JasperReports (1) JPA 2.0 (4) JSF 2.0 (4) Off-Topic (4) RichFaces (1) Servidores Java (2) Spring (3) Spring MVC 3.0 (3) Tags
AJAX Celulares certificado java certificao
exame
Hibernate ireport jasperreports Java EE 6 JavaServer Faces JPA JPA 2.0 JPA Project JSF 1.2 JSF 2.0 livro Livros MVC MySQL NetBeans Off-Topic relatrios RichFaces scjp Servidores Java smartphones Spring Spring MVC Spring Security T elefonia Tomcat
top Powered by WordPress and Stardust Created by Tommaso Baldovino
www.edsongoncalv es.com.br/tag/tomcat/
20/20