Problem: JSP für Zugriff auf Oracle-Server/Datenbank - sinnvoll?

Status
Nicht offen für weitere Antworten.

mBuko

Mitglied
Huhu,

ich habe ein spezielles Problem, aber gleichzeitig auch eine allgemeine Frage. Ich fange erstmal mit dem Problem an.

Ich möchte über JSP auf einen Oracle-Server/Datenbank zu greifen. Normal über xyz.JAVA funktioniert das auch, allerdings über JSP nicht, obwohl der code ja eigentlich derselbe ist.

Wieso JSP? - Ich möchte im Web von überall die Infos aus der Datenbank abgreifen.

Ich benutze Eclipse, hab Driver v. Oracle eigentlich hinzugefügt, lasse JSP über Tomcat laufen und greife auf anderen Server mit der Datenbank zu.

Das der Code, der xyz.JAVA-Datei, der auch einwandfrei funktioniert:

Java:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class Oconnection {

	
	public static void main(String[] args) {	
		
		try {
			
			DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
			Connection conn = DriverManager.getConnection 
			("url", "user", "password");
				// url, user, password sonst angegeben ;)				
			Statement stmt = conn.createStatement();

			ResultSet rset = stmt.executeQuery ("select name,dest_id,first_time,next_time,bytes,standby_dest,status,completion_time from SBS_archived_log");
			
			while (rset.next())
				   {
				   System.out.println (rset.getString(1));
				   System.out.println (rset.getInt(2));
				   System.out.println (rset.getDate(3));
				   System.out.println (rset.getDate(4));
				   System.out.println (rset.getInt(5));
				   System.out.println (rset.getString(6));
				   System.out.println (rset.getString(7));
				   System.out.println (rset.getDate(8));
				   }
			
			rset.close();
			stmt.close();

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

	

	}

}

Das ist erstmal der Code von der xyz.JAVA datei....um es quasi in JSP zu übertragen habe ich einfach in Eclipse ein neues "dynamic webpage"-Projekt angelegt und in die xyz.JSP-Datei den folgenden code gepackt:

Java:
<%@ page import="java.sql.*"; %>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>titel</title>
</head>
<body bgcolor=white>

<% 

try {
DriverManager.registerDriver (new oracle.jdbc.OracleDriver());

Connection conn = DriverManager.getConnection("url", "user", "password");

Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery ("select name,dest_id,first_time,next_time,bytes,standby_dest,status,completion_time from SBS_archived_log");

while (rset.next())
	   {
	   System.out.println (rset.getString(1));
	   System.out.println (rset.getInt(2));
	   System.out.println (rset.getDate(3));
	   System.out.println (rset.getDate(4));
	   System.out.println (rset.getInt(5));
	   System.out.println (rset.getString(6));
	   System.out.println (rset.getString(7));
	   System.out.println (rset.getDate(8));
	   }

stmt.close();
rset.close();
} catch (SQLException e) {
	e.printStackTrace();
} 
	
%>
</body>
</html>

Hier die Fehlermeldung:

org.apache.jasper.JasperException: org.apache.jasper.JasperException: Unable to load class for JSP
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:156)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause

org.apache.jasper.JasperException: Unable to load class for JSP
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:620)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:144)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause

java.lang.ClassNotFoundException: org.apache.jsp.bla_jsp
java.net.URLClassLoader$1.run(Unknown Source)
java.security.AccessController.doPrivileged(Native Method)
java.net.URLClassLoader.findClass(Unknown Source)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:134)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
org.apache.jasper.JspCompilationContext.load(JspCompilationContext.java:618)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:144)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


Ich komme einfach nach googlen usw. nicht weiter, vor allem steh ich vor der allgemeinen Frage/Problem, ob ich das, was ich vorhabe, überhaupt so lösen sollte oder über Servlets. Da hab ich allerdings keine Ahnung von, ebenfalls versteh ich die Verbindung zu Beans nicht.

Ich hab schon einige Tutorials durchgeguckt, finde bisher aber alle verwirrend, da manche abraten überhaupt mit Servlets zu arbeiten, andere hingegen das JSP vorziehen...

Es wäre wirklich gut, wenn mir jmd. helfen könnte :)

Danke!
 

faetzminator

