hallo,
ich programmiere gerade an einem Servlet, das Formularfelder mittels der Methode -neuerEintrag- einlesen und die eingelesenen Parameter in eine Datei schreiben soll, anschließend erfolgt mittels der Methode -leseEintraege- die Ausgabe aller gespeicherten Einträge auf einer Html Seite, die das Servlet selbst generiert.
Das Problem ist, dass bei der Aktualisierung der angezeigten Seite bzw. bei dem wiederholtem Aufruf des Servlets ohne Formulareintrag die Requestparameter des vorherigen Formulareintrags übernommen werden und die Datei bzw. html Ausgabe dadurch jedesmal um die vorherigen Einträge erweitert wird.
Meine Lösung wäre gewesen, die Request Parameter nach jedem Eintrag wieder auf null zu setzen, aber leider hat es nicht geklappt. Ich hatte es beispielsweise mit req.removeAttributes("artikelNr") ausprobiert, leider ohne Erfolg.
Danke vielmals für jederlei Hilfe.
Hier sind die Methoden neuerEintrag und leseEintraege:
ich programmiere gerade an einem Servlet, das Formularfelder mittels der Methode -neuerEintrag- einlesen und die eingelesenen Parameter in eine Datei schreiben soll, anschließend erfolgt mittels der Methode -leseEintraege- die Ausgabe aller gespeicherten Einträge auf einer Html Seite, die das Servlet selbst generiert.
Das Problem ist, dass bei der Aktualisierung der angezeigten Seite bzw. bei dem wiederholtem Aufruf des Servlets ohne Formulareintrag die Requestparameter des vorherigen Formulareintrags übernommen werden und die Datei bzw. html Ausgabe dadurch jedesmal um die vorherigen Einträge erweitert wird.
Meine Lösung wäre gewesen, die Request Parameter nach jedem Eintrag wieder auf null zu setzen, aber leider hat es nicht geklappt. Ich hatte es beispielsweise mit req.removeAttributes("artikelNr") ausprobiert, leider ohne Erfolg.
Danke vielmals für jederlei Hilfe.
Hier sind die Methoden neuerEintrag und leseEintraege:
Code:
public void neuerEintrag(HttpServletRequest req, HttpServletResponse res,PrintWriter out) throws IOException{
String artikelNr=req.getParameter("artikelNr");
String beschreibung=req.getParameter("beschreibung");
String preis=req.getParameter("preis");
if((!(artikelNr==""||beschreibung==""||preis==""))){
artikelNr = URLEncoder.encode(req.getParameter("artikelNr"),"UTF-8");
beschreibung = URLEncoder.encode(req.getParameter("beschreibung"),"UTF-8");
preis = URLEncoder.encode(req.getParameter("preis"),"UTF-8");
String deleteLine=req.getParameter("delete");
try{
FileWriter fw= new FileWriter(f,true);
PrintWriter pw= new PrintWriter(fw);
pw.print(artikelNr+"|");
pw.print(beschreibung+"|");
pw.println(preis);
pw.close();
}// zu try
catch(IOException e){
res.sendError(500,"IO Fehler\n"+e.getMessage());
}
out.println("<h1>IM2 - Aufgabe 17: Artikelverwaltung</h1><form action='/IM2/servlet/A17' method='post' style='background-color:gray;width:300px'><table cellpadding='5' cellspacing='5' border='0' ><tr> <td ><font color='#ffffff'>Artikel-Nummer</font></td> <td><input type='text' name='artikelNr'></td></tr><tr> <td><font color='#ffffff'>Beschreibung</font></td> <td><input type='text' name='beschreibung'></td></tr><tr> <td><font color='#ffffff'>Preis</font></td> <td><input type='text' name='preis' style='width:80'> <font size='5' color='#ffffff'>€</font> </td></tr><tr> <td></td> <td style='vetical-align:bottom'><input type='submit' name='hinzufuegen' value='Hinzufuegen'> <input type='reset' name='reset' value='Reset' style='width:50'></td></tr></table></form>");
out.println("Danke für den Eintrag<br>");
}//zu if artikelNr
else{
out.println("<h1>IM2 - Aufgabe 17: Artikelverwaltung</h1><form action='/IM2/servlet/A17' method='post' style='background-color:gray;width:300px'><table cellpadding='5' cellspacing='5' border='0' ><tr> <td ><font color='#ffffff'>Artikel-Nummer</font></td> <td><input type='text' name='artikelNr'></td></tr><tr> <td><font color='#ffffff'>Beschreibung</font></td> <td><input type='text' name='beschreibung'></td></tr><tr> <td><font color='#ffffff'>Preis</font></td> <td><input type='text' name='preis' style='width:80'> <font size='5' color='#ffffff'>€</font> </td></tr><tr> <td></td> <td style='vetical-align:bottom'><input type='submit' name='hinzufuegen' value='Hinzufuegen'> <input type='reset' name='reset' value='Reset' style='width:50'></td></tr></table></form>");
out.println("Formular nicht vollständig ausgefüllt<br>");
}
}// zu neuer Eintrag
Code:
public void leseEintraege (HttpServletRequest req, HttpServletResponse res,PrintWriter out) throws IOException,ServletException{
try{
if (f.canRead()){
FileReader fr = new FileReader(f);
LineNumberReader lnr = new LineNumberReader(fr);
String line;
StringTokenizer st;
int i=1;
String artNr;
String artBesch;
String artPreis;
while((line=lnr.readLine())!=null){
st= new StringTokenizer(line,"|");
while(st.hasMoreTokens()){
artNr=URLDecoder.decode(st.nextToken(),"UTF-8");
artBesch=URLDecoder.decode(st.nextToken(),"UTF-8");
artPreis=URLDecoder.decode(st.nextToken(),"UTF-8");
out.println("<tr>");
out.println("<td>"+artNr+"</td>");
out.println("<td>"+artBesch+"</td>");
out.println("<td>"+artPreis+"</td>");
out.println("<td> <a href='/IM2/servlet/A17?delete="+i+"'>Artikel löschen</a></td>");
out.println("</tr>");
i++;
}
}
lnr.close();
fTemp.renameTo(f);
}// zu if f.canread
}// zu try
catch(IOException e){
res.sendError(500,"IO Fehler\n"+e.getMessage());
}
}// schließt leseEinträge