bean methode von jslt aufrufen

krackmoe

Bekanntes Mitglied
Wie kann ich denn von meiner Datenbank bean, die checkSession Methode aufrufen!? Check das irgendwie nicht Ganz? Er sagt immer prefix ist falsch? Es handelt sich um Zeile 14...

Java:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<jsp:useBean id="db" class="beans.Datenbank" scope="session" />
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>	
	<c:if test="${param.wrong == 'true'}"><c:out value="Username oder Password vergessen"/></c:if>
	<c:choose>
		<c:when test="${db.checkSession(session.getId)}">
			<form action="login.jsp" method="post">
				Name: <input type="text" name="username" maxlength="20"/><br>
				Passwort: <input type="password" name="password" maxlength="20"/><br>
				<input type="submit" value="Submit"/>
			</form>
		</c:when>
		<c:otherwise><c:redirect url="login.jsp"/></c:otherwise>
	</c:choose>
</body>
</html>
 

krackmoe

Bekanntes Mitglied
Grad gecheckt dass ich mir eine eigene tld anlegen muss..

Müssen die Methoden in der Bean alle setXXXXX heißen damit ich das in der tld so definieren kann?
Weil meine Methode ist eigentlich keine setter sondern eine getter..
 
M

maki

Gast
Du brauchst keine TLD, aber eine richtige Bean ;)

Java:
public SimpleBean() {

   private int number;

   public int getNumber() { return number; }

   public void setNumber(final int number) {
        this.number = number;
   }
}
 

krackmoe

Bekanntes Mitglied
Naja..bei mir schaut das so aus:

beans:
Java:
public class Datenbank{
      public boolean getCheckSession(String sessionid){ 
            ....
            return true;
      }
}

index.jsp (nur die teile die damit zu tun haben):
Java:
<jsp:useBean id="db" class="beans.Datenbank" scope="session" />
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:when test="${db.CheckSession(session.getId()}">

Das haut nicht hin!
org.apache.jasper.JasperException: javax.el.PropertyNotFoundException: Property 'CheckSession' not found on type beans.Datenbank
 
M

maki

Gast
Dass du keine Java Code (Scriptlets) in JSPs haben sollst wurde ja in deinem anderen Thread geklärt.
Hhier erfährst du dass so "komplexe" Dinge wie [c]db.CheckSession[/c] nix in JSPs zu suchen haben, dass macht man in Javaklassen wie zB. Servlets, dafür sind sie da, JSPs kümmern sich ausschliesslich um die Darstellung ;)
 

krackmoe

Bekanntes Mitglied
Mh.. ich bin ja gerade dabei das umzuarbeiten.. D.h. dieser Ansatz ist wieder falsch und ich soll ALLES in das Servlet auslagern!?
Bis auf den HTML Code? Und wie mach ich dann die Abfragen an den ganzen Stellen, wenn ich keine Logik drin haben soll?
Nach was für einem Thema soll ich denn da bitte googeln...?

Im mom schaut meine index.jsp nämlich so aus:
Java:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<jsp:useBean id="db" class="beans.Datenbank" scope="session" />
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="test2" uri="/WEB-INF/tags.tld"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>	
	<c:if test="${param.wrong == 'true'}"><c:out value="Username oder Password vergessen"/></c:if>
	<c:choose>
		<c:when test="${db.CheckSession(session.getId()}">
			<form action="login.jsp" method="post">
				Name: <input type="text" name="username" maxlength="20"/><br>
				Passwort: <input type="password" name="password" maxlength="20"/><br>
				<input type="submit" value="Submit"/>
			</form>
		</c:when>
		<c:otherwise><c:redirect url="login.jsp"/></c:otherwise>
	</c:choose>
</body>
</html>
 

krackmoe

Bekanntes Mitglied
Ich check nicht ganz, was ich in ein Servlet packen soll und was in eine JSP.
Weil dann könnte ich ja alles was ich bisher hab in ein Servlet packen, weil überall Skriptlets drin sind..
Oder ich wandel die Skriptlets soweit es geht in JSLT Tags um... !?
 