Gesperrter Benutzer
Eigentlich solltest du vor der JSP eine Action aufrufen, und in dieser alle Daten in das Bean schreiben. Ich finde deine Idee verwunderlich.
 

mBuko

Mitglied
Wieso verwunderlich?

Wie meinste das mit Action aufrufen und Bean... ich glaube, dass da meine Wissenslücke ist, ist das Problem oder?

Deswegen frage ich ja auch im Anfänger-Thread :)
 

Noctarius

Top Contributor
Normal wird das JSP-Class nicht gefunden, wenn in der JSP ein Fehler steckt und daher nicht in Java umgewandelt und anschließend kompiliert werden kann.

Bearbeitest du dein JSP bzw. Projekt mit Eclipse? Meinst der JSP Validator, dass dein JSP in Ordnung ist?

Einen JDBC Treiber registriert man ansich nicht in der Art und Weise wie du es gemacht hast oder ist das tatsächlich der von Oracle vorgegebene Weg (noch nie mit einer Oracle DB gearbeitet)?
 

mBuko

Mitglied
Ja das ist der vorgegebene Weg, wie gesagt bei Ausführen der normalen .JAVA Datei klappt die Verbindung wunderbar und ich krieg auch meine Daten, doch bei .JSP leider nicht. (dieser Weg steht auch in der Doku von Oracle, allerdings nichts zu JSP)

Ja, ich bearbeite es in Eclipse und die Fehlermeldung steht in meinem 1. Post.

