Wie kann ich den XML-Inhalt mit dem Klicken auf den Hyperlink (a-Tag) auf der nächsten Seite ansehen

ebruss17

Bekanntes Mitglied
Da kommt diese Fehlermeldung:

JSP Processing Error
HTTP Error Code: 500

Error Message:

JSPG0049E: /XML.jsp failed to compile :
JSPG0091E: An error occurred at line: 55 in the file: /XML.jsp
JSPG0093E: Generated servlet error from file: /XML.jsp
C:\Users\Ebru\Ebru\WebSphere\AppServer\profiles\AppSrv01\temp\4061L3AGG4RNode01\server1\EJBCounterSampleEE6EAR\MDBSampleWeb.war\_XML.java : 68 : request cannot be resolved
 

ebruss17

Bekanntes Mitglied
Ich hatte auch schon versucht gehabt, dass ich das Ganze in die Klasse mitrein nehme, da kann "request" trotzdem nicht aufgelöst werden. :/

Hier mein Code:
Java:
<%!public class Kunde extends HttpServlet {

		String url = "jdbc:db2://localhost:50000/mysample";
		String user = "db2admin";
		String password = "forever2007?";

		Connection connection = null;
		PreparedStatement selectKunden = null;
		ResultSet resultSet = null;

		String id = request.getParameter("xml");

		int zahl;
		zahl = Integer.parseInt(id);


		public Kunde() {

			try {

				connection = DriverManager.getConnection(url, user, password);

				selectKunden = connection
						.prepareStatement("SELECT lf_ID, Lieferantinformationen FROM Lieferant WHERE lf_ID ='" + zahl + "' ");

			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
 

Joose

Top Contributor
Ja weil der Compiler nicht weiß woher "request" kommt, was das ist und was er damit machen soll.
Wie gesagt keine Ahnung wie man das bei JSP löst, warum lässt du die Klasse nicht weg (wozu brauchst du sie überhaupt?) und schreibst stattdessen einfach ganz normal deinen Code um das SELECT auszuführen?
 

ebruss17

Bekanntes Mitglied
habe es jetzt ohne die Klasse gemacht und funktioniert problemlos ;) Nun die ganze XML-Geschichte wird aber jetzt als Text ausgegeben, d.h. noch ohne irgendwelche XML-Struktur nur nackt als reiner Text, wie könnte ich denn die XML-Sachen mit ihrere Struktur ausgeben, d.h. mit Tags und Inhalten dazu
 

Joose

Top Contributor
Leider verstehe ich das Problem nicht. XML ist nichts anderes als ein Text welcher eben Tags beinhaltet um eine Struktur darstellen zu können.
Ein Beispiel zu liefern ist auch immer praktisch.
 

ebruss17

Bekanntes Mitglied
Das XML sieht im Original so aus:

<Details>P8 Content Platform Engine 5.2.1.0
Content Engine Build dap521.234
Configuration Manager Build cm521.058
Bulk Import Build cebi521.009
Content Search Services Client 521 v 5.2.1.0 build 4694
Content Search Services integration build cas521.019
</Details>

Das wird aber auf der Webseite nicht so ausgegeben, sondern so:

P8 Content Platform Engine 5.2.1.0 Content Engine Build dap521.234 Configuration Manager Build cm521.058 Bulk Import Build cebi521.009 Content Search Services Client 521 v 5.2.1.0 build 4694 Content Search Services integration build cas521.019

Wie könnte man das so umsetzen, dass die <Details>-Tags mitausgegeben werden??

Ich habe den meta-Tag aus der XML.jsp weggemacht und nun wird das Ganze schön mit den Tags ausgegeben

Java:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 
Zuletzt bearbeitet:

dzim

Top Contributor
Alter Schwede... @Joose: Hut ab, dass du das durchhälst! Ich hätte schon nach den Posts der ersten Seite aufgegeben!
Nicht für ungut @ebruss17, aber du geizt hier nicht gerade mit Unwissen. In welchen Semester bist du eigentlich gerade?

Wenn ich so was hier sehe, frage ich mich schon, wie weit du dich mit der Sache (Java allgemein und Datenbankabfragen via JDBC im spezielln) schon beschäftigt hast (von XML reden wir lieber nicht einmal).
Java:
selectKunden = connection.prepareStatement("SELECT lf_ID, Lieferantinformationen FROM Lieferant WHERE lf_ID ='" + request.getParameter("xml") + "' ");
Man nutzt PreparedStatements unter anderen, um SQLInjection abzuwähren, nur in dieser Form bringt es dir gar nicht!

Java:
selectKunden = connection.prepareStatement("SELECT lf_ID, Lieferantinformationen FROM Lieferant WHERE lf_ID=?");
// Fragezeichen sind Platzhalter, die mit den #set*(index, value)-Methoden mit echten Daten befüllt werden
selectKunden.setInt(1, zahl); // Achtung bei JDBC geht es ausnahmsweise nicht mit 0 los, sondern mit 1
Alles andere ist Blödsinn.
Und hab ich schon mal erwähnt, das mir dieser denglische Code Kopfschmerzen bereitet?! :-(
 

Joose

Top Contributor
Wenn ich das so wie du mache, bekomme ich eine Fehlermeldung,

Wie schon ein paar Posts weiter vorne: "Ich habe eine Fehlermeldung, aber will sie euch nicht verraten".
Entweder verratest du uns auch immer welche Fehlermeldung oder eben nicht, dann musst du es aber auch alleine lösen.

ist das denn wie ich es gemacht habe falsch oder ein Schwachsinn?

Nein nicht falsch, nur unsicher! Außerdem ist die Variante mit "preparedStatements" auch lesbarer als komische Stringverkettungen.
 

ebruss17

Bekanntes Mitglied
okay ich habe das jetzt mal so gelöst:

Java:
selectKunden = connection.prepareStatement("SELECT Lieferantinformationen FROM Lieferant WHERE lf_ID =?");
selectKunden.setInt(1, zahl);

Dürfte ich mal fragen, wofür ich die letzte Zeile brauche??;)
 

Joose

Top Contributor
Um den Platzhalter im SQL Statement zu ersetzen -> Grundlagen von SQL, kann man auch einfach in der Dokumentation nachlesen :)
 

Ähnliche Java Themen


Oben