Beruflich Dokumente
Kultur Dokumente
Com partilhar
mais
Prximo blog
Criar um blog
Login
Pesquisar
Pesquisar
Arquivo do blog
2012 (2) Janeiro (2) FileUpload com JSF + Primefaces + Hibernate + MySq... Upload de Arquivo com JSF + Primefaces (j vem no ... 2011 (2)
2 5 p a c k a g ee n t i d a d e s ; 6 7 / * * 8 9 1 0 * *@ a u t h o rM a r a * /
Livros e Revistas
k19 - Apostila de Hibernate K19 - Apostila de JSF Use a Cabea Java
1 1 i m p o r tj a v a x . p e r s i s t e n c e . * ; 1 2 @ E n t i t y 1 3 @ T a b l e ( n a m e = " t b _ p r o d u t o " ) 1 4 p u b l i cc l a s sP r o d u t o { 1 5 @ I d 1 6 @ G e n e r a t e d V a l u e ( s t r a t e g y = G e n e r a t i o n T y p e . A U T O ) 1 7 @ C o l u m n ( n a m e = " p r o d _ i d " ) 1 8 p r i v a t ei n ti d ; 1 9 @ C o l u m n ( n a m e = " p r o d _ n o m e " ) 2 0 p r i v a t eS t r i n gn o m e ; 2 1 @ C o l u m n ( n a m e = " p r o d _ p r e c o " ) 2 2 p r i v a t ed o u b l ep r e c o ; 2 3 @ C o l u m n ( n a m e = " p r o d _ f o t o " ) 2 4 p r i v a t eS t r i n gf o t o ; 2 5 / /C o n s t r u t o rg e t t e r ses e t t e r s 2 9
J um membro? Fazer login
Seguidores
Participar deste site
Google Friend Connect
Membros (3)
Obs.: faa o import das anotaes do pacote javax.persistence.* ==> Crie a classe HibernateUtil dentro do pacote dao. caso tenha dvida de como implementar a HibernateUtil consulte http://meninajava.blogspot.com/2011/11/configurar-o-hibernate-utilizando.html ==> Adicione o mapeamento da classe Produto no arquivo hibernate.cfg.xml e habilite para hibernate criar automaticamente a tabela no banco.
1 0 < p r o p e r t yn a m e = " h i b e r n a t e . h b m 2 d d l . a u t o " > u p d a t e < / p r o p e r t y > 1 1 < m a p p i n gc l a s s = " e n t i d a d e s . P r o d u t o " / > 1 2
meninajava.blogspot.com.br/2012/01/fileupload-com-jsf-primefaces-hibernate.html
1/8
30/08/13
Agora vamos fazer a classe ProdutoDao que ter os metdos para persistir e consultar os dados do banco. ==> Dentro do pacote dao, crie uma nova classe com o nome ProdutoDao e implemente pelo menos os metdos de salvar e consultar todos os produtos, para este tutorial iremos utilizar somente estes dois.
3 p a c k a g ed a o ; 4 8 i m p o r te n t i d a d e s . P r o d u t o ; 9 i m p o r tj a v a . u t i l . L i s t ; 1 0 i m p o r to r g . h i b e r n a t e . S e s s i o n ; 1 1 1 2 p u b l i cc l a s sP r o d u t o D a o{ 1 3 p u b l i cv o i ds a l v a r ( P r o d u t op r o d u t o ) { 1 4 S e s s i o ns e s s i o n=H i b e r n a t e U t i l . g e t S e s s i o n ( ) ; 1 5 s e s s i o n . b e g i n T r a n s a c t i o n ( ) . b e g i n ( ) ; 1 6 s e s s i o n . s a v e O r U p d a t e ( p r o d u t o ) ; 1 7 s e s s i o n . g e t T r a n s a c t i o n ( ) . c o m m i t ( ) ; 1 8 s e s s i o n . c l o s e ( ) ; 1 9 S y s t e m . o u t . p r i n t l n ( " S a l v oc o ms u c e s s o " ) ; 2 0 } 2 1 2 2 p u b l i cL i s t < P r o d u t o >l i s t a r ( ) { 2 3 S e s s i o ns e s s i o n =H i b e r n a t e U t i l . g e t S e s s i o n ( ) ; 2 4 S t r i n gs q l=" S E L E C TpF R O MP r o d u t op " ; 2 5 r e t u r n( L i s t < P r o d u t o > )s e s s i o n . c r e a t e Q u e r y ( s q l ) . l i s t ( ) ; 2 6 } 2 7 }
commons-io http://commons.apache.org/io/download_io.cgi commons-fileupload http://commons.apache.org/fileupload/download_fileupload.cgi Aps baixar os arquivos, adicione as depedncias ao seu projeto.
==> Configure o arquivo web.xml adicionando o filter do fileUpload. <f i l t e r > <f i l t e r n a m e >P r i m e F a c e sF i l e U p l o a dF i l t e r </ f i l t e r n a m e > <f i l t e r c l a s s > o r g . p r i m e f a c e s . w e b a p p . f i l t e r . F i l e U p l o a d F i l t e r </ f i l t e r c l a s s > </ f i l t e r > <f i l t e r m a p p i n g > <f i l t e r n a m e > P r i m e F a c e sF i l e U p l o a dF i l t e r </ f i l t e r n a m e > <s e r v l e t n a m e >F a c e sS e r v l e t </ s e r v l e t n a m e > </ f i l t e r m a p p i n g >
No post anterior fiz o mtodo de upload do arquivo no mangedBean, para faciliar as futuras implementaes desta funcionalidade, criei uma classe UploadArquivo que ficar responsvel pelo upload. Assim quando o usurio pressionar o boto salvar do formulrio, armazenado o arquivo e os dados no banco. ==> No pacote managedBean crie uma nova classe com o nome UploadArquivo e implemente o cdigo abaixo.
5 p a c k a g em a n a g e d B e a n ; 6 7 i m p o r tj a v a . i o . F i l e ; 8 i m p o r tj a v a . i o . F i l e O u t p u t S t r e a m ; 9 i m p o r tj a v a . u t i l . l o g g i n g . L e v e l ; 1 0 i m p o r tj a v a . u t i l . l o g g i n g . L o g g e r ; 1 1 i m p o r tj a v a x . f a c e s . c o n t e x t . E x t e r n a l C o n t e x t ;
meninajava.blogspot.com.br/2012/01/fileupload-com-jsf-primefaces-hibernate.html
2/8
30/08/13
5 7 5 8 F a c e s C o n t e x ta F a c e s C o n t e x t=F a c e s C o n t e x t . g e t C u r r e n t I n s t a n c e ( ) ; 5 9 S e r v l e t C o n t e x tc o n t e x t= ( S e r v l e t C o n t e x t )a F a c e s C o n t e x t . g e t E x t e r n a l C o n t e x t ( ) . g e t C o n t e x t ( ) ;
6 0 6 1 r e t u r nc o n t e x t . g e t R e a l P a t h ( " / " ) ; 6 2 } 6 3 6 4 p u b l i cv o i df i l e U p l o a d ( F i l e U p l o a d E v e n te v e n t ,S t r i n gt y p e ,S t r i n gd i r e t o r i o ){ 6 5 t r y{ 6 6 t h i s . n o m e=n e wj a v a . u t i l . D a t e ( ) . g e t T i m e ( )+t y p e ; 6 7 t h i s . c a m i n h o=g e t R e a l P a t h ( )+d i r e t o r i o+g e t N o m e ( ) ; 6 8 t h i s . a r q u i v o=e v e n t . g e t F i l e ( ) . g e t C o n t e n t s ( ) ; 6 9 7 0 F i l ef i l e=n e wF i l e ( g e t R e a l P a t h ( )+d i r e t o r i o ) ; 7 1 f i l e . m k d i r s ( ) ; 7 2 7 3 }c a t c h( E x c e p t i o ne x ){ 7 4 S y s t e m . o u t . p r i n t l n ( " E r r on ou p l o a dd oa r q u i v o "+e x ) ; 7 5 } 7 6 } 7 7 7 8 p u b l i cv o i dg r a v a r ( ) { 7 9 8 0 t r y{ 8 1 8 2 F i l e O u t p u t S t r e a mf o s ; 8 3 f o s=n e wF i l e O u t p u t S t r e a m ( t h i s . c a m i n h o ) ; 8 4 f o s . w r i t e ( t h i s . a r q u i v o ) ; 8 5 f o s . c l o s e ( ) ; 8 6 8 7 }c a t c h( E x c e p t i o ne x ){ 8 8 S y s t e m . o u t . p r i n t l n ( e x ) ; 8 9 } 9 0 9 1 } 9 2 }
Linha 54 - O mtodo getRealPath pega o diretrio completo da sua aplicao no servidor. Linha 64 - O mtodo fileUpload ir fazer o carregamento do arquivo e prepara-lo para ser gravado. Linha 78 - O mtodo salvar, grava o arquivo no diretrio informado. Os arquivos sero armazenados na pasta build/web/nomediretorio do seu projeto. ==> No pacote managedBean crie uma nova classe com o nome ProdutoManagedBean e implemente o cdigo abaixo.
meninajava.blogspot.com.br/2012/01/fileupload-com-jsf-primefaces-hibernate.html
3/8
30/08/13
1 8 @ M a n a g e d B e a n ( n a m e = " p r o d u t o M B " ) 1 9 @ S e s s i o n S c o p e d 2 0 p u b l i cc l a s sP r o d u t o M a n a g e d B e a n{ 2 1 p r i v a t eP r o d u t op r o d u t o ; 2 2 p r i v a t eL i s t < P r o d u t o >l i s t a r P r o d u t o s ; 2 3 p r i v a t eU p l o a d A r q u i v oa r q u i v o=n e wU p l o a d A r q u i v o ( ) ; 2 4 2 5 p u b l i cP r o d u t o M a n a g e d B e a n ( ){ 2 6 t h i s . p r o d u t o=n e wP r o d u t o ( ) ; 2 7 t h i s . l i s t a r P r o d u t o s=n e wA r r a y L i s t < P r o d u t o > ( ) ; 2 8 } 2 9 3 0 p u b l i cL i s t < P r o d u t o >g e t L i s t a r P r o d u t o s ( ){ 3 1 r e t u r nn e wP r o d u t o D a o ( ) . l i s t a r ( ) ; 3 2 / / r e t u r nt h i s . l i s t a r P r o d u t o s ; 3 3 } 3 4 3 5 p u b l i cv o i ds e t L i s t a r P r o d u t o s ( L i s t < P r o d u t o >l i s t a r P r o d u t o s ){ 3 6 t h i s . l i s t a r P r o d u t o s=l i s t a r P r o d u t o s ; 3 7 } 3 8 3 9 p u b l i cP r o d u t og e t P r o d u t o ( ){ 4 0 r e t u r np r o d u t o ; 4 1 } 4 2 4 3 p u b l i cv o i ds e t P r o d u t o ( P r o d u t op r o d u t o ){ 4 4 t h i s . p r o d u t o=p r o d u t o ; 4 5 } 4 6 4 7 p u b l i cv o i du p l o a d A c t i o n( F i l e U p l o a d E v e n te v e n t ) { 4 8 t h i s . a r q u i v o . f i l e U p l o a d ( e v e n t ," . j p g " ," / i m a g e / " ) ; 4 9 t h i s . p r o d u t o . s e t F o t o ( t h i s . a r q u i v o . g e t N o m e ( ) ) ; 5 0 } 5 1 5 2 p u b l i cv o i ds a l v a r ( ) { 5 3 n e wP r o d u t o D a o ( ) . s a l v a r ( p r o d u t o ) ; 5 4 t h i s . a r q u i v o . g r a v a r ( ) ; 5 5 5 6 t h i s . p r o d u t o=n e wP r o d u t o ( ) ; 5 7 t h i s . a r q u i v o=n e wU p l o a d A r q u i v o ( ) ; 5 8 } 5 9 }
Linha 47 - Mtodo que ser chamado pela view para o upload do arquivo. O arquivo ser carregado mas ainda no ser salvo no diretrio. Linha 54 - Quando o usurio pressionar no boto salvar do formulrio, os dados sero persistidos no banco e o arquivo ser gravado no diretrio. ==> Agora vamos fazer a view, no arquivo index implemente o cdigo abaixo:
1 < ? x m lv e r s i o n = ' 1 . 0 'e n c o d i n g = ' U T F 8 '? > 2 < ! D O C T Y P Eh t m lP U B L I C" / / W 3 C / / D T DX H T M L1 . 0T r a n s i t i o n a l / / E N " " h t t p : / / w w w . w 3 . o r g / T R / x h t m l 1 / D T D / x h t m l 1 t r a n s i t i o n a l . d t d " >
meninajava.blogspot.com.br/2012/01/fileupload-com-jsf-primefaces-hibernate.html
4/8
30/08/13
7 < h : h e a d > 8 < t i t l e > F i l eU p l o a d < / t i t l e > 9 < / h : h e a d > 1 0 < h : b o d y > 1 1 < h 1 > I n s e r i rP r o d u t o < / h 1 > 1 2 < h : f o r m > 1 3 < h : p a n e l G r i dc o l u m n s = " 2 " >
1 4 N o m e :< h : i n p u t T e x tv a l u e = " # { p r o d u t o M B . p r o d u t o . n o m e } " / > 1 5 P r e o :< h : i n p u t T e x tv a l u e = " # { p r o d u t o M B . p r o d u t o . p r e c o } " / > 1 6 1 7 F o t o :< p : f i l e U p l o a di d = " u p l o a d "u p d a t e = " f o t o " 1 8 f i l e U p l o a d L i s t e n e r = " # { p r o d u t o M B . u p l o a d A c t i o n } "a u t o = " t r u e " / > 1 9 2 0 < h : c o m m a n d B u t t o na c t i o n = " # { p r o d u t o M B . s a l v a r } "v a l u e = " S a l v a r "/ > 2 1 < / h : p a n e l G r i d > 2 2 < / h : f o r m > 2 3 2 4 < h 2 > P r o d u t o sC a d a s t r a d o s < / h 2 > 2 5 < h : f o r m > 2 6 < h : d a t a T a b l ev a r = " p r o d u t o "v a l u e = " # { p r o d u t o M B . l i s t a r P r o d u t o s } "> 2 7 < h : c o l u m n > 2 8 < f : f a c e tn a m e = " h e a d e r " > F o t o < / f : f a c e t > 2 9 < h : g r a p h i c I m a g ev a l u e = " . / i m a g e / # { p r o d u t o . f o t o } " / > 3 0 < / h : c o l u m n > 3 1 < h : c o l u m n > 3 2 < f : f a c e tn a m e = " h e a d e r " > N o m e < / f : f a c e t > 3 3 < h : o u t p u t T e x tv a l u e = " # { p r o d u t o . n o m e } " / > 3 4 < / h : c o l u m n > 3 5 < h : c o l u m n > 3 6 < f : f a c e tn a m e = " h e a d e r " > P r e o < / f : f a c e t > 3 7 < h : o u t p u t T e x tv a l u e = " # { p r o d u t o . p r e c o } " / > 3 8 < / h : c o l u m n > 4 0 < / h : d a t a T a b l e > 4 1 < / h : f o r m > 4 2 < / h : b o d y > 4 3 < / h t m l > 4 4
14 comentrios:
@Armando_Piruk 5 de janeiro de 2012 17:14 hahahahaha outro nivel, o tutorial ficou bem mais legal e ta brincando com o layout do blog, #curti Responder
kiko 31 de maro de 2012 20:56 100%, foi de muita ajuda esse tutorial Responder
Douglas 20 de maio de 2012 07:26 Ol, consegui fazer tudo que voc ensinou... t salvando no arquivo e tudo certinho... s que estou tendo problema na hora de apresentar na tela pelo componente primefaces graphicImage... algum sabe pq a imagem no est sendo carregada? Responder Respostas Mara Regina Ol Douglas, 20 de maio de 2012 09:18
meninajava.blogspot.com.br/2012/01/fileupload-com-jsf-primefaces-hibernate.html
5/8
30/08/13
Douglas 24 de maio de 2012 09:00 no erro do componente, a imagem s no carregada... e eu coloquei at o endereo esttico pra testar e ela no carregada... a imagem que aparece no lugar uma que no aquele "x" vermelho, no sei explicar direito qual essa imagem. Responder
leonardo teles de almeida 25 de setembro de 2012 12:49 Ol, boa tarde... seria possvel utilizar este tutorial para salvar um arquivo em um banco na rede? Se sim, poderia me dizer onde posso achar alguma informao? Obrigado. Responder Respostas Mara Regina 25 de setembro de 2012 16:23
Sim, no exemplo do tutorial utilizei o conceito de Dao utilizando o hibernate para salvar os dados e imagem no banco. Da uma olhada neste tutorial tem um exemplo de conexo ao banco usando o hibernate. http://meninajava.blogspot.com/2011/11/configurar-o-hibernate-utilizando.html
Mara Regina
Agora que fui me atentar a sua pergunta... se vc deseja salvar o arquivo da imagem no banco em vez de gravar somente o nome no banco e deixar a imagem salva em um diretorio. No tenho nenhum exemplo em mos. Mas vou verificar Responder
Unknown 15 de novembro de 2012 12:59 oi tudo bem..primeiramente parabens.. estou com um problema na implementaao. log do servidor apache: SEVERE: null java.lang.NullPointerException Hibernate: /* insert br.com.ecommerceetelj.model.Produto */ insert into produto (id_cat, desconto_produto, descricao_produto, imagem_produto, qtd_produtodisponivel_produto, id_produto) values (?, ?, ?, ?, ?, ?, ?, ?) at java.io.FileOutputStream.(FileOutputStream.java:172) OBS: ESSE ERRO DE CIMA CAI EM if (name == null) { throw new NullPointerException(); }
nome_produto,
preco_produto,
meninajava.blogspot.com.br/2012/01/fileupload-com-jsf-primefaces-hibernate.html
6/8
30/08/13
Responder
Annimo 22 de maro de 2013 10:30 Ol Mara! Gostaria de salvar imagens em uma pasta dentro do container ( Tomcat ) exemplo webapps\documentos\ porque ? bem o sistema poderia ser republicado e perder a pasta de documentos caso estivesse sendo gravado dentro do contexto da aplicao vc saberia me dizer como? H ficou muito bom! Parabens Robson Responder
Thiago Brito 25 de abril de 2013 07:44 Agradeo por compartilhar, deu tudo certo aqui. Obrigado e sucesso. Responder
Carlos Jnior Rodrigues Borges 26 de junho de 2013 11:46 Parabns! Grande iniciativa, continue compartilhando conhecimento. Carlos Jnior. Responder D i g i t es e uc o m e n t r i o . . .
meninajava.blogspot.com.br/2012/01/fileupload-com-jsf-primefaces-hibernate.html
7/8
30/08/13
Incio
Assinar: Postar comentrios (Atom)
meninajava.blogspot.com.br/2012/01/fileupload-com-jsf-primefaces-hibernate.html
8/8