2009-02-11 5 views
0

J'ai créé deux fichiers 1) index.html 2) player.jsp J'utilise Tomcat Server. Dans l'index.html j'ai créé des cases à cocher dans un formulaire et assigné les valeurs ... Après avoir cliqué sur submit j'ai transmis ces valeurs à player.jsp ... Dans player.jsp j'ai généré dynamiquement un fichier xml nommé "generate. xml ". Ce fichier XML change en fonction de la demande de l'utilisateur. Pour chaque nouvelle demande, le fichier XML doit être remplacé. si une case à cocher est sélectionnée dans le formulaire, structure dans generate.xml sera sous une forme si deux cases à cocher sont sélectionnées dans le formulaire, structure dans generate.xml sera d'une autre forme. J'EMBEDDED un lecteur flash dans la page jsp qui prend generate.xml en entrée et joue des chansons en conséquence ... Le code du player.jsp estComment écraser le fichier enregistré dans le répertoire contextuel

<%@ 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> 

mon problème est dans mes locaux système tout cela fonctionne bien et le fichier generate.xml est écrasé chaque fois pour chaque nouvelle demande ... J'ai créé ROOT.war et téléchargé ce fichier dans www.eatj.com ici lorsque la première demande est soumise un fichier generate.xml fichier créé en fonction de la demande .. pour la prochaine demande ce fichier generate.xml est PAS OVERW RITTEN. Le lecteur prend le fichier generate.xml généré par la première requête pour toutes les nouvelles requêtes effectuées. pls me aider à faire des changements dans le code afin que je puisse remplacer l'ancien fichier xml généré ..

Répondre

1

La méthode getRealPath() ne fonctionne pas sous guerre et retourneraient null, UNE FOIRE. Vous devez utiliser un chemin relatif pour le faire fonctionner. Request.getResourceAsStream() est une meilleure option. L'utilisation de getRealPath() est très déconseillée pour cette raison.

[Modifié]

Found a thread of coderanch confirmant mon doute.

Questions connexes