PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JSP ruft Servlet auf ... aus Servlet funktioniert aber dispatcher.forward nicht



riseX
06-03-2007, 08:08
Hallo,

ich möchte ganz simpel in einem Login-Bereich ein Servlet aufrufen, welches nachschaut, ob der User in der Datenbank vorhanden ist. Die Datenbankabfrage klappt ... er findet auch aus der JSP-Datei das Servlet ... aber das Weiterleiten zu einer anderen JSP-Seite mittels

getServletContext().getRequestDispatcher(target).f orward(request,
response);
geht nicht.

Zuerst einmal die JSP:



<form action="login" method="post" name="login">
<input type="text" size="15" name="loginname" />
<input type="password" size="15" name="loginpasswort" />
<input type="submit" value="Loggen" />
</form>


Hier die dazugehörige web.xml



<!-- Servletname einer Servletklasse zuordnen -->
<servlet>
<display-name>Login</display-name>
<servlet-name>login</servlet-name>
<servlet-class>login.Login</servlet-class>
</servlet>

<!-- URL einem Servletnamen zuordnen -->
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>


Und hier das Servlet Login.java



public class Login extends HttpServlet {


@Override
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

this.doPost(request, response);

}


@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String target = "";

String user = request.getParameter("loginname");
String pass = request.getParameter("loginpasswort");

CLogin login = CLogin.getInstance();
login.login(user, pass);

if (login.isLoggedIn()) {

target = "menu.jsp";

} else {
target = "login.jsp";
}
getServletContext().getRequestDispatcher(target).f orward(request,
response);

}

}


Für jede Hilfe wäre ich dankbar.

Gruß vom Marv

Waxolunist
06-03-2007, 08:59
Die Methode doPost() wird aber richtig ausgeführt?

Die web.xml sieht richtig aus, auch wenn du dich um bessere Namenskonventionen bemühen solltest, z.B. statt Login -> LoginController.

Das package, statt login, at.risex.projectname.Controller oder so.

Ansonsten könntest du einmal versuchen, statt


getServletContext().getRequestDispatcher(target).f orward(request,
response);


getServletConfig().getServletContext().getRequestD ispatcher(target).forward(request,
response);

Mehr fällt mir im Moment leider auch nicht ein.

mfg, christian

riseX
06-03-2007, 09:12
Danke .. habe Paketname und Servletname umgeändert ... und auch die web.xml angepasst ... danke für den Hinweis ... ich probiere das nun mal mit dem holen der Config.

riseX
06-03-2007, 09:19
öhm .. ich arbeite in eclipse ... nun kompiliert er mir das servlet nicht in den neuen Pfad ... wie kann ich das denn von "Hand" machen? ...

Danke schonmal

Waxolunist
06-03-2007, 10:34
Wie hast du denn die Namen geändert? Mit Refactor?

riseX
08-03-2007, 13:02
eigentlich ja ... aber trotzdem hats nicht geklappt ...

aaaaber ... es geht jetzt ... ich hab den compiler in den Project-Preferences einmal auf 5 geändert und wieder zurück ... dann erstellt er ja alles nochmal.

Waxolunist
08-03-2007, 13:11
Eclipse sollte auch alles neu erstellen wenn du Project > Clean Project klickst.

Nur ein kleiner Tipp für die Zukunft. :)

mfg, christian

riseX
08-03-2007, 13:15
oh ok ... das merke ich mir für die Zukunft ... sag mal ... hast Du auch Ahnung von meinem neuen Problem?

http://www.mrunix.de/forums/showthread.php?t=49723 *g*

Danke