# Weboberfläche für Java Anwendung?



## Guest (31. Jan 2009)

Hallo,

baue gerade eine Anwendung, die Eingaben eines Benutzers verarbeitet und Ergebnisse zurückliefert.
Ich hätte es gerne dass diese Anwendung über eine Weboberfläche bedienbar ist. Nur wie macht man das üblicherweise?

Meine Ideen:

Applet - scheidet aus, da es clientseitig läuft
Servlets/JSP - Ein Application-Server ist Overkill für meine Anwendung
Socket-Kommunikation zwischen Java und PHP - Ist IMHO Gefrikel
Integrierter Java-Webserver - Denkbar, nur welchen nehmen

Wie würdet ihr das lösen?


----------



## Gelöschtes Mitglied 5909 (31. Jan 2009)

Servlets/JSP und Tomcat, was kein richtiger application server ist 
Kannst aber z.B. auch jetty dafür nehmen


----------



## Gast (31. Jan 2009)

Gut, angenommen ich verwende JSPs und nehme einen Application Server wie Glassfish her.
Wie kommuniziert das JSP dann mit der Anwendung?
Die Berechnungen werden ja sicherlich nicht im JSP erledigt, aber irgendwie muss das JSP ja die Logik aufrufen, die Parameter übergeben und dann mit der Ausgabe der Ergebnisse warten bis die Berechnung fertig ist.

Man sieht, ich habe von J2EE keine Ahnung =), hoffe aber trotzdem auf eure Hilfe.


----------



## MarcB (31. Jan 2009)

Du weisst aber schon, dass das ein ganzes Thema für sich ist?
Es gibt aber massig gute Literatur und Tutorials zu dem Thema. Für den Einstieg ist IMO Coreservlets ganz gut geeignet, wenn auch nicht auf dem neuesten Stand.

Du brauchst mit 99-prozentiger Wahrscheinlichkeit keinen Applikationserver wie den Glassfish. Ein Tomcat reicht bestimmt auch.


----------



## Gast (31. Jan 2009)

Naja,

keine Ahnung ist übertrieben. Ich denke ich kann ganz gut Java programmieren, hab allerdings nur ein paar kleinere Sachen im J2EE Feld gemacht, der Rest war Java SE.
Ich kenne daher ein paar Konzepte, aber die Brücke zwischen der View (JSP) und der Logik dahinter ist mir noch nicht klar. Hätte es wohl mit RMI oder ähnlichem gemacht.

Danke für den Buchtipp, das überfliege ich mal. Aber kann mir jemand ein paar Schlagworte nennen, wie man die Verbindung zwischen Weboberfläche und Logik in J2EE herstellt?

Ach ja, und wo ist der Unterschied zwischen Glassfish und Tomcat. Ich dache immer, das wären beide Application Server.... oder ist Tomcat nur ein Container um JSPs laufen zu lassen und Glassfish bringt noch mehr mit?


----------



## mvitz (31. Jan 2009)

Tomcat ist ein sogenannter Webcontainer. Er kann also alles, was im sogenannten Web-Tier abläuft (JSP, Servlets, etc.). Ein Application Server, wie Glassfish, JBoss, etc. hat auch einen Webcontainer, daneben aber noch mehr, wie z.B. einen EJB-Container.


----------



## Gast (31. Jan 2009)

Ok, vielen Dank!

Bliebe nur noch die Frage wie man die Verbindung zwischen Weboberfläche und Logik in J2EE herstellt?


----------



## Gelöschtes Mitglied 5909 (31. Jan 2009)

du rufts in den Servlets deine businesslogik auf und schreibst das ergebniss in den request und stellst es in den jsps dar


----------



## Guest (31. Jan 2009)

Ah ja. Wenn ich das jetzt mal "einfach" ausdrücke, dann rufe ich vom meinem JSP die Methoden einer Logikklasse (genannt Servlet) auf. Muss die Klasse unbedingt das Servlet Interface implementieren oder tuts eine normale Klasse auch.

Simples Beispiel:

```
public class Calculator{
   public int add(int a, int b){
      return a+b;
   }
}
```
vs.

```
public class Calculator implements Servlet{
   public int add(int a, int b){
      return a+b;
   }
}
```

Welchen Vorteil hat die zweite Variante?


----------



## mvitz (31. Jan 2009)

Nein, dass ist ein bisschen komplizierter:
Ersteinmal ein normales HTML Formular:

```
<html><body>
<form action="berechneSumme" method="get">
<input type="text" name="a" /><input type="text" name="b" /><input type="submit" value="Berechne!" />
</form>
</body></html>
```
Dann muss man dafür sorgen, dass die Action "berechneSumme" auf folgendes Servlet weiterleitet:

```
public class CalculatorServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		int a = Integer.parseInt((String) req.getAttribute("a"));
		int b = Integer.parseInt((String) req.getAttribute("b"));
		resp.setContentType("text/html; charset=UTF-8");
		Calculator calc = new Calculator();
		int sum = calc.add(a, b);
		req.setAttribute("sum", sum);
		RequestDispatcher rd = req
				.getRequestDispatcher("WEB-INF/jsp/showSum.jsp");
		rd.forward(req, resp);
	}
}
```
Zur Erläuterung.
Die Methode doGet behandelt den Aufruf des Servlets über die HTTP GET Methode.
Dann hole ich mir die beiden Attribute a und b und mache einen Integer daraus.
Anschließend wird die Summe über die "Business Logik" berechnet und auch als Attribut hinzugefügt.
Nun hole ich mir eine JSP Seite und forwarde alles an diese JSP Seite.
Inhalt der JSP Seite könnte sein:

```
<html><body>
Die Summe ist: ${sum}
</body></html>
```

Zu empfehlen ist hier auch:
http://www.jsptutorial.org/


----------



## Gast (31. Jan 2009)

Wow habi55!
Das war genau die einfache Erklärung, die ich mir gewünscht hatte.Danke!


----------

