Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Video: Mini-curso de Desenvolvimento Web no Eclipse - Parte 13 (Aula 12) - Integração com Apache Commons Upload

Nesta vídeo aula continuaremos o aprofundamento no framework Struts2, abordamos a integração dele com o Apache Commons Upload.

GLB: 0
st1\:*{behavior:url(#ieooui) }

Titulo: Mini-curso de Desenvolvimento Web no Eclipse - Parte 13 (Aula 12) - Integração com Apache Commons Upload

Duração: 00:12:22

 

Mini-resumo: Continuando o aprofundamento no framework Struts2, abordamos a

integração dele com o Apache Commons Upload que facilita bastante o envio (upload) de arquivos em aplicações Web. O Struts2 possui uma tag própria para campos do tipo "file", faz toda o tratamento do arquivo e o disponibiliza na ação como um objeto File já pronto para a sua lógica de negócio.

Exemplos utilizados: Um formulário simples de envio de arquivo que é recebido pela ação do Struts2, que calcula o tamanho do arquivo e exibe, na página de

resultado, o nome do arquivo (no cliente e no servidor), seu tamanho (em

bytes, KB e MB) e seu tipo (content type).

Tecnologias utilizadas: Java, Eclipse, Tomcat, Struts2, FreeMarker, Apache Commons Upload





    2 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Erivando S. Ramos

Prezado  Vítor

Estou acompanhando o curso e na 12ª aula da parte 13 do curso.
configurei e codifiquei tudo conforme a video-aula, mais no momento de fazer o 1º teste executando o servidor...

Console do servidor ao rodar a aplicação:
15/02/2010 19:16:47 org.apache.catalina.core.AprLifecycleListener init

INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Arquivos de programas\Java\jre6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Arquivos de programas\Java\jre6\bin\client;C:\Arquivos de programas\Java\jre6\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;c:\Arquivos de programas\Microsoft SQL Server\90\Tools\binn\;C:\Arquivos de programas\QuickTime\QTSystem\;C:\Arquivos de programas\Java\jdk1.6.0_18\bin;C:\Arquivos de programas\Arquivos comuns\Ahead\Lib\

15/02/2010 19:16:47 org.apache.tomcat.util.digester.SetPropertiesRule begin

WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ''source'' to ''org.eclipse.jst.jee.server:Minicurso'' did not find a matching property.

15/02/2010 19:16:47 org.apache.coyote.http11.Http11Protocol init

INFO: Initializing Coyote HTTP/1.1 on http-8080

15/02/2010 19:16:47 org.apache.catalina.startup.Catalina load

INFO: Initialization processed in 738 ms

15/02/2010 19:16:47 org.apache.catalina.core.StandardService start

INFO: Starting service Catalina

15/02/2010 19:16:47 org.apache.catalina.core.StandardEngine start

INFO: Starting Servlet Engine: Apache Tomcat/6.0.24

15/02/2010 19:16:49 org.apache.catalina.core.ApplicationContext log

INFO: Initializing Spring root WebApplicationContext

15/02/2010 19:16:49 org.springframework.web.context.ContextLoader initWebApplicationContext

INFO: Root WebApplicationContext: initialization started

15/02/2010 19:16:49 org.springframework.context.support.AbstractApplicationContext prepareRefresh

INFO: Refreshing org.springframework.web.context.support.XmlWebApplicationContext@16921fd: display name [Root WebApplicationContext]; startup date [Mon Feb 15 19:16:49 GMT-03:00 2010]; root of context hierarchy

15/02/2010 19:16:49 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml]

15/02/2010 19:16:49 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory

INFO: Bean factory for application context [org.springframework.web.context.support.XmlWebApplicationContext@16921fd]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1a918d5

15/02/2010 19:16:49 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons

INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@1a918d5: defining beans [aplEfetuarCompra,scopedTarget.carrinhoCompras,carrinhoCompras]; root of factory hierarchy

15/02/2010 19:16:50 org.springframework.web.context.ContextLoader initWebApplicationContext

INFO: Root WebApplicationContext: initialization completed in 1359 ms

15/02/2010 19:16:50 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register

INFO: Parsing configuration file [struts-default.xml]

15/02/2010 19:16:51 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register

INFO: Parsing configuration file [struts-plugin.xml]

15/02/2010 19:16:51 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register

INFO: Parsing configuration file [struts.xml]

15/02/2010 19:16:51 org.apache.struts2.config.Settings getLocale

WARNING: Settings: Could not parse struts.locale setting, substituting default VM locale

15/02/2010 19:16:51 org.apache.struts2.spring.StrutsSpringObjectFactory

INFO: Initializing Struts-Spring integration...

15/02/2010 19:16:51 com.opensymphony.xwork2.spring.SpringObjectFactory setAutowireStrategy

INFO: Setting autowire strategy to name

15/02/2010 19:16:51 org.apache.struts2.spring.StrutsSpringObjectFactory

INFO: ... initialized Struts-Spring integration successfully

15/02/2010 19:16:52 com.opensymphony.xwork2.util.ObjectTypeDeterminerFactory

INFO: Setting DefaultObjectTypeDeterminer as default ...

15/02/2010 19:16:52 org.apache.coyote.http11.Http11Protocol start

INFO: Starting Coyote HTTP/1.1 on http-8080

15/02/2010 19:16:52 org.apache.jk.common.ChannelSocket init

INFO: JK: ajp13 listening on /0.0.0.0:8009

15/02/2010 19:16:52 org.apache.jk.server.JkMain start

INFO: Jk running ID=0 time=0/63 config=null

15/02/2010 19:16:52 org.apache.catalina.startup.Catalina start

INFO: Server startup in 4388 ms

...na página home tudo ok...
http://localhost:8080/Minicurso/home.action
...ao clicar no link de enviar arquivo, a pagina de formulario tambem ok...
...mais apos selecionar um arquivo (imagem.jpg) e clicar no botão Upload... http://localhost:8080/Minicurso/aula12/enviarArquivo.action ...neste endereço apresenta o ERRO.
e não mostra a pagina de resultado.


HTTP Status 500 -


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Filter execution threw an exception
	org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

root cause

java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
	org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:196)
	org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:358)
	org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.parse(JakartaMultiPartRequest.java:90)
	org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper.(MultiPartRequestWrapper.java:73)
	org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:698)
	org.apache.struts2.dispatcher.FilterDispatcher.prepareDispatcherAndWrapRequest(FilterDispatcher.java:334)
	org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:394)
	org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