Hm, sollte ich lieber mich lieber mit Beans und Servlets beschäftigen, wo ich dann letztendlich auf die JSP zugreife? Nur davon habe ich überhaupt keine Ahnung und finde einfach auch kein Tutorial...:(
 

Noctarius

Top Contributor
Nein das mit dem Fehler hast du falsch verstanden.
Eclipse mit WTP (Web Toolkit Platform) besitzt einen eigenen JSP Compiler bzw -Validator. Dieser zeigt dir schon im Eclipse Editor einen möglichen Fehler im JSP an. Ich vermute mal, dass dein JSP nicht kompiliert werden kann und daher die Class zur Laufzeit nicht gefunden wird (sie konnte ja nicht kompiliert werden).

Alternativ kannst du den Tomcat(?) auch mal auf einen höheren Debuglevel setzen und schauen ob die vielleicht mehr Informationen aus dem JSP Compiler bekommst.

Letzte Möglichkeit wären falsche Filesystem-Berechtigungen im Work-Dir, sodass die Class nach Kompilieren nicht gespeichert werden kann.
 

mBuko

Mitglied
Danke soweit, ich werde mich morgen nochmal ransetzen und dann berichten.

Kann mir denn einer etwas zu Beans und Servlets empfehlen?
 
S

Spacerat

Gast
Wenn das Web-Projekt in Eclipse ohne Fehlerfrei angezeigt wird, müsste es eigentlich laufen, es sei denn, Tomcat wurde nicht korrekt installiert. Korrekt bedeutet soweit ich weiss, das JSP in Tomcat erst dann laufen, wenn ein Servlet dahinter steckt. In Tomcat gibt es deswegen einen sog. Invoker (im Prinzip der JSP-Validator & -Compiler), der per Konfiguration (web.xml) abgeschaltet werden kann. Ich meine auch irgendwo mal gelesen zu haben, das dieser Invoker sogar standardmässig (context.xml?) abgeschaltet ist. Eine fehlende oder falsch konfigurierte web.xml kann dann auch zu derartigen fehlern führen.
 

Noctarius

Top Contributor
Nein auch ohne ein einziges Servlet kann ich eine JSP im Tomcat aufrufen. Prinzipiell ist jedes JSP ein Servlet (zu mindestens wenn es "Umgewandelt" werden konnte - in Java selbstverständlich).
 
S

Spacerat

Gast
Genau um dieses Umwandeln geht es doch.
Tomcat API hat gesagt.:
The default servlet-invoking servlet for most web applications, used to serve requests to servlets that have not been registered in the web application deployment descriptor.
Solange eine Anwendung also noch nicht oder nicht korrekt auf den Server verteilt wurde, wurden dessen JSPs auch noch nicht validiert geschweige denn kompiliert (Freund Jasper macht das glaub' ich). Und solange dieses Kompilieren weder durch Jasper (deployed) noch durch den Invoker (undeployed) geschehen ist, kommt es halt zu so einer "ClassNotFoundException".
...aber gut... Die Aussage, das man für die Ausführung von JSPs unbedingt ein Servlet braucht ziehe ich mal zurück.
@Edit: Hier noch eine Empfehlung für den TS JSP-Tutorial - Inhalt
 
Zuletzt bearbeitet von einem Moderator:

mBuko

Mitglied
Hey,

ich bin die Sache jetzt noch einwenig anders angegangen, da es rein über die JSP-Datei einfach nicht funktionieren wollte.

Ich habe nun ein Bean erstellt in dem JSP-Projekt. Dieses Bean hat den folgenden Code:

Java:
package tools;

import java.sql.*;


public class JBean {
	
	  ResultSet rseta = null;
	  Connection conn = null;
	
	  public void doitall() throws Exception 
	  {
		  Class.forName ("oracle.jdbc.driver.OracleDriver");
			DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
			Connection conn = DriverManager.getConnection 
			("url", "username", "password");
			//url etc. ausgeblendet
			 Statement stmt = conn.createStatement();

				ResultSet rseta = stmt.executeQuery ("select name usw. from ...");
		//kompletter select befehl ausgeblendet		
				 while (rseta.next())
				   {
				   System.out.println (rseta.getString(1));
				   System.out.println (rseta.getInt(2));
				   System.out.println (rseta.getDate(3));
				   System.out.println (rseta.getDate(4));
				   System.out.println (rseta.getInt(5));
				   System.out.println (rseta.getString(6));
				   System.out.println (rseta.getString(7));
				   System.out.println (rseta.getDate(8));
				   }
					rseta.close();
	  }
	  
}

Im in Eclipse erstellen JSP-Projekt habe ich dann noch die entsprechende JSP-Datei mit dem folgenden Code:

Java:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


<%@page import="tools.JBean"%>
<html>
<head><title>test</title></head>

<body bgcolor="white">

<jsp:useBean id="jb" class="tools.JBean" scope="session"/>

<b>Artikel</b>

<%
  try {
    jb.doitall();
          } 

  catch (Exception e) {
    out.println(e);
  }
%>
</body>
</html>

Die Connection funktioniert und der Zugriff über den Bean etc. auch. Die Daten werden über die Console ausgegeben.

Ich möchte allerdings die Daten in der JSP-Datei also der html-Datei und nicht in der Console sehen. Dazu müsste ich doch allerdings irgendwie das ResultSet so an die JSP-Datei übergeben oder zugänglich machen, dass ich auf die einzelnen Sachen zu greifen kann.

Die Frage ist, wie ginge das? :D

Vielen Dank schonmal für eure bisherige Hilfe!
 

Atze

Top Contributor
indem du dir in deiner bean keine konsolenausgabe schreibst, sondern alles so formatierst, wie du es anzeigen willst. :) von mir aus in form von html, das du dann über die bean zugänglich machst
 
S

Spacerat

Gast
Kann man der "doitall()"-Methode nicht den Writer des response-Objektes übergeben?[JAVA=14]<%
try {
jb.doitall(response.getWriter());
}

catch (Exception e) {
out.println(e);
}
%>[/code]Die "doitall()"-Methode braucht dann natürlich noch einen entsprechenden Parameter:[JAVA=11] public void doitall(Writer out) throws Exception
{
/...[/code]In der Methode wird dann aus "System.out" schlicht "out" und alle ausgaben landen an der Stelle, wo "doitall()" im jsp aufgerufen wird.
 

mBuko

Mitglied
Zu Atze

Das hieße anstatt

Java:
System.out.println("");

müsste es ja dann

Java:
out.println("");

sein, damit es nicht in der Console sondern, JSP ausgegeben wird.... aber das geht nicht. Wie übergebe ich denn das ResultSet, dass ich in der JSP auf die einzelnen Daten zugreifen kann, damit ich dann z.b. die Daten in einer html-Tabelle ausgeben kann.

Also das Problem was ich habe, ist, dass ich im Bean ja wunderbar im ResultSet alle Daten habe, aber den Code so schreiben muss, dass ich das Resultset in der JSP-Datei aufgreifen und verarbeiten kann.

Spacerat, kannst du deinen Ansatz einwenig ausführen, ich weiß gerade nicht, wie ich das mit dem Writer umsetzen kann. - Trotzdem würd ich gerne noch wissen, wie ich die einzelnen Daten des ResultSet im JSP abgreifen kann
 
Zuletzt bearbeitet:
S

Spacerat

Gast
Hmm... sollen die Inhalte des ResultSets vor der Ausgabe noch aufbereitet werden? Dann kann man das ResultSet doch einfach an das JSP zurück geben und dort weiter verarbeiten.
@Edit: "response" ist ein sog. implizites Objekt und in jeder JSP verfügbar. Es ist eine Implementation der Klasse HttpServletResponse und verfügt deshalb auch über die Methode "getWriter()". Deswegen müsste es eigentlich so wie gezeigt funktionieren. D.h. du musst nur die entsprechenden Zeilen in deinen Dateien dahingehend ändern.
@Edit2: Wo du die Daten des ResultSets nun aufbereitest ist nicht wirklich wichtig. Wenn du allerdings nacher die Ausgabe leichter modifizieren willst, ist es besser sich das ResultSet zurückgeben zu lassen.
 
Zuletzt bearbeitet von einem Moderator:

mBuko

Mitglied
Die Daten sollen in dem Sinne aufbereitet werden, dass sie in einer Tabelle wiedergegeben werden. Später soll sich z.B. abhängig von bestimmten Daten einer Spalte der Datenbank-Tabelle die Hintergrundfarbe der html-tabelle verändern. D.h. ich muss noch mit den Daten vereinzelnt arbeiten können bzw. die vereinzelnt abgreifen.

Nur ich weiß nicht wie ich die einzeln für JSP zugänglich mache bzw. so wie du meinst das ResultSet einfach zurückgeben. Wie geht das und wir kann ich das dann nutzen?

Ich teste das mit dem "getWriter()" nochmal, eben hatte es leider nicht funktioniert.
 
S

Spacerat

Gast
...Ich sehe das gerade... Ich verwende wohl viel zu oft Servlets... Vergiss "getWriter()" - nimm einfach "out" :oops:
Oder:[JAVA=14]<%
try {
ResultSet rs = jb.doitall();
}

catch (Exception e) {
out.println(e);
}
%>[/code]und[JAVA=11] public ResultSet doitall() throws Exception
{
Class.forName ("oracle.jdbc.driver.OracleDriver");
DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
Connection conn = DriverManager.getConnection
("url", "username", "password");
//url etc. ausgeblendet
Statement stmt = conn.createStatement();

ResultSet rseta = stmt.executeQuery ("select name usw. from ...");
return rseta;
}[/code]...das einzige was jetzt noch schiefgehen kann... was hat es mit "rseta.close()" auf sich. Kann man auf die Daten auch noch zugreifen, wenn "rseta" bereits geschlossen wurde? Dann gehört "rseta.close()" nämlich noch in die "doitall()"-Methode.[JAVA=21] rseta.close();
return rseta;
}[/code]Ansonsten muss "rseta" explizit geschlossen werden.
 

mBuko

Mitglied
Danke schonmal!

...so ich habs versucht:

wenn ich
Java:
ResultSet rs = jb.doitall();
einbinde,
kommt folgender Fehler "ResultSet can not be resolved to a type"

und wenn ich
Java:
return rseta;
einbinde,
"Void method cannot return a value"

Meinst du das geht so einfach? Also ResultSet rs dem void zuzuschreiben....allerdings führt ja jb.doitall() ja auch das mit system.out. etc. aus, wieso sollte ich da dann einfach so draufzugreifen können...hm
 
Zuletzt bearbeitet:
S

Spacerat

Gast
Das erste Problem sollte mit folgender Zeile irgendwo recht weit oben im JSP behoben werden:
Java:
<%@ page import="java.sql.*" %>
Für das 2. Problem solltest du dir noch einmal die geänderte Zeile 11 anschauen:[JAVA=11] public ResultSet doitall() throws Exception[/code]
 

mBuko

Mitglied
Jop, damit ist das erste u. zweite Problem behoben, allerdings entsteht dann ein neues:

bei
Java:
ResultSet rs = jb.doitall();

// also genau bei jb.doitall();
kommt nun der Fehler
Type mismatch: cannot convert from void to ResultSet
!
 
Zuletzt bearbeitet:
S

Spacerat

Gast
Tja... nun passt die kompilierte JBean wohl nicht mehr zum Quelltext. Die JBean-Klasse muss anscheinend neu kompiliert und veröffentlicht werden.
 

mBuko

Mitglied
So, vielen Dank soweit!!! Es klappt bisher wunderbar, sodass ich eine HTML-Tabelle erstellen konnte und die Daten angezeigt werden.

Ich habe allerdings mehrere ResultSets, kann aber nur ein return zurückgeben anscheinend....was kann ich jetzt tun?

  • kann ich verschiedene ResultSets zurückgeben?
  • Kann ich alle SQL-Befehle mit verschiedenen Tabellenzugriffen in ein ResultSet packen?
  • Muss ich verschiedene Statements nutzen um mehrere returns nutzen zu können?
  • Muss ich etwa für jeden Datenabgriff eine neue Methode schreiben?

Beim letzten Punkt müsste dann allerdings auch jedes mal die Connection neu aufgebaut werden, was ja nicht unbedingt der Sinn der Sache ist oder?
 
Zuletzt bearbeitet:
S

Spacerat

Gast
...Öhm... meistens hilft da schon... ein wenig überlegen :D sogimol so ganz salopp...
Wenn du nur das naheliegenste siehst, schlägst du die Hände übern Kopf zusammen...[JAVA=11] public ResultSet doitall(String sqlrequest) throws Exception
{
Class.forName ("oracle.jdbc.driver.OracleDriver");
DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
Connection conn = DriverManager.getConnection
("url", "username", "password");
//url etc. ausgeblendet
Statement stmt = conn.createStatement();

ResultSet rseta = stmt.executeQuery (sqlrequest);
rseta.close(); // wenn das Result anschliessend noch gelesen werden kann.
return rseta;
}[/code]...recht simpel... findest du nicht?
 

mBuko

Mitglied
Es klingt simpel :D aber ich hab gerade wirklich eine Blockade, hilf mir mal bitte auf die Sprünge!

Ich hatte jetzt versucht über ein JOIN schonmal 2 Tabellen zu verbinden:

SQL:
select b.SESSION_KEY as bkey, b.INPUT_TYPE as btype, b.STATUS as bstat, b.start_time as bstart, b.end_time as bend, b.hrs as bhrs, c.SESSION_KEY as ckey, c.OPTIMIZED as cop, COMPRESSION_RATIO, c.ins as cins, c.outs as couts, c.TIME_TAKEN_DISPLAY as ctime from DB_B as b, DB_C as c;

Das klappt allerdings irgendwie nicht -> "java.sql.SQLException: ORA-00933: SQL-Befehl wurde nicht korrekt beendet"

EDIT: Achso meinst du das^^ Ich übergebe also die jeweiligen SQL-Befehele dann erst als String in der JSP-Datei... Da dann mehrere ResultSets bestimmen also z.B.

Java:
ResultSet rs = jb.getit("select x");
ResultSet rs_b = jb.getit("select y");

richtig verstanden? oder muss ich net mehrere ResultSets erstellen?
 
Zuletzt bearbeitet:
S

Spacerat

Gast
...aus welcher Tabelle soll er denn "COMPRESSION_RATIO" nehmen? ...soweit ich das sehe, ist das das einzige Feld, welches weder mit b noch mit c verknüpft ist.
@Edit: ...ja genau... und doch... mehrere... (aus einer Methode natürlich) ist doch sinnvoll. Dann stellt sich irgendwann nicht mehr die Frage, aus welcher Tabelle welches Feld geholt werden muss bzw. soll.
 
Zuletzt bearbeitet von einem Moderator:

mBuko

Mitglied
Jo genau, okay das funktioniert jetzt soweit alles. Vielen Dank!!

Mein nächstes Ziel ist es, vorher per Eingabe Benutzer und Passwort für den Server-Zugriff abzufragen und dann erst bei richtiger Eingabe die Tabellen usw. anzeigen.

Einfach normale Eingabe über Formular einbinden und dann prüfen ob die richtig ist.

Kann ich dann einfach den Rest mit if(eingabe == correct) {} verschachteln? also dass erst nach richtiger Eingabe die Connection zustande kommt....was eine Frage, muss ja eigentlich^^

Edit: Also wenn ich den Formular-Code mit in die JSP packe, dann bleibt ja das Eingabefeld auch sichtbar, nachdem ich quasi eingeloggt/verbunden bin. ... hmm dann verschiedene JSP-Dateien verwerden oder das gar nicht über Formular-Code umsetzen?

2. Edit: Ich hab es jetzt erstmal ganz simpel als Formulareingabe... also noch nicht die Lösung gefunden, dass das Eingabefeld etc. später dann nicht mehr zu sehen bzw. weg ist... allerdings kommt schon bevor ich irgendetwas eingebe, der "else"-Auswurf unter den Feldern. Und wenn ich dann noch die entsprechenden Sachen in die Felder eingebe, passiert nix....

Java:
<% String eName = ""; String ePasswort = ""; %>

       <form action = "http://localhost:14453/Jbean/JBean.jsp" method="POST">
       <input type="text" name="name" value="<%= eName %>"><br>
       <input type="text" name="passwort" value"<%= ePasswort %>">
       <input type="submit" value="Bestätigen">
       </form>

<%

if (request.getParameter("name") == "..." || request.getParameter("passwort") == "...")
{ 
     
  try {
       

       
       ResultSet rs = jb.getit(select ...)
...
       
 } catch (Exception e) {
    out.println(e);
  }
      }

      else { 
    	  out.println("FALSCH FALSCH FALSCH");
      }
%>
 
Zuletzt bearbeitet:

mBuko

Mitglied
Ne, das soll schon irgendwie im Code eingearbeitet!

Die Tabellen, die mir dann angezeigt werden in der JSP-Datei, sind durch große Datensätze ziemlich lang. Wie kann ich am besten die Daten anzeigen, sodass ich das begrenzen kann mit Scrollfunktion? :)
 
