# web.xml mit jsp verbinden



## Painii (2. Jul 2009)

Hallo,
Ich bin noch relativ neu in der Programmierung mit servlets/jsp und dergleichen...
Ich nutze Tomcat 6.0 in Verbindung mit Eclipse und 
Sysdeo Tomcat Launcher Plugin in Eclipse

Ich hab mir zum üben ein Servlet geschrieben was 2 Zahlen aus den Argumenten nimmt und addiert und dann in ein html-form zurückschreibt
Dazu hab ich die web.xml so gebaut:
[XML]<web-app>
	<servlet>
   		<servlet-name>add</servlet-name>
    	<servlet-class>AddServlet</servlet-class>
    </servlet>
  	<servlet-mapping>
    	<servlet-name>add</servlet-name>
    	<url-pattern>/add</url-pattern>
  	</servlet-mapping>
</web-app>[/XML]
Das aufzurufen ist auch möglich soweit.
Jetzt möchte ich gerne über addJSP.jsp die argumente mit formularen einlesen, das servlet berechnen lassen und es dann im hmtl-form ausgeben.
Leider hab ich keine Ahnung wie ich nun die jsp-file vom tomcat aufrufe (bzw. in das xml binde), in dem tutorial was ich benutzt hab stand zwar dieser code:
[XML] <servlet>
        <servlet-name>jspAssign</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>logVerbosityLevel</param-name>
            <param-value>WARNING</param-value>
        </init-param>
        <init-param>
            <param-name>fork</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>jspAssign</servlet-name>
        <url-pattern>/*.jsp</url-pattern>
    </servlet-mapping>
[/XML] aber damit bringt mir tomcat nur einen haufen fehler.

Ich will also einfach über localhost/addJSP auf meine addJSP.jsp file kommen.
Ich hoffe jemand hier kann mir helfen, danke für die Aufmerksamkeit.


----------



## mvitz (2. Jul 2009)

Entweder du musst halt /addJsp.jsp eingeben oder aber in der web.xml


```
<servlet>
        <servlet-name>add</servlet-name>
        <jsp-file>addJsp.jsp</jsp-file>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>add</servlet-name>
        <url-pattern>/addJsp</url-pattern>
    </servlet-mapping>
```

Und dieses JspAssign kann ruhig weg, das habe ich noch nie gebraucht, geschweige denn gesehen.


----------



## Painii (2. Jul 2009)

ok, das hab ich gemacht, hat leider nicht geholfen... anstatt nem haufen von fehlern bekomm ich jetzt nur die meldung 

The requested resource (/Add/addJSP.jsp) is not available.

mit allen möglichen und unmöglichen variationen von addJSP.jsp oder addJSP

auf mein AddServlet kann ich ja über /Add/add zugreifen...
Ich vermute mal, dass ich meine JSP-file irgendwo bestimmt ablegen muss, nur weiss ich nicht wo...

Achja, wenn ich Tomcat ausserhalb von eclipse starte und das jsp-file im root ablege wird es auch normal aufgerufen.

Hier mal am besten der derzeitige quellcode ( der zeigt zurzeit auf die gleiche seite zurück und berechnet die argumente, die berechnung soll dann das servlet übernehmen)

```
<HTML>
<HEAD>
<title>
AddJSP
</title>
</HEAD>
<BODY>
<form method="post" action="AddServlet.java">
<p><input name="arg1" type="number"> <input name="arg2" type="number"></p>
<p> <input type="submit" method="post" value="Addieren">
<%--	
	int arg1=0,arg2=0;
	boolean ex1=false, ex2=false;
	try{
		arg1 = Integer.valueOf(request.getParameter("arg1"));
	}catch(Exception e){
		ex1=true;
	}
	try{
		arg2 = Integer.valueOf(request.getParameter("arg2"));
	}catch(Exception e){
		ex2=true;
	}
	if(!(ex1&&ex2))out.println("<input name=\"ergebnis\" type=\"number\" value=\"" + (arg1+arg2) + "\" readonly></p>");	
	else out.println("<input name=\"ergebnis\" type=\"number\" value=\"\" readonly></p>");
	
--%>
</form>
</BODY>
</HTML>
```

Hier hab ich allerdings dann das Problem dass das AddServlet falsch aufgerufen wird...
Es wird nur der Quellcode angezeigt anstatt die doGet dort auszuführen.

Den java-code im jsp hab ich am anfang ausprobiert um zu sehen ob der auch das macht was er soll (er tut es), und ist im prinzip der gleiche wie in meinem Servlet.

Ich glaub ich mach das was grundlegend verkehrt beim Aufruf, ich weiss nur leider nicht was


----------



## mvitz (2. Jul 2009)

So wie ich es geschrieben habe, müsstest du die JSP in den Ordner 'WebContent' bei Eclipse legen. Der Pfad zur JSP muss ab hier relativ eingegeben werden.

In der JSP stimmt natürlich der Pfad zum Servlet nicht  Den hast du doch selber auf /add gemapped, weswegen du hier normalerweise mit


```
<form method="post" action="add">
```
weiterkommen solltest.


----------



## Painii (2. Jul 2009)

Hmm, das hat leider nicht geholfen...

Einen Ordner "WebContent" hatte ich nich in Eclipse, also hab ich ihn mal in das Project Add hinzugefügt, und meine addJSP.jsp da rein gelegt.

Aber ich kann immer noch nicht mit dem Browser auf die Datei zugreifen :bahnhof:
(auf das AddServlet kann ich schon zugreifen, auch über das mapping aus der xml, nur auf die jsp nicht)

Das ist grad so mein grösstes Problem, weil ich so ja nicht weiter schauen kann ob das was ich hab denn so schon funktioniert.

Der einfachheit halber sollte das jsp erstmal unter /Add/a erreichbar sein, also hab ich das so in die web.xml geschrieben:
[XML]<servlet>
        <servlet-name>adde</servlet-name>
        <jsp-file>/addJsp.jsp</jsp-file>
    </servlet>
<servlet-mapping>
        <servlet-name>adde</servlet-name>
        <url-pattern>/a</url-pattern>
    </servlet-mapping>[/XML]
Zugreifen kann ich aber wie gesagt nicht darauf (-> entweder mein /Add/a pfad ist falsch, oder die datei wird nicht darauf gemappt)

Ich bin mir ziemlich sicher dass es irgendeine Dummheit ist die ich grad nicht sehe... danke dass du dich trotzdem meiner annimmst 

edit:
Ich hab jetzt mal einfach eine leere html-file gebaut und drauf zugegriffen -> hat funktioniert (mit /Add/testHTML.html konnt ich drauf zugreifen)

Wenn ich nun das .html in .jsp ändere, sagt mir Eclipse "Source not found: The source attachment does not contain the source for the file Scanner.class"
Mit so einer hab ich bisher noch garnichts gemacht... muss also irgendwoanders der Fehler liegen? (und wenn dem so ist, wie beheb ich den dann? ???:L)


----------



## mvitz (2. Jul 2009)

Ich würde an deiner Stelle nochmal neu anfangen. Idealerweise auch mit einem neuen Eclipse Workspace.

Welche Version von Eclipse benutzt du eigentlich atm? Weil das Sysdeo Plugin braucht man afaik schon länger nicht mehr. Wenn du dir nicht sicher bist, lade dir von eclipse.org die aktuelle Version 3.5 (Galileo) als "for JavaEE Developer" herunter. Dort dann ein "Dynamic Web Project" anlegen.


----------



## maki (3. Jul 2009)

JSPs in die web.xml einzutragen halte ich für sehr fragwürdig, denn JSPs sollten eigentlich nur von Servlets aufgerufen werden, MVC/Model 2 eben.


----------



## mvitz (3. Jul 2009)

maki hat gesagt.:


> JSPs in die web.xml einzutragen halte ich für sehr fragwürdig, denn JSPs sollten eigentlich nur von Servlets aufgerufen werden, MVC/Model 2 eben.



Hast du natürlich recht. Aber da der TO ja anscheinend erste Schritte machen möchte, wollte ich ihn damit erstmal nicht weiter verwirren 

@Painii
Wenn du genauer wissen möchtest, was maki damit sagen wollte, mache ich dir bei Bedarf gerne ein kleines Beispiel.


----------



## Painii (11. Jul 2009)

Hi, sorry das es bei mir etwas länger gedauert hat...
Also ich hab die Aufgabe erstmal in html/Servlet aufgeteilt und abgegeben, dann wurde mir gesagt es hätte ein JSP gereicht (also mein Servlet-code einfach im html), naja...

Was MVC ist weiss ich schon *g*, nur hab ich da garnicht dran gedacht in dem moment... es sollte nur erstmal funktionieren.

Eclipse benutz ich 3.3

Ich werd jetzt erstmal für meine Prüfungen lernen, danach werd ich mal schauen ob ich noch Lust hab das ganze weiter zu vertiefen oder ob ich lieber noch andere Themen anschaue.

Aber nochmal danke für den Willen zur Hilfe


----------

