Ist es möglich die Request paramter auf "null" zu

Status
Nicht offen für weitere Antworten.
R

rony_19

Gast
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:



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
");
			
		}//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
");
		}
	}// zu neuer Eintrag




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>&&&&[url='/IM2/servlet/A17?delete="+i+"']Artikel löschen[/url]</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
 

freez

Top Contributor
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.

Naja, beim Klick auf den Reload Button (ich denke, das meinst du damit) schickst du die Parameter wieder mit. Somit kommen die auch in deinem Servlet wieder an. Da kannst du mit remove nix machen.

Dir sollte klar sein, das mit jedem Ansprechen des Servlets neue Objekte für Request und Response entstehen. Du kannst so kein Request (erst recht nicht die Attribute, die darin liegen) beeinflussen, der in der Zukunft liegt.
 

freez

Top Contributor
Noch eine Frage:

ist dies für den Produktiven Einsatz gedacht, auf welchem dann einige User zugreifen werden, oder ist das nur zu Übungszwecken.

Solltest du Ersteres verfolgen, dann denke ich, dass du Probleme bekommen wirst. Du solltest mindestens die Ausgabe (View) von den Daten trennen. Und die Datenhaltung in einer Datei würde für kleinere Sachen schon noch reichen. Aber wenn du umfangreichere Daten erwartest, würde ich ne einfache Datenbank empfehlen.

Verfolgst du Zweites, dann mehr Code bitte :) mindestens die doget und dopost Methoden (evtl. noch init). Es ist nämlich kein Zusammenhang zwischen deinen beiden Methoden erkennbar.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
pkm Wie navigiert man zwischen JSP-Seiten; ist ein POST möglich? Allgemeines EE 2
Dimax JSP Auf button click java methode ausführen.Ist das möglich? Allgemeines EE 6
M Was ist mit Java möglich? Allgemeines EE 13
D Debug Modus im Glassfish 2.1 plötzlich nicht mehr möglich Allgemeines EE 2
P [Maven2] maven-jaxb2-plugin - Kein absoluter Pfad für "<schemaDirectory> möglich??? Allgemeines EE 2
Y JSF - Session invalidate bei outpulink möglich? Allgemeines EE 4
G E-Mails vom lokalen PC verschicken (möglich?) Allgemeines EE 4
W Mehrere Applikationenen mit einer Anmeldung möglich? Allgemeines EE 11
T Servlet Request.getAttribut returns null from JSP Select-Box Allgemeines EE 4
M URL Servlet Request getParameter Allgemeines EE 2
G Request zu richtiger App leiten Allgemeines EE 2
J Client Request vom Server aus. Allgemeines EE 2
A Servlet erkennt request Objekt nicht Allgemeines EE 8
E Performance-Problem beim ersten Request Allgemeines EE 4
K Read Request Body Allgemeines EE 4
G jeder request eigener Thread ? Allgemeines EE 4
D Objekt geht bei request verloren Allgemeines EE 9
G Http request bekommen parsen und response senden Allgemeines EE 1
G Ablauf bei Request Allgemeines EE 4
M "Auto Client-Request" oder Server-Push oder Ajax – Allgemeines EE 2
N Servlet-Request abbrechen? Allgemeines EE 3
R Formulardaten mit request.getAttribute(name) Allgemeines EE 4
H request in JSP Seite ? Allgemeines EE 4
F Wie auf request.params mittels ${} zugreifen? Allgemeines EE 7
C JSF: request nach ausführung killen? Allgemeines EE 7
J init-Methode eines Servlet ausführen ohne vorherigen request Allgemeines EE 2
B Java-Client für eBaySOAP-API liefert HTTP(400) Bad Request Allgemeines EE 2
TRunKX Wie kriege ich die Auswahl in meinen Server Request? Allgemeines EE 7
S request.getParameter() holt NULL Allgemeines EE 4
K Request Problem Allgemeines EE 3
O überprüfen auf KEINE get-paramter Allgemeines EE 4

Ähnliche Java Themen

Neue Themen


Oben