speichern von daten mittels servlet in xml

  • Themenstarter Themenstarter leo476
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
L

leo476

Gast
hallo,
ich brauche mal eure hilfe. ich möchte gerne daten in einem xml datei schreiben und das ganze über ein servlet.
mein servlet sieht so aus:
Code:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import Model.Artikel;
import Model.Kunde;


public class Controller extends HttpServlet{

	public void doGet(HttpServletRequest requ,HttpServletResponse resp)
	throws ServletException, IOException{
		
		Artikel.ArtikelLöschen(4);
		
		resp.setContentType("text/html");
		
		double ver = 1.6;
		
		PrintWriter out = resp.getWriter();
		out.println("<html>");	
		out.println("-=Controller=-  Version:"+ver);
		out.println("
artikel 4 auf false gesetzt");
		out.println("</html>");
		out.close(); 
	}
}


so funktioniert es irgednwie nicht.....

wenn ich das ganze aber in eclipse laufen lasse und zwar so :

Code:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

import Model.Artikel;
import Model.Kunde;


public class Controller extends HttpServlet{

	public void doGet(HttpServletRequest requ,HttpServletResponse resp)
	throws ServletException, IOException{
				
		resp.setContentType("text/html");
		
		double ver = 1.6;
		
		PrintWriter out = resp.getWriter();
		out.println("<html>");	
		out.println("-=Controller=-  Version:"+ver);
		out.println("
artikel 4 auf false gesetzt");
		out.println("</html>");
		out.close(); 
	}

public static void main(String[] args) {

Artikel.ArtikelLöschen(4);

}
}

dann funktiert es ohne probleme.. wenn ich im firefox dann mein servlet aufrufe dann startet er die funktion zum löschen des artikels irgednwie nicht.

was muss ich tun ?


danke euch !!
 
Klappt das mit dem Servlet denn überhaupt? Also sieht man generiertes HTML? Was macht denn die ArtikelLöschen()-Funktion?
 
ja.. also servlet wird ganz normal ausgeführt...nur es regt sich nichts.


die funktion sieht so aus:

Code:
public static void ArtikelLöschen(int Anr) {
		ArtikelAttributÄndern(Anr, "Aktiv", "false");
	}

Code:
public static void ArtikelAttributÄndern(int Anr, String attribute,
			String wert) {
		boolean gefunden = false;
		try {
			SAXBuilder builder = new SAXBuilder();
			Document doc = builder.build("XML/Artikelstamm.xml");
			Element Stamm = doc.getRootElement();
			Iterator Artikelliste = Stamm.getChildren("Artikel").iterator();
			while (Artikelliste.hasNext()) {
				Element Artikel = (Element) Artikelliste.next();
				if (Anr == Artikel.getAttribute("Anr").getIntValue()) {
					gefunden = true;
					if (Artikel.getChildText(attribute) == null) {
						System.out
								.println("Unbekanntes Attribut: " + attribute);
						break;
					}
					Artikel.removeChild(attribute);
					Element eNeuesAttribut = new Element(attribute);
					eNeuesAttribut.addContent(new Text(wert));
					Artikel.addContent(eNeuesAttribut);
					// XML File schreiben
					XMLOutputter outp = new XMLOutputter(Format
							.getPrettyFormat());
					outp.output(doc, new FileOutputStream(new File(
							"XML/Artikelstamm.xml")));
				}
			}
			if (gefunden == false) {
				System.out.println("Artikel " + Anr + " wurde nicht gefunden.");
			}
		} catch (Exception any) {
			any.printStackTrace();
			System.out.println("Datei nicht gefunden! " + any.getMessage());
		}
	}

wenn man es in der main startet läuft es ja auch ohne probleme.. nur halt nicht per webbrowser....
ist das denn sonst alles richtig ??

danke
 
Gib's denn in dem Server Log eine Ausnahme zu sehen oder steht im Log, dass OK war? (Probleme könnten die Pfade machen.)
 
meinst du die catalina log ??

da steht das drin. weiss nicht ob dir das weiterhilft.


Code:
INFO: Starting Servlet Engine: Apache Tomcat/5.5.23
20.04.2007 15:10:28 org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
20.04.2007 15:10:32 org.apache.coyote.http11.Http11BaseProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
20.04.2007 15:10:33 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
20.04.2007 15:10:33 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/170  config=null
20.04.2007 15:10:33 org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
20.04.2007 15:10:34 org.apache.catalina.startup.Catalina start
INFO: Server startup in 6579 ms
 
Ich meine die Datei stdout_____.log. Da kommt das rein, was von System.out kommt. Da müssten deine Ausgaben drinstehen, oder eben eine Exception.
 
perfekt.. das wusste ich gar nicht 🙂


vielen dank !!

Fehler:

Datei nicht gefunden! C:\Programme\Apache Software Foundation\Tomcat 5.5\XML\Artikelstamm.xml (Das System kann den angegebenen Pfad nicht finden)

also werd ich mich darum mal kümmern.

Vielen Dank !
 
also mus ich den xml ordner ausserhalb des projektordners anlegen ?? oder kann man das ganze auch irgednie dynamisch anlegen ?
 
wenn die Datei im gleichen Package wie die Klasse liegt:

InputStream in = getClass().getResourceAsStream("datei.xml");

Wenn die Datei im WebContent-Ordner liegt, also direkt unter tomcat/webapps/deineWebapp, dann

String path = super.getServletContext().getRealPath("datei.xml");
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben