# Einsteigerfragen zu Servlets/Webprogrammierung mit Java



## Trolli91 (27. Nov 2012)

Hallo liebe Wissensgemeinschaft,

in der Uni haben wir eine Aufgabe bekommen, welche sich auf die Webprogrammierung mithilfe von Java bezieht. Konkret geht es darum ein Onlinequiz zu erstellen. Bisher hatten wir in der Universität lediglich einen Monat Java-Unterricht (bei 3 Wochenstunden) und noch keinerlei Unterricht bezüglich Servlets.
Diesen bekommen wir erst im Februar, Abgabe der Arbeit ist jedoch schon im März  
Aus diesem Grunde würde ich mir gern einen Vorteil in der Zeit verschaffen. Bisher habe ich ein grundlegendes Programm mit Datenbankanbindung (wurde gefordert) geschrieben, in denen Fragen gespeichert und abgerufen werden. Dies habe ich mit Eclipse und MYSQL realisiert. Innerhalb von Eclipse funktioniert das ganze wunderbar, allerdings soll es ja eine Webanwendung werden. Hierfür habe ich mir bereits Grundlagen in HTML angeeignet und eine Testwebsite online gestellt.
Nun habe ich aber noch garkeine Ahnung wie ich mein Programm online stellen kann und darüber eine Weboberfläche lege. 
Habe mir hierfür bereits ein wenig Verständnis für Servlets verschafft. Das allein bringt mich jedoch nicht weiter 
Nun beende ich aber meine lange Vorrede und komme zur eigentlichen Frage:
Was benötige ich alles um meinen Programmcode online zu stellen? Dies bezieht sich auf die Programme die ich benötige, sowie Kenntnisse über welche Themen. Schön wäre es wenn es möglich wäre, eine Website mit HTML zu erstellen und dann ganz bequem verschiedene Button drücken zu können mit deren Hilfe im Hintergrund der Code ausgeführt wird und das ganze grafisch wiedergegeben wird, beispielsweise mit einen aufpoppendem Fenster, oder indem sich der Inhalt eines Textfeldes ändert ("Glückwunsch, Frage richtig beantwortet" zum Beispiel ;-) )

Ich würde mich wirklich sehr freuen wenn da jemand eventuell sogar einen Link zu einer Website hat in der ein Tutorial ist, in dem ein Beispielprogramm online gestellt wird 
Habt Dank für das Lesen meiner Frage.

Liebe Grüße
Trolli91

ps.: Aufgabe ist wirklich das ganze mit Java online zu stellen(Javascript beispielsweise ist tabu)
ps2: So ganz sicher bin ich mir nicht ob ich hier richtig bin, da sich mein Hauptproblem aber auf Servlets bezieht hoffe ich das es so stimmt.


----------



## JavaProfi (28. Nov 2012)

Trolli91 hat gesagt.:


> Hallo liebe Wissensgemeinschaft,
> Was benötige ich alles um meinen Programmcode online zu stellen? Dies bezieht sich auf die Programme die ich benötige, sowie Kenntnisse über welche Themen. Schön wäre es wenn es möglich wäre, eine Website mit HTML zu erstellen und dann ganz bequem verschiedene Button drücken zu können mit deren Hilfe im Hintergrund der Code ausgeführt wird und das ganze grafisch wiedergegeben wird, beispielsweise mit einen aufpoppendem Fenster, oder indem sich der Inhalt eines Textfeldes ändert ("Glückwunsch, Frage richtig beantwortet" zum Beispiel ;-) )
> 
> Ich würde mich wirklich sehr freuen wenn da jemand eventuell sogar einen Link zu einer Website hat in der ein Tutorial ist, in dem ein Beispielprogramm online gestellt wird
> Habt Dank für das Lesen meiner Frage.



Programmcode online stellen? 
Du meinst eher eine Webanwendung mit Java als serverseitige Programmiersprache programmieren. Man kann nicht einfach irgendein Java Programm online stellen. Was du suchst ist "JavaSever Faces 2.x" +  Facelets(xHTML) als VDL (View Definition Language). 

Tutorial:
JSFAtWork, JSF 2.0 und Apache MyFaces


Gruß
JP


----------



## Trolli91 (28. Nov 2012)

Hallo JP,

vielen Dank für deine Rückmeldung. Ich bin wohl komplett auf dem Holzweg gewesen was die Realisierung betrifft. Danke für das Tutorial, ich werde mich zuhaus damit beschäftigen.

liebe Grüße
Trolli91


----------



## mario87b (29. Nov 2012)

Sowas lernt man heute auf der Uni... naja.


----------



## Trolli91 (4. Dez 2012)

Halli hallo,

ich bins mal wieder 
Habe es nun soweit geschafft meine Webanwendung zum laufen zu bringen. Sie kann auf die Datenbank zugreifen, alles so verarbeiten wie gewollt und die Ergebnisse auch ausgeben. Das ganze habe ich mit Eclipse und JSP's gemacht (war für meinen Wissensstand schwer genug zu erarbeiten :rtfm
Nun habe ich allerdings ein neues Problem:
Bei einem Quiz soll man die Lösung natürlich anklicken können. Daher wäre ein Button schön, in welchem immer die Lösung angezeigt wird und mit einem Klick im Hintergrund eine Funktion aufgerufen wird.
Es gibt in HTML ja die Möglichkeit einfach Buttons zu definieren und mit Javascript zur Ausführung zu bringen( Stichwort Javascript: Dürfen wir ja nicht.)
Nun habe ich alss eine Funktion programmiert, welche mir JButtons ausgibt, was allerdings in einem Extrafenster angezeigt wird. Ich fände es nicht schön wenn man die Website aufruft und beim Spielen dann erst ein Extrafenster geöffnet werden muss 