S

Spacerat

Gast
Bei Login per Formular muss ein erfolgreiches Login in einer Session bzw. in einem Cookie gespeichert werden. Bevor also das Loginformular angezeigt wird, muss abgefragt werden, ob bereits eine Session oder ein Cookie mit erfolgreichem Login besteht. Ist dies nicht der Fall, muss abgefragt werden, ob Logindaten übermittelt wurden. Wurden diese übermittelt, wird Name gegen Passwort geprüft und ggf. eine Session oder ein Cookie erstellt, wenn nicht wird das Loginformular angezeigt.
 

mBuko

Mitglied
Klingt gut, nur davon habe ich bisher noch keine Ahnung^^ Ich versuch mich mal kund zu tun. Ist es dann auch möglich den Screen zu clearen, also dass dieser Abfragebereich verschwindet?
 
S

Spacerat

Gast
... was möchtest du denn wann "clearen"? Immerhin bewegen wir uns bei JSP im HTTP-Protokoll. Das bedeutet, das der Server pro Anfrage genau eine Ausgabe liefert. Die Kunst bei dynamischen HTML liegt nun darin, serverseitig die Ausgabe so zu gestalten, dass sie zur Anfrage passt. Eine einmal versendete Ausgabe kann logischerweise nicht mehr verändert geschweige denn ganz oder teilweise gelöscht (clear) werden. Die JSP-Datei (bzw. die kompilierte Form der JSP) wird bei jeder Anfrage erneut durchlaufen.