Antoras

Top Contributor
Generell tust du dir am einfachsten damit mit der JSTL nur Dinge zu überprüfen, die am Schluss mit dem View zu tun haben. Alles andere kommt in die Java-Klassen.
Das bedeutet, dass die Überprüfung, ob jemand eingeloggt ist, in den Java-Klassen erfolgt. Dort setzt du dann eine Variable, die angibt ob die Person eingeloggt ist, oder eben nicht. In der JSP überprüfst du dann nur noch den Zustand dieser Variable.

Die JSP mit dem Namen login.jsp:
HTML:
...
<c:choose>
<c:when test="${isLoggedIn}">
<form action="login" method="post">
  Name: <input type="text" name="username" maxlength="20"/><br>
  Passwort: <input type="password" name="password" maxlength="20"/><br>
  <input type="submit" value="Submit"/>
</form>
</c:when>
<c:otherwise>
You are logged in!
</c:otherwise>
</c:choose>
...

Das Servlet, das POST- und GET-Methoden überprüft. Die
Code:
doGet(...)
Methode muss vorhanden sein, da du damit auf die JSP weiterleitest wenn das Formular nicht abgeschickt wurde.
Java:
public class LoginServlet extends HttpServlet {

  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    handleResponse(req, resp);
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    ...
    if (db.CheckSession(session.getId()) {
      req.setAttribute("isLoggedIn", "true");
    } else {
      req.setAttribute("isLoggedIn", "false");
    }
    handleResponse(req, resp);
  }

  protected void handleResponse(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    RequestDispatcher r = req.getRequestDispatcher("/login.jsp");
    r.forward(req, resp);
  }
}

Der Inhalt der web.xml (Deployment Descriptor):
[XML]...
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>any.packages.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
...[/XML]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R get-methode der Managed-Bean wird immer 3 mal ausgeführt Web Tier 4
E Methode einer Bean aus anderer Bean aufrufen Web Tier 10
G Mit JSTL Rückgabe von Bean Methode ausgeben Web Tier 3
6 JSF Form Attribute nicht an Bean übergeben Web Tier 2
G HTML Fragment in Bean erzeugen? Web Tier 1
W JSF Probleme mit Zugriff zur Managed Bean Web Tier 11
F JSF Bean funktioniert nicht immer.. Web Tier 3
I CSS von Client -> an Bean senden Web Tier 0
H JSF jsf/sessionScoped Bean - Bilder (jpg) werden nicht richtig dargestellt Web Tier 1
S Java Bean und Java Servlet Web Tier 2
G jsf bean erstellen die mir die aktuelle uhrzeit ausgibt als xhtml Web Tier 5
M viele Objekte des Managed Bean Web Tier 3
S [JSF] Zugriff auf Bean (Eclispe,JBoss) Web Tier 12
P JSF Prob mit xhtml / Bean / JS Web Tier 6
J JSF Initialisierung einer ApplicationScoped Bean Web Tier 2
B Berechnen und Anzeigen von Formeln aus der Chemie und Physik mit JSP und Bean Web Tier 14
H Bean-Objekte aus XML erstellen Web Tier 2
L expression language Bean && Bean Web Tier 3
C JSF Methoden in Backing-Bean als JSF-Property Web Tier 3
P JSF Merkwürdiges Verhalten einer Bean Web Tier 11
S CDI: Bean aus einem anderen jar Web Tier 3
X Managed Bean Scope zwischen Request und Session gesucht Web Tier 6
D JSF EL #{not null bean.property} Parse exception Web Tier 2
T Seam-Komponenten oder Java Bean soll direkt nach Appserver-Start "leben" Web Tier 4
B JSF Servlectexception: Verwalteter Bean "..bean" kann nicht erstellt werden Web Tier 2
G JSF Bean Vererbung Web Tier 5
J Validieren abhängiger Felder mit JEE6/Bean validation Web Tier 33
F Leere Bean? Web Tier 7
S JSF2: Managed bean aus anderer Dependency Web Tier 7
W MVC mit Bean, JSP und Servlet Web Tier 6
S Style bei fehlerhafter Eingabe (Bean Validation) ändern Web Tier 2
H Managed Bean Aufruf auf Stack legen Web Tier 10
P JSP: Liste in Bean über Session aufbauen Web Tier 6
S Bean Validation (JSF 2.0) funktioniert nicht. Web Tier 4
V Vector aus Bean "holen" / JSP Web Tier 3
B JSF session bean mit worker thread updaten Web Tier 7
I Eine Bean von einer anderen Bean aufrufen Web Tier 2
J Managed bean und javascript kommunikation (JSF 2) Web Tier 2
G JSF javax.faces.bean Web Tier 2
K Anfängerfrage in JSF: <h:inputText> aus Managed Bean ansprechen Web Tier 6
S Managed bean nicht initialisiert Web Tier 2
A JSF+Glassfish: Probleme mit Managed Bean Web Tier 2
S [SelectItems value(herkunft bean)] in [UI:repeat] lädt daten nicht neu nach Web Tier 3
N MessageResources von Struts in Form-Bean Web Tier 4
N java bean in eclipse Web Tier 6
A JSF SelectOneMenu mit Werten aus Bean vorbelegen Web Tier 2
S JSF: Frage wegen managed-bean Web Tier 3
pusteblume Mehrere Objekte einer Bean Web Tier 10
M Problem mit JSP und Bean Web Tier 2
O 2 Fragen zu JSP und Bean Web Tier 4
E value übergabe an bean! aber wie? Web Tier 3
F Datei von bean aus laden Web Tier 3
N JSF kann Bean nicht finden! Web Tier 7
H JSF - Bean (scope session) - Verfallsdatum? Web Tier 3
D ResultSet aus Bean an JSP übergeben Web Tier 11
M JSF - Bean aus SessionScope direkt im JSF Code auslesen Web Tier 1
G Eine Instanz pro Managed Bean? Web Tier 2
S Button klick soll Java methode aufrufen Web Tier 2
M JSF JSF: Methode bei versteckt aufrufen & Parameter übergeben Web Tier 6
Joew0815 Spring Handle All Requests Methode Web Tier 1
M rendered ruft eine Methode auf, andere aber nicht Web Tier 15
V Mittels JavaScript Methode aufrufen Web Tier 23
M JSF Button - Methode wird nicht aufgerufen Web Tier 4
K JSF Unified-EL- Methode mit Parameterübergabe Web Tier 9
F NullPointerException auf validator methode Teil2? Web Tier 2
B JSF NullPointerException auf validator methode Web Tier 7
P Mit EL Parameter an Methode übergeben Web Tier 5
I Im PhaseListener Service Methode aufrufen Web Tier 21
J JSF Datatable bestimmte Methode Web Tier 4
I Automatische Weiterleitung JSF mit Aufruf einer Methode Web Tier 2
M JSF: Bei Seitenaufruf eine Methode starten Web Tier 15
H JSF - Methode kann nicht aufgerufen werden Web Tier 5
M Body onUnload Java Methode aufrufen Web Tier 13
D <html:select> bzw. <html:option> - Methode auslösen ? Web Tier 2
D [JSF] Lifecycle Methode wird mehrfach aufgerufen Web Tier 4
F Problem mit der Methode request.getRemotePort() Web Tier 2
D Methode bei Server Startup ausführen Web Tier 2
S JSF: Methode mit Parametern aufrufen Web Tier 7
J Fehler Tomcat/JSP findet Methode nich Web Tier 3
G in validate methode auf form objekte zugreifen Web Tier 3
A Action-Methode soll Ausgabe auf der Responsepage steuern Web Tier 4
F Beim Aufruf von einer JSF Seite eine Methode ausführen Web Tier 9

Ähnliche Java Themen

Neue Themen


Oben