root cause

java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)
	org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:196)
	org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:358)
	org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.parse(JakartaMultiPartRequest.java:90)
	org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper.(MultiPartRequestWrapper.java:73)
	org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:698)
	org.apache.struts2.dispatcher.FilterDispatcher.prepareDispatcherAndWrapRequest(FilterDispatcher.java:334)
	org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:394)
	org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.24 logs.


Apache Tomcat/6.0.24

Console do servidor após executar a ação de enviar o arquivo:

15/02/2010 19:18:22 org.apache.struts2.dispatcher.Dispatcher getSaveDir

INFO: Unable to find ''struts.multipart.saveDir'' property setting. Defaulting to javax.servlet.context.tempdir

15/02/2010 19:18:22 org.apache.catalina.core.StandardWrapperValve invoke

SEVERE: Servlet.service() for servlet default threw exception

java.lang.ClassNotFoundException: org.apache.commons.io.output.DeferredFileOutputStream

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)

at org.apache.commons.fileupload.disk.DiskFileItemFactory.createItem(DiskFileItemFactory.java:196)

at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:358)

at org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest.parse(JakartaMultiPartRequest.java:90)

at org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper.(MultiPartRequestWrapper.java:73)

at org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:698)

at org.apache.struts2.dispatcher.FilterDispatcher.prepareDispatcherAndWrapRequest(FilterDispatcher.java:334)

at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:394)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Unknown Source)

 
Ja examinei tudo, voltei o video varias vezes e não localizei o erro.
Pode me ajudar??
 
Grato!


em 15/2/2010 20:34 - Responder

 

[Comentário do autor]   Vítor Estêvão Silva Souza
Caro Erivando, A chave da resposta está aqui: java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream Está faltando a biblioteca commons-io da Apache. Você pode obtê-la em http://commons.apache.org/, mas é bem provável que exista uma cópia do commons-io.jar (ou algo parecido) na pasta lib da distribuição do Struts. Não me lembro se na vídeo-aula eu falo sobre essa biblioteca ou se isso está em alguma vídeo-aula anterior. Se você estiver utilizando versões diferentes da que eu usei pode ser também que as novas versões tenham essa dependência e as antigas não. De qualquer forma, colocando o JAR na sua WebApp deve passar desse erro. Abraços, Vítor Souza


em 16/2/2010 08:49 - Responder
 



Curso Online
Autor
Vítor Estêvão Silva Souza

Graduação em Ciência da Computação e Mestrado em Informática com ênfase em Engenharia de Software na Universidade Federal do Espírito Santo (UFES), onde trabalhou também como professor substituto.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
4   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da Java Magazine ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03