Ein Login läuft wie folgt ab:
1. Client fordert die Startseite an.
2. Server gibt Startseite mit Loginformular aus.
3. Client füllt Loginformular aus und sendet die Daten.
4. Server prüft Name und Passwort, erstellt ggf. eine Session und gibt Startseite ohne Loginfenster aus.
 
Zuletzt bearbeitet von einem Moderator:

mBuko

Mitglied
Ja, so hatte ich es geplant. Nur muss ich dazu den Loginbereich über eine andere JSP-Datei laufen lassen oder kann man das irgendwie an die session binden?

Ich weiß momentan nicht, wie man es umsetzen könnte...hm
 
S

Spacerat

Gast
Vllt. liest du dir erstmal ein paar Kapitel zu sessions durch: JSP-Tutorial - Session-Handling, Cookies und URL-Rewriting
Dann hab' ich hier mal ein Beispiel wie es prinzipiell geht. Wohlgemerkt prinzipiell, denn es bietet keinerlei Sicherheit im Umgang mit Sessions oder Cookies. Das ist aber auch ein Thema für sich und passt kaum in einen übersichtlichen Foren-Thread.
Java:
<%
  String action = request.getParameter("action");
  if("Logout".equals(action)) {
    session.removeAttribute("loggeduser");
    session.invalidate();
  }
  if(session.getAttribute("loggeduser") == null) {
    if("Login".equals(action)) {
      String name = request.getParameter("name");
      String pass = request.getParameter("password");
      if(checkLogin(name, pass)) {
        session.setAttribute("loggeduser", name); %>
        <form action = "http://localhost:14453/Jbean/JBean.jsp" method="POST">
        <input type="submit" name="action" value="Logout" />
        </form>
      <% }
    }
  } else { %>
    <form action = "http://localhost:14453/Jbean/JBean.jsp" method="POST">
    <input type="text" name="name" value="" /><br />
    <input type="text" name="password" value"" /><br />
    <input type="submit" name="action" value="Login" />
    </form>
  <% }
