Glassfish Servlets

hyperion

Bekanntes Mitglied
Hallo,

ich habe aktuell Schwierigkeiten mit dem GlassFish v3 Server. Ich bin Neuling und wollte erstmal eine JSP als Startseite haben, die Dann über einen Formularbutton ein Servlet aufrufen soll, welches Hallo Welt zurückgibt. Die beiden Dateien heißen login.jsp und ValidateLogin.java(ValidateLogin.class).

login.jsp
Java:
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
		"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Login</title>
</head>
<body>
	<form action="ValidateLogin" method="post">
		Name: <input type="text" name="name" /><br />
		Passwort: <input type="password" name ="password" /><br />
		<input type="submit" name="submit" value="OK" /> 
	</form>
</body>
</html>
[code=Java]

ValidateLogin.java
[code=Java]


import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ValidateLogin
 */
public class ValidateLogin extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * Default constructor. 
     */
    public ValidateLogin() {
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		res.setContentType("text/html");	//  Set the content type of the response
		  PrintWriter out=res.getWriter();	//  PrintWriter to write text to the response
		  out.println("Hello World");		//  Write Hello World
		  out.close();

	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}

Da ich es nco hnicht vernüftig hinbekommen habe Eclipse mit GlassFish zu verbinden, muss ich die Dateien manuell auf den Server kopieren. Die Dateien sind nun im folgenden Verzeichnis:

login.jsp ist im Verzeichnis test.
ValidateLogin.class ist im Verzeichnis WEB-INF/classes
Ich habe noch ein Bild der Verzeichnisstruktur angehängt.

web.xml
Java:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>test</display-name>
  <welcome-file-list>
    <welcome-file>login.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description>Validates Login</description>
    <display-name>ValidateLogin</display-name>
    <servlet-name>ValidateLogin</servlet-name>
    <servlet-class>ValidateLogin</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ValidateLogin</servlet-name>
    <url-pattern>/ValidateLogin</url-pattern>
  </servlet-mapping>
</web-app>

Aktuell bekomme ich Status 404 zurück. Gestern hat es schon einmal funktioniert login.jsp aufzurufen. Nach einem Klick auf den Formularbutton habe ich dann Status 404 oder Status 500 zurückbekommen. Ich verstehe nicht warum es heute nicht mehr funktioniert.

Benötigt Ihr noch mehr Angaben um den Fehler mir sagen zu können?

Gruß hyperion
 

Anhänge

  • verzeichnis.jpg
    verzeichnis.jpg
    25,8 KB · Aufrufe: 28
Kenn mich leider nicht 100% mit der Ordnerstruktur von Glassfish aus, aber ich vermute mal, dass da was falsch ist.

Frage:
Unter welcher URL rufst du denn die login.jsp auf?

Und dann hab ich noch einen kleinen Fehler gefunden. Das Formular ruft die POST-Methode auf, du reagierst in deinem Servlet jedoch nur auf GET-Requests. D.h. selbst wenn deine Mappings dann mal stimmen wird nichts passieren.
 
Hi,

du kannst dir doch von Eclipse eine WAR-Datei generieren lassen (unter "Export") und dann
ganz normal über die Web-Oberfläche von Glassfish deployen.
 
Wenn du auf den Button im Formular klickst, welche URL hast du denn nach dem laden der neuen Seite (auf der der Fehler passiert)? Oder bekommst du unter der oben geposteten URL schon dein Formular nicht?

Zudem könntest du auch mal ins Logfile gucken, ob dort irgendein Fehler zu finden ist.
Eine Vermutung von mir wäre noch, dass das Servlet in einem package sein muss (es sollte auf jeden Fall...)
 
Was mir spontan auffällt ist, dass du das Formular mit POST abschickst, aber deinen Methode im Servlet ist doGet(). doPost() ist leer.

EDIT: Oh, ich habe übersehen, dass dies schon jemand aufgefallen ist 😉
 
Hallo,

also scheinbar habe ich wohl irgendetwas kaputtadministriert🙂 der Menupunkt Applications in der Weboberfläche hat mir nämlich HTTP 500 zurückgegeben. Nachdem ich GlassFish neuinstalliert, im Servlet auf POST anfragen reagiere und die Anwendung über die Weboberfläche deployed habe funktioniert.

Vielen Dank.

Gruß hyperion
 

Neue Themen


Zurück
Oben