terça-feira, 14 de junho de 2011

Obter dados de um parametro do web.xml

Estive com uma dificuldade, precisava fazer upload de um arquivo mas não queria informar o caminho absoluto no servidor, infelizmente ainda não consegui fazer funcionar isso... mas, na busca por uma solucão, acabei aprendendo outra coisa legal, pra quem já programou em .NET conhece bem a tal da web.config, um arquivo XML com milhoes de configuracoes, ta um pouco menos, mas voce pode adicionar varias coisas la e obter na aplicacao, seria um lugar bom pra guardar qualquer parametro do sistema que possa se alterar em uma eventual nova instalacao ou mudanca de servidor... chega do rolo, vamos ao codigo Java com Struts, aqui o arquivo se chama web.xml e costuma estar dentro do WEB-INF, podemos adicionar variaveis (parametros de contexto) com informacoes úteis, como no meu caso queria manter o caminho absoluto até o diretório da minha aplicacao. Olha a imagem abaixo, após a configuracao do tiles  tem um context-param (linhas 32->35), ali dentro fica os dados desse parametro (nome e valor) que eu adicionei.


Minha dificuldade foi conseguir obter esse valor na app, após várias tentativas e erros deu certo, muito simples por sinal:

ServletActionContext.getServletContext().getInitParameter("caminhoFisicoImgProdutos");


Bom, na imagem acima tem além da parte que obtém caminhoAbsoluto o upload do arquivo igual tutorial do helton, e tem tbm a atualizacao dos dados no banco, onde eh alterado o caminho (nome arquivo) da imagem...

Isso ai galera, até +.

segunda-feira, 6 de junho de 2011

Struts2 - Upload de arquivos, gravando no sistema de arquivos

Para fazer upload usando Struts2, em Java para o sistema de arquivos (do servidor) é relativamente simples. Segue exemplo básico abaixo com uma pequena explicação.

No NetBeans, crie um novo projeto (Java Web) , chameio- de “UploadFS”. Usaremos Tomcat como de costume, mas esse aplicativo não tem banco de dados, portanto, na tela dos frameworks, marque apenas o Struts2, e não o Hibernate, também não precisa criar a página de exemplo.

Bom, projeto criado, vamos modificar o index.jsp e incluir o formulário de upload. Código fonte abaixo.



Perceba que informamos no enctype o valor “multipart/form-data”. Se não, não faria o upload. O action do form, está para ação “doUpload”, então vamos implementar esse método. Criamos o arquivo “Upload.java”.


Bom, como vemos no código acima, apenas implementamos os gettes e os setters de um atributo do tipo File, para fazer upload, o Struts pede que se façam os outros dois atributos, conforme o nome do filefield que colocamos no jsp, no caso "arquivo"

Abaixo a implementação do upload em sí, carregando o arquivo para /dados/temp/upload.



Bom, próximo passo é configurar o struts, apontando a ação "doUpload" para a classe Upload no respectivo método.






Rodando a aplicação (diretório de upload está vazio)...


Escolhemos uma... e vua-la!



Download do código fonte do exemplo.

O Próximo, upando e cadastrando no BD.