%>
Die "checkLogin()"-Methode musst du selbst implementieren. Darin musst du, wie auch immer das gegebene Passwort zum gegebenen Namen prüfen und den (Miss-)Erfolg als "boolean" zurückgeben.
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Problem mit ActionListener für Buttons Java Basics - Anfänger-Themen 5
S Problem bei dynamischen Binden für Refaktorisierung Java Basics - Anfänger-Themen 2
D Problem mit Java für dummies Java Basics - Anfänger-Themen 2
I Problem mit ListCellRenderer für JPanel Java Basics - Anfänger-Themen 14
_SeiA_ Suche Schleife/Algorythmus für ein Problem Java Basics - Anfänger-Themen 3
A brauche eine Lösung für Problem bei Moorhuhn-Version Java Basics - Anfänger-Themen 5
K Problem bei Aufgabe für Schule Java Basics - Anfänger-Themen 8
S Regex für Dezimalzahl. Problem mit Nachkommastellen Java Basics - Anfänger-Themen 5
N Problem mit Tastatureingaben für verschiedene Datentypen Java Basics - Anfänger-Themen 3
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8
J extends Problem Java Basics - Anfänger-Themen 2
C Polymorphie-Problem Java Basics - Anfänger-Themen 3
Kalibru Problem bei Ausgabe von Objekt Java Basics - Anfänger-Themen 1
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
J Allgemeines Problem mit Klassen Java Basics - Anfänger-Themen 5
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
amgadalghabra algorithmisches Problem Java Basics - Anfänger-Themen 19
J Traveling Salesman Problem [Arrays] Java Basics - Anfänger-Themen 9
R ArrayList Problem Java Basics - Anfänger-Themen 6
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
C RegEx Problem Java Basics - Anfänger-Themen 4
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
M Input/Output Fallunterscheidung Problem Java Basics - Anfänger-Themen 17
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
M Problem bei Ausgabe Java Basics - Anfänger-Themen 7
Splayfer Java Array Problem... Java Basics - Anfänger-Themen 2
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
G Subset sum problem mit Backtracking Java Basics - Anfänger-Themen 18
N Problem mit Scanner Java Basics - Anfänger-Themen 2
J Klassen Problem Java Basics - Anfänger-Themen 8
A Out.format problem. Java Basics - Anfänger-Themen 3
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
A Array problem Java Basics - Anfänger-Themen 16
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
W Remote Method Invocation RMI - Problem Java Basics - Anfänger-Themen 0
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
M Regex Erstellung Problem Java Basics - Anfänger-Themen 2
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
C Regex-Problem Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
M Problem in der Modellierung Java Basics - Anfänger-Themen 20
W Wo ist das URL-Problem ? Java Basics - Anfänger-Themen 1
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
D FileWriter / FileReader Problem Java Basics - Anfänger-Themen 10
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben