关于struts上传,拦截器问题。
最近在写一个上传的程序。我觉得没有问题,我这里拦截器定义的上传大小不超过8M,然后我用以个超过8M的文件去试验,一切都顺利。返回到INPUT页面。可是再点击其他功能。就报RUNTIME异常。不知道怎么回事。
郁闷啊
--------------------编程问答-------------------- 贴代码。贴异常。
问题说不定出在前面,后面才暴露的,这种情况太多见了。 --------------------编程问答-------------------- private File file;
private MailDAO mdao;
private String fileFileName;
// 关于上传
private String getSaveDir() {
return ServletActionContext.getServletContext().getRealPath("/uploads");
}
// 发送邮件
public String mailSend() {
ActionContext context = ActionContext.getContext();
Map session = context.getSession();
Employee sendEmp = (Employee) session.get("employee");
Employee receiveEmp = edao.getById(this.receive);
Date date = new Date(System.currentTimeMillis());
if (this.file != null) {
// 文件上传
File targetFile = new File(getSaveDir(),fileFileName);
file.renameTo(targetFile);
this.mail.setFilepath(fileFileName);
}
this.mail.setEmployeeByReceive(receiveEmp);
this.mail.setEmployeeBySend(sendEmp);
this.mail.setSendtime(date);
this.mail.setIsdelete(0);
this.mail.setIsread(0);
this.mdao.writeMail(this.mail);
return SUCCESS;
}
<!-- 发送邮件-->
<action name="mailSend" class="mailAction" method="mailSend">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpg,application/zip,application/xml,application/vnd.ms-excel,video/x-ms-wmv,audio/x-wav,text/plain,
application/x-shockwave-flash,application/vnd.ms-powerpoint,application/pdf,video/mpeg,video/mp4,audio/mpeg,image/jpeg,
text/plain,application/java-archive,image/x-icon,text/html,image/gif,application/msword,image/bmp
</param>
<param name="maximumSize">8388608</param>
</interceptor-ref>
<interceptor-ref name="mystack"></interceptor-ref>
<result>/mailSendOK.jsp</result>
<result name="input">/mailWrite.jsp</result>
</action>
<tr>
<td align="right" width="30%">
上传文件:
</td>
<td align="left">
<s:file name="file" value="" />
</td>
<td align="left" width="45%">
<span> 文件大小不能超过8M</span>
</td>
</tr>
Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.RuntimeException: Invalid action class configuration that references an unknown class named [mailAction]
org.apache.struts2.convention.ConventionsServiceImpl.determineResultPath(ConventionsServiceImpl.java:100)
org.apache.struts2.convention.ConventionUnknownHandler.determinePath(ConventionUnknownHandler.java:385)
org.apache.struts2.convention.ConventionUnknownHandler.handleUnknownResult(ConventionUnknownHandler.java:274)
com.opensymphony.xwork2.DefaultUnknownHandlerManager.handleUnknownResult(DefaultUnknownHandlerManager.java:76)
com.opensymphony.xwork2.DefaultActionInvocation.createResult(DefaultActionInvocation.java:215)
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:356)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
interceptor.LoginInterceptor.intercept(LoginInterceptor.java:23)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.33 logs.
--------------------编程问答-------------------- 要想恢复操作 必须要重启TOMCAT 不知道什么原因呢。 --------------------编程问答-------------------- 虽然注意到你用的是比较低的Tomcat5,但其实并没有在楼主贴出来的东西中发现问题。 --------------------编程问答-------------------- 网上有SMARTUPLOAD的示例。
补充:Java , Web 开发