java-forum.org
JBoss Seam
Alter Preis: 39,95 €
Jetzt: 0,00 €

zzgl. Versandkosten

Zurück   java-forum.org > Enterprise Java > Web Tier

Web Tier JSP, Servlets, JSF, Struts, AJAX

Antwort    
Themen-Optionen Thema durchsuchen Ansicht
Alt 16.03.2010, 17:16   #1 (permalink)
Benutzer
Byte
 
Registriert seit: 11.11.2007
Beiträge: 96
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard bean methode von jslt aufrufen

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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<%@ 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 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 16.03.2010, 19:01   #2 (permalink)
Benutzer
Byte
Themenstarter
 
Registriert seit: 11.11.2007
Beiträge: 96
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
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..
krackmoe ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 16.03.2010, 19:11   #3 (permalink)
Java-Forum Team
Moderator
 
Registriert seit: 13.09.2007
Beiträge: 8.314
Abgegebene Danke: 6
Erhielt 134 Danke für 132 Beiträge
Du brauchst keine TLD, aber eine richtige Bean

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
public SimpleBean() {
 
   private int number;
 
   public int getNumber() { return number; }
 
   public void setNumber(final int number) {
        this.number = number;
   }
}
maki ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 16.03.2010, 19:15   #4 (permalink)
Benutzer
Byte
Themenstarter
 
Registriert seit: 11.11.2007
Beiträge: 96
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Naja..bei mir schaut das so aus:

beans:
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
public class Datenbank{
      public boolean getCheckSession(String sessionid){ 
            ....
            return true;
      }
}

index.jsp (nur die teile die damit zu tun haben):
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
<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
krackmoe ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 16.03.2010, 19:21   #5 (permalink)
Java-Forum Team
Moderator
 
Registriert seit: 13.09.2007
Beiträge: 8.314
Abgegebene Danke: 6
Erhielt 134 Danke für 132 Beiträge
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 db.CheckSession 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
maki ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 16.03.2010, 19:24   #6 (permalink)
Benutzer
Byte
Themenstarter
 
Registriert seit: 11.11.2007
Beiträge: 96
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<%@ 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 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 17.03.2010, 14:02   #7 (permalink)
Benutzer
Byte
Themenstarter
 
Registriert seit: 11.11.2007
Beiträge: 96
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
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... !?
krackmoe ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 17.03.2010, 15:02   #8 (permalink)
Stammbenutzer
Kilobyte
 
Benutzerbild von Antoras
 
Registriert seit: 04.01.2008
Beiträge: 467
Abgegebene Danke: 4
Erhielt 18 Danke für 18 Beiträge
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-Code:
...
<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 doGet(...) Methode muss vorhanden sein, da du damit auf die JSP weiterleitest wenn das Formular nicht abgeschickt wurde.
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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 Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
...
<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>
...
Antoras ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort    

Lesezeichen

Latex Maths & Physics Editor ...

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Methode in einer anderen Methode (gleiche Klassse) aufrufen deluxerl Java Basics - Anfänger-Themen 11 11.05.2009 18:26
Methode aus zweitem Package aufrufen iceT18 Java Basics - Anfänger-Themen 3 10.10.2007 00:03
Panel in Methode erneut aufrufen Java Basics - Anfänger-Themen 5 18.08.2006 16:15
Große Klasse - was findet ihr verbesserungswürdig? dyn Codeschnipsel u. Projekte 2 02.11.2005 10:46
in einer Methode eine andere Methode aufrufen BLUEJJAVA Java Basics - Anfänger-Themen 1 19.04.2005 08:53


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:01 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de