大家好:
最近在烦躁一个struts2的一个上传问题。
我用smartupload组件,可是他的上传代码一般都是写在JSP中的
我想把上传代码代码写在action中可是走到upload()就基本上走不动了
CPU上到100%再过一会都包一个错
可是我把这段代码放到JSP中都可以顺利执行。
我怀疑是struts2的过滤器问题
<filter-name>tt</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>tt</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
就是请问可不可以请求的action不经过struts2的过滤器呀这样
请高手指点!!!

解决方案 »

  1.   

    一般情况下,是struts的action 就要经过struts的过滤器。如果想请求不经过过滤器,可直接写servlet。可以确定的是:报错不是因为jspsmartupload与struts不能的集成。
     建议把报的错贴出来。
      

  2.   

    可是这个等待的时间很长啊,传一个几k的都要三四分钟,而且还给我来个报错,这个肯定不能接受的呀【时间太长了,而且暂用CPU】。
    有struts2的action中用smartupload的例子嘛,有点话请参考一下,谢谢,
      

  3.   

    jsp中
      <html:form   action= "fileUpload.do "   method= "POST "   enctype= "multipart/form-data "> 
      <html:file   property= "myFile "/> 
       ...........
    </html:form>[code=Java]package org.lddg.hss2.action;import org.apache.struts2.ServletActionContext;
    import org.apache.struts2.dispatcher.mapper.ActionMapping;import com.jspsmart.upload.File;
    import com.jspsmart.upload.SmartUpload;
    import com.opensymphony.xwork2.Action;
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;public class JspSmartUploadAction extends ActionSupport implements Action {
    public String file( ) throws Exception {
    SmartUpload su=new SmartUpload();
    su.initialize(ServletActionContext.getPageContext().getServletConfig(), ServletActionContext.getRequest(), ServletActionContext.getResponse());
    su.setAllowedFilesList("jpg,gif,bmp,dib");//设置上传文件类型
    su.setDeniedFilesList("exe,bat,jsp,htm,,");//不允许上传的文件类型


    su.upload();
    File fil=su.getFiles().getFile(0);
    String saveurl="D:\\jjk_Office\\photoImage\\"; //保存上传图片路径的文件夹
    fil.saveAs(saveurl+fil.getFieldName(),su.SAVE_PHYSICAL);
    String fileName=fil.getFieldName();
    System.out.println(fileName);

    return null;
    }
    }code]
      

  4.   

    package org.lddg.hss2.action;import org.apache.struts2.ServletActionContext;
    import org.apache.struts2.dispatcher.mapper.ActionMapping;import com.jspsmart.upload.File;
    import com.jspsmart.upload.SmartUpload;
    import com.opensymphony.xwork2.Action;
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;public class JspSmartUploadAction extends ActionSupport implements Action {
    public String file( ) throws Exception {
    SmartUpload su=new SmartUpload();
    su.initialize(ServletActionContext.getPageContext().getServletConfig(), ServletActionContext.getRequest(), ServletActionContext.getResponse());
    su.setAllowedFilesList("jpg,gif,bmp,dib");//设置上传文件类型
    su.setDeniedFilesList("exe,bat,jsp,htm,,");//不允许上传的文件类型


    su.upload();
    File fil=su.getFiles().getFile(0);
    String saveurl="D:\\jjk_Office\\photoImage\\"; //保存上传图片路径的文件夹
    fil.saveAs(saveurl+fil.getFieldName(),su.SAVE_PHYSICAL);
    String fileName=fil.getFieldName();
    System.out.println(fileName);

    return null;
    }
    }
      

  5.   

    兄弟。。你段代码ServletActionContext.getPageContext().getServletConfig()在struts2 的action中为空不能执行呀,你怎么设置的啊
      

  6.   

    <filter-name>tt</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>tt</filter-name>
    <url-pattern>*.action</url-pattern>
    </filter-mapping>我一直都是这样的<url-pattern>/*</url-pattern>