然后提交到Action进行文件下载,处理完后转回到原来的页面,--->转回到原来的页面,设置redirected=true;

解决方案 »

  1.   

    而且最好不好不要用title_def定义页面,否则刷新的话会出现重复执行
      

  2.   

    楼上的兄台,如何设置redirected=true啊?
      

  3.   

    如果我是在jsp中下载的话,代码如下:
                            response.setContentType("APPLICATION/OCTET-STREAM");
                            response.setHeader("Content-Disposition","attachment; filename=" +form.getFileName());
                            java.io.FileInputStream fileInputStream = new java.io.FileInputStream(form.getFileUrl());
                            try
                            {
                                    int i;
                                    while ((i=fileInputStream.read()) != -1)
                                    {
                                            out.write(i);
                                    }
                            }
                            catch(Exception e)
                            {
                                    e.printStackTrace();
                            }
                            finally
                            {
                                    fileInputStream.close();
                            }
    下载后的文件却是乱码?(上传的文件正常)
    这又该如何解决呢?
      

  4.   

    1.点击信息列表中的连接;2.然后提交到Action进行文件下载,处理完后转回到原来的页面,这两步应该就行了,因为你'处理完后转回到原来的页面',页面已经是原来的页面了.应该已经刷新了
    这时候你再刷新页面,当然又再执行一次下载了..要不你把action代码贴出来看看,看看你是怎么处理下载的.是用一个stream,还是直接连接到要下载的文件
      

  5.   

    public ActionForward execute ( ActionMapping actionMapping , ActionForm actionForm , HttpServletRequest httpServletRequest ,
                                           HttpServletResponse httpServletResponse )
            {
                    System.out.println( "-----begin processing viewfile ..." ) ;
                    HttpSession session = httpServletRequest.getSession() ;
                    UserContainer uc = ( UserContainer ) session.getAttribute( "user" ) ;
                    if ( uc == null )
                    {
                            return ( actionMapping.findForward( "timeout" ) ) ;
                    }                DBTransaction transaction = null ;
                    FilesDAO fileDAO = null ;
                    try
                    {
                            String fileId = httpServletRequest.getParameter( "fileid" ) == null ? "0" : httpServletRequest.getParameter( "fileid" ).toString().trim() ;
                            String readerAccount = uc.getUser().getAccount() ;
                            String readerName = uc.getUser().getName() ;                        fileDAO = new FilesDAO() ;
                            FilesForm form = fileDAO.findFileById( Integer.parseInt( fileId ) ) ;                        transaction = new DBTransaction() ;
                            transaction.begin() ;
                            transaction.add( fileDAO ) ;                        byte[] f = FileUtil.readFileContent( form.getFileUrl() , form.getFileSize().intValue() ) ;
                            httpServletResponse.setContentType( "application/octet-stream" ) ;
                            httpServletResponse.addHeader( "Content-Disposition" , "attachment;filename=" + form.getFileName() ) ;
                            ByteArrayOutputStream byteOut = new ByteArrayOutputStream() ;
                            DataOutputStream out = new DataOutputStream( byteOut ) ;
                            for ( int z = 0 ; z < f.length ; z++ )
                            {
                                    out.writeByte( f[ z ] ) ;
                            }
                            out.flush() ;
                            out.close() ;                        ServletOutputStream servletOut = httpServletResponse.getOutputStream() ;
                            byte[] buf = byteOut.toByteArray() ;
                            httpServletResponse.setContentLength( buf.length ) ;
                            servletOut.write( buf ) ;
                            servletOut.close() ;                        if ( form.getReceiverCount().intValue() > 1 )
                            {
                                    if ( !StringUtil.isExisted( form.getReaderAccount() , readerAccount ) &&
                                         !StringUtil.isExisted( form.getUnreadAccount() , readerAccount ) )
                                    {
                                            form.setReaderAccount( form.getReaderAccount() == null ? ( readerAccount + "," ) :
                                                    ( form.getReaderAccount() + readerAccount + "," ) ) ;
                                            form.setReaderName( form.getReaderName() == null ? ( readerName + "," ) :
                                                    ( form.getReaderName() + readerName + "," ) ) ;
                                            form.setReaderCount( new Integer( form.getReaderCount().intValue() + 1 ) ) ;
                                    }
                            }
                            else
                            {
                                    form.setReaderAccount( readerAccount + "," ) ;
                                    form.setReaderName( readerName + "," ) ;
                                    form.setReaderCount( form.getReceiverCount() ) ;
                            }
                            fileDAO.acceptFile( form ) ;                        transaction.end() ;
                            httpServletRequest.setAttribute( "fileid" , fileId ) ;
                            System.out.println( "-----end process." ) ;
                    }
                    catch ( Exception ex )
                    {
                            try
                            {
                                    transaction.setRollBack() ;
                                    transaction.end() ;
                            }
                            catch ( Exception dse )
                            {
                                    dse.printStackTrace( System.out ) ;
                            }
                            ex.printStackTrace() ;
                            System.out.println( "-------------error--------" ) ;
                            httpServletRequest.setAttribute( "message" , "Error while performing finder. : " + ex.getMessage() ) ;
                            return ( actionMapping.findForward( "unknown-error" ) ) ;
                    }
                    return ( actionMapping.findForward( "acceptsuccessfully" ) ) ;
            }
    这就是源代码了,大家帮忙看看
      

  6.   

    大伙都到哪去了??????????????????
    而且为什么会抛下面的异常啊:
    14:36:11,525 INFO  [STDOUT] -----begin processing viewfile ...
    14:36:32,719 INFO  [STDOUT] ClientAbortException:  java.net.SocketException: Connection reset by peer: socket write error
    14:36:32,769 INFO  [STDOUT]     at org.apache.coyote.tomcat5.OutputBuffer.realWriteBytes(OutputBuffer.java:373)
    14:36:32,829 INFO  [STDOUT]     at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:323)
    14:36:32,859 INFO  [STDOUT]     at org.apache.coyote.tomcat5.OutputBuffer.writeBytes(OutputBuffer.java:401)
    14:36:32,879 INFO  [STDOUT]     at org.apache.coyote.tomcat5.OutputBuffer.write(OutputBuffer.java:388)
    14:36:32,969 INFO  [STDOUT]     at org.apache.coyote.tomcat5.CoyoteOutputStream.write(CoyoteOutputStream.java:76)
    14:36:32,999 INFO  [STDOUT]     at org.apache.coyote.tomcat5.CoyoteOutputStream.write(CoyoteOutputStream.java:70)
    14:36:33,019 INFO  [STDOUT]     at com.sdo.jmeis.ics.action.AcceptFileAction.downLoadFile(AcceptFileAction.java:147)
    14:36:33,049 INFO  [STDOUT]     at com.sdo.jmeis.ics.action.AcceptFileAction.execute(AcceptFileAction.java:61)
    14:36:33,080 INFO  [STDOUT]     at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
    14:36:33,100 INFO  [STDOUT]     at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
    14:36:33,130 INFO  [STDOUT]     at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
    14:36:33,150 INFO  [STDOUT]     at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
    14:36:33,180 INFO  [STDOUT]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
    14:36:33,200 INFO  [STDOUT]     at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)

    14:36:34,251 ERROR [Engine] ApplicationDispatcher[/jmics] Servlet.service() for servlet jsp threw exception
    java.lang.IllegalStateException: getOutputStream() has already been called for this response
            at org.apache.coyote.tomcat5.CoyoteResponse.getWriter(CoyoteResponse.java:599)
            at org.apache.coyote.tomcat5.CoyoteResponseFacade.getWriter(CoyoteResponseFacade.java:163)
            at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:111)
            at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:111)
            at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:122)
            at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115)
            at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:182)
            at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:115)
            at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:75)
            at org.apache.jsp.message.error_jsp._jspService(error_jsp.java:82)
            at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
            at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
            at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)