2009-02-11 88 views
0

我創建了兩個文件 1)index.html 2)player.jsp 我使用的是Tomcat服務器。 在index.html中,我在表單中創建了一些複選框並分配了值... 單擊提交後,我將這些值轉發給player.jsp ... 在player.jsp中,我動態生成了一個名爲「generate」的xml文件。 xml「。 此XML文件根據用戶請求而變化。 對於每個新的請求xml文件都應該被覆蓋。 如果在表單中選中了一個複選框,則generate.xml中的結構將採用一種形式 (如果在表單中選中了兩個複選框,則generate.xml中的結構將爲另一種形式)。 我嵌入在jsp頁面Flash播放器這需要generate.xml爲輸入,播放歌曲... 的player.jsp的代碼是如何覆蓋保存在上下文目錄中的文件

<%@ page import="java.io.*" %> 
<%@ page contentType="text/html;charset=ISO-8859-1" %> 
<% 
int iLf = 10; 
char cLf = (char)iLf; 
String myfile = application.getRealPath("/") + "generate.xml"; 

File outputFile = new File(myfile); 
outputFile.createNewFile(); 
FileWriter outfile = new FileWriter(outputFile); 
outfile.write(" <?xml version='1.0' encoding='UTF-8'?> "+cLf); 
outfile.write(" <playlist version='1' xmlns = 'http://xspf.org/ns/0/' > " +cLf); 
outfile.write(" <title>My Band Rocks Your Socks</title> "+cLf); 
outfile.write("<trackList>"+cLf); 
%> 
<%! String[] sports; %> 
<% 
    sports = request.getParameterValues("sports"); 

    out.println("<html><body><h1>hello</h1></body></html>"); 

    if (sports != null) 
    { 
     for (int i = 0; i < sports.length; i++) 
     { 
       // outfile.writeln (sports[i]); 
       String total=sports[i]; 
       String[] sa=total.split("[,]"); 
       // String[] sub=new String(); 
       outfile.write("<track>"+cLf); 
       for (int j=0;j<sa.length;j++) 
       { 
       // outfile.writeln(sa[j]); 
       // outfile.writeln("sa["+j+"]="+sa[j]); 
       if(j == 0) 
       { 
        outfile.write("<location>" + sa[0] +"</location>"+cLf); 
       } 
       else if (j == 1) 
        { 
         outfile.write("<image>" + sa[1] +"</image>"+cLf); 
        } 
        else if(j==2) 
          { 
          outfile.write("<title>" + sa[2] +"</title>"+cLf); 
          } 

       }// end of inner for loop()  
       outfile.write("</track>"+cLf); 
     //outfile.writeln(); 
     }// end of outer for() 
    } 
    //else outfile.writeln ("<b>none<b>"); 

    outfile.write(" </trackList> "+cLf); 
    outfile.write(" </playlist> "+cLf); 
    outfile.close(); 

    %> 
<object type="application/x-shockwave-flash" width="400" height="170" 
      data="xspf_player.swf?playlist_url=generate.xml"> 
      <param name="movie" value="xspf_player.swf?playlist_url=generate.xml" /> 

</object> 

我的問題是,在我的本地系統這一切都工作正常 和generate.xml每次都會覆蓋每個新的請求... 我創建了ROOT.war並在www.eatj.com上傳了這個文件 這裏當第一個請求被提交時generate.xml根據請求創建的文件.. for this generate this.xml is NOT OVERW RITTEN。 播放器將第一個請求生成的generate.xml文件提交給所有新請求。 請幫我做的改動任何代碼,這樣我可以覆蓋以前生成的XML文件..

回答

1

的方法getRealPath()下不戰爭工作,並且將返回,公平。您必須使用相對路徑才能使其工作。 Request.getResourceAsStream()是一個更好的選擇。正因爲如此,使用getRealPath()非常不鼓勵。

將帖子

Found a thread of coderanch確認我懷疑。