Gibt es denn eine Möglichkeit Buttons mit variablen Text (je nachdem welche Antwort zu der jeweiligen Frage passt) in die Website einzubinden und damit eine Funktion auszuführen?

Ich hoffe ihr versteht was ich meine 

Ich wünsch euch noch einen schönen Tag
lg
Trolli91


ps.:


mario87b hat gesagt.:


> Sowas lernt man heute auf der Uni... naja.


So etwas haben wir eben noch nicht gelernt, darum geht es ja  Da ich mir das schon vorher aneignen möchte und über keine Vorkenntnisse verfüge, wusste ich eben noch nicht wohin genau die Reise führen sollte, daher meine "doofe" Frage.


----------



## JavaProfi (4. Dez 2012)

(1) Den jeweiligen Text für den Button in einer Variable (z.B. buttonText) in der ManagendBean (z.B. MyBean) hinterlegen.
(2) Eine Getter Methode für diesen Wert schreiben. 
(3) In der JSP Seite den "value" des button-tags über die Expression Langauge an den Wert der managendBean binden (z. B.  value="${myBean.buttonText}")

Gruß
JP


----------



## Trolli91 (4. Dez 2012)

Hallo JavaProfi,

das ich den Button auf diese Weise einbinden kann ist ja bereits beruhigend, wie bereits das funktioniert habe ich auch bereits getestet. Mir ist allerdings noch nicht klar wie ich, abhängig davon welcher Button geklickt wird, eine Funktion im Hintergrund aufrufen kann (beispielsweise um zu prüfen ob die Eingabe richtig war, oder die nächste Frage abzurufen).
Der Button an sich mit Beschriftung bekomme ich hin, danke, allerdings eben nicht die Ausführung weiterer Funktionen. 

liebe Grüße
Trolli91


----------



## JavaProfi (4. Dez 2012)

Dann nehme bitte anstatt der JSP EL die JSF EL (nicht beide in einer JSP Seite kombinieren!!) sowie die JSTL und dann den Button wie folgt in die JSP Datei einfügen:

<h:commandButton value="Submit" action="#{myBean.doSomething}" value="#{myBean.getButtonText}"/>

Gruß
JP


----------



## Trolli91 (11. Dez 2012)

Halli hallo,

danke für die Hilfe, geht bis jetzt gut voran :toll:
Habe gerade ein kleines Problem gefunden, was ich nicht lösen kann, weshalb ich aber keinen Extrathread aufmachen möchte. Folgendes, ich habe eine Variable 


```
int richtige=0;
```

Die soll sich mit der Zeit aber ändern, sie soll nämlich die Zahl richtiger Antworten zählen 
Dafür habe ich auf meiner Seite ein Formular definiert, in welchem ich einer neuen JSP-Seite Variablen übergebe, nämlich so:
<input type="hidden" name="richtige" value="<%out.println(richtige);%>">

Bei dieser Methode ist der Rückgabewert ein String, dessen bin ich mir durchaus bewusst. Daher habe ich versucht diesen String mittels 

```
richtige=Integer.parseInt(request.getParameter("richtige"));
```
umzuwandeln. Allerdings gibt er nur nen Fehler aus und zwar:
java.lang.NumberFormatException: null

Wenn ich den Rückgabestring ausgebe, ist in dem Feld aber definitiv etwas darin, nämlich "0". Die kann ich auch auf der JSP-Seite ausgeben. Nun kann ich diese "0" aber nicht in einen integer umwandeln um damit weiterzuarbeiten ???:L Da ist meine Frage natürlich: Warum nicht? Nur das 
	
	
	
	





```
Integer.parseInt
```
 mag er nicht, das Übermitteln und Ausgeben macht er ohne Probleme. Weiß vielleicht jemand weshalb das so ist?

edit: Integer.valueOf(string) funktioniert auch nicht


----------



## Templarthelast (11. Dez 2012)

Willst du mal den entsprechenden Teil deines Codes posten, da ich deine Vorgehensweise nicht ganz durchblicke?


----------



## Trolli91 (11. Dez 2012)

Hallo,

okay mache ich. Ich habe gehofft das es reicht wie ich es gepostet habe. Hier der wichtige Teil:

String Antwort= request.getParameter("Antwort");
String Frage = request.getParameter("Frage");
int richtige = 0;
richtige=Integer.parseInt(request.getParameter("richtige"));
richtige++;
out.println(richtige);
out.println(Frage);
out.println(Antwort);

...

<form action="" method="post">
<input type="hidden" name="Antwort" value="<%out.println(Antwort);%>">
<input type="hidden" name="Frage" value="<%out.println(Frage);%>">
<input type="hidden" name="richtige" value="<%out.println(richtige);%>">
<INPUT TYPE="submit" VALUE="Antworten" >
</form>



Mit dem Absendebutton unten lade ich die Seite neu, dabei ermittelt er korrekt die Antwort und die Frage von der vorherigen Seite. Den Stringwert von der Variable "richtige" ermittelt er ja auch richtig, er kreidet mir ausschließlich das Integer.parseInt an und ich habe keine Ahnung weshalb


----------



## Templarthelast (12. Dez 2012)

Ich würde mir mal die Paramter noch mehrfach anzeigen lassen: Länge des Parameters ausgeben lassen, aus dem hidden input einen text input machen, sodass man in sieht, etc. 

Eine weitere nicht ganz elegante Lösung wäre mit String.equals den Wert zu überprüfen und ihn so zu unterscheiden.


----------

