Java 无法实例化bean类[multipart.MultipartFile]:指定的类是org.springframework.beans.BeanUtils.InstanceClass上的接口
我想在我的本地网站上传一个文件,我使用Spring和Hibernate(我不使用Maven) 我做了一个表格:Java 无法实例化bean类[multipart.MultipartFile]:指定的类是org.springframework.beans.BeanUtils.InstanceClass上的接口,java,spring,hibernate,file-upload,Java,Spring,Hibernate,File Upload,我想在我的本地网站上传一个文件,我使用Spring和Hibernate(我不使用Maven) 我做了一个表格: <form class="text-center" action="<c:url value="/createRessource.do"/>" enctype="multipart/form-data" method="POST"> <h4 class="bleucolor">Titre de la ressource (20 caractè
<form class="text-center" action="<c:url value="/createRessource.do"/>" enctype="multipart/form-data" method="POST">
<h4 class="bleucolor">Titre de la ressource (20 caractères maximum) : </h4>
<input class="col-lg-4 text-center col-lg-offset-4" type="text" name="titre" maxlength="20"/> <br> <br> <br>
<h4 class="bleucolor">Description de la ressource (1024 caractères maximum) : </h4>
<textarea name="description" rows=10 cols=50 maxlength="1024" ></textarea><br><br><br>
<h4 class="bleucolor"> Pièce jointe :</h4>
<input class="col-lg-4 text-center col-lg-offset-4" type="file" name="file" /><br><br><br>
<h4 class="bleucolor"> Tags de la ressource : </h4>
<c:forEach var="model" items="${sessionScope.tags}">
<input type="checkbox" name="tagsRessource" value="${model.getIdtag()}" id="${model.getIdtag()}"/>
<label class="font18" for="${model.getIdtag()}"> ${model.getLibelle()} </label>
</c:forEach><br><br><br>
<input class="text-center avioletbackground rosebtn btn btn-success btn-lg" type="submit"/>
</form>
我的函数“ajuterresource”将ressource添加到数据库中。
一开始,我不知道Java中是否存在MyltipartFile类型。它可以工作,但我无法找到我上传的文件的名称和内容类型,并将其保存在数据库中
现在,当我提交表格时,我有一个错误:
janv. 06, 2016 7:08:41 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatchers] in context with path [/jobEISTI] threw exception [Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.multipart.MultipartFile]: Specified class is an interface] with root cause
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.multipart.MultipartFile]: Specified class is an interface
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:101)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.newCommandObject(MultiActionController.java:520)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:466)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:408)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:874)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:790)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
我的/WEB-INF/lib中没有“jspapi-*.jar”。
我想它来自多部分文件,但我不知道我该怎么做。拜托,你能帮我吗
非常感谢您您为什么要使用过时的
多动作控制器
?使用带注释的@Controller
类型。“我不使用Maven”-这是根本原因。请不要告诉我你实际上是在写这样的代码?永远不要创建应用程序上下文的实例来检索bean(除非您希望遇到内存不足问题、奇怪的事务问题、数据库不足等)。使用依赖注入获得所需的服务。你似乎也混合了不同的策略(@Controller
根据注释判断)和旧的多动作控制器
@SotiriosDelimanolis,当我开始这个项目时,我认为它很好,但似乎不是,对于我未来的项目,我将从一开始就使用[tag:@Controller]注释。对于M.Deinum,我实际上是在写这样的代码,我在项目开始时做了一个很大的误解,这是JEE中我必须做的第一个项目,对于我的下一个项目,我将应用你所有的建议:只使用注释,使用Maven,忘记MultiActionController。我将尝试更新我的控制器(删除MultiActionController并使用注释,我希望不会太晚谢谢你的回答为什么你使用过时的MultiActionController
?使用@Controller
注释类型。“我不使用Maven”-这是根本原因。请不要告诉我您实际上正在编写这样的代码?永远不要创建应用程序上下文的实例来检索bean(除非您希望遇到内存不足问题、奇怪的事务问题、数据库不足等)。使用依赖注入来获得所需的服务。您似乎还混合了不同的策略(@Controller
根据注释判断)和旧的MultiActionController
@SotiriosDelimanolis,当我开始这个项目时,我认为它很好,但似乎不是,对于我未来的项目,我将使用[tag:@Controller]从一开始就注释。对于M.Deinum,我实际上是在写这样的代码,我在我的项目开始时做了一个很大的误解,这是JEE中我必须做的第一个项目,对于我的下一个项目,我将应用你所有的建议:仅注释,使用Maven,忘记MultiActionController。我将尝试更新我的控件ller(删除MultiActionController并使用注释,我希望不会太晚,谢谢您的回答
public ModelAndView createRessource(HttpServletRequest request, HttpServletResponse response, @RequestParam(value="file", required=true) MultipartFile file){
ApplicationContext ctx = new GenericXmlApplicationContext("applicationContext.xml");
String resultat = null;
RessourceHome bean = (RessourceHome) ctx.getBean("RessourceHome");
String titre = request.getParameter("titre");
String description = request.getParameter("description");
String fichierUpload = request.getParameter("file");
String[] tagsRessource = request.getParameterValues("tagsRessource");
String fichierName = file.getName();
String fichierType = file.getContentType();
try {
byte[] bytes = fichierUpload.getBytes();
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File("fichier")));
stream.write(bytes);
stream.close();
resultat = bean.ajouterRessource(titre, description, bytes, tagsRessource, fichierName, fichierType);
} catch (Exception e) {
return new ModelAndView("creationRessource");
}
if (resultat == null) {
String erreur = "Création de l'annonce réussie";
return new ModelAndView("creationRessource", "erreur", erreur);
} else {
return new ModelAndView("creationRessource", "erreur", resultat);
}
}
janv. 06, 2016 7:08:41 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatchers] in context with path [/jobEISTI] threw exception [Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.multipart.MultipartFile]: Specified class is an interface] with root cause
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.web.multipart.MultipartFile]: Specified class is an interface
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:101)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.newCommandObject(MultiActionController.java:520)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:466)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:408)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:874)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:790)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)