# Mehrere Probleme mit Servlets/Java



## Guest (21. Feb 2006)

Hallo!

Ich experimentiere gerade mit Servlets rum und es sind gerade ein paar Probleme aufgetreten.

1. Problem

Ich versuche über einen Link (http://localhost:8080/test/mitglied?bid="irgendeine Nummer"), diese Nummer aus dem Link zu ziehen um sie an eine Datenbankanfrage weiterzugeben, aber mir will das einfach nicht gelingen. Hat jemand eine Idee? Bisher habe ich es über request.getParameter() versucht.


2. Problem

Ich verwende um das Servlet zu entwickeln den Jbuilder, da wird auch soweit so gut alles im Tomcat angezeigt. Will ich nun aber das package mit den klassen  außerhalb des Jbuilder auf einem Tomcat deponieren, wird das Servlet einfach nicht gefunden. Obwohl ich es genau so in die WEB.xml eingetragen habe wie es auch bei den Beispielen vom Tomcat Server ist.
Bin für alle Tipps dankbar!

3. Problem

Hat jemand ne Ahnung wie für die Datenbankverbindung zu MYSQL  die URL und der Treiber heißen?

4. Problem

Hat jemand ne Ahnung wie ich den Java Compiler unter Windows XP global verfügbar machen kann? Ich habe 
set path=c:\jdk\bin;%path%  in die autoexec.bat eingetragen, so wie ich es schon mal wo gelesen hatte. Aber irgendwie funktioniert das nicht.

Danke für alle Zuschriften im voraus!


----------



## Bleiglanz (21. Feb 2006)

1) du hast es richtig versucht, was geht nicht?

2) alle Klassen müssen im WEB-INF/classes Ordner zu finden sein, wie hast du denn das auf dem Tomcat "deponiert"

3) steht in der doku, oder auch hier die Forumssuche

4) Start > Systemsteuerung > System > da gibts dann nen Reiter "Umgebungsvariablen"

zum PATH einfach den $JDK/bin hinzufügen


----------



## @Bleiglanz (22. Feb 2006)

zu 1.) Die Nummer wird mit dem Link nicht übergeben! Immer wenn die neue Seite geöffnet wird steht dort http://localhost:8080/test/mitglied?bid="null". Egal welche Nummer ich eingebe auf der Seite die ich über den Link öffne steht immer Null.

zu 2.) Ich habe die Klassen in einem Unterordner da package im Ordner servlet-examples vom Tomcat reingestellt und in der web.xml bei servlet-mapping genau dasselbe gemacht wie es für die Beispiele mit packages da steht.

zu 3.) Danke!

zu 4.) Das mit der Umgebungsvariable war ein guter Tipp. Anders funktioniert es in Win XP irgendwie nicht.


----------



## Bleiglanz (22. Feb 2006)

1) dann ist vielleicht das erzeugte a href schon falsch? Quelltext anschauen bevor du dem Link folgst

2) mach lieber eine eigene webapplikation!


----------



## @Bleiglanz (22. Feb 2006)

Ich finde den Fehler irgendwie nicht! Ist wahrscheinlich wieder was ganz banales. Hier hab ich mal den Quellcode, vielleicht siehst du ja wo mein Fehler ist!

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class Login extends HttpServlet implements Serializable{
  private static final String CONTENT_TYPE = "text/html";
  Connection con = null;

  //Initialize global variables
  public void init() throws ServletException
  {


  }


  //Process the HTTP Get request
  public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();

    Eintrag neuerEintrag = new Eintrag();
    neuerEintrag.aufnehmen(request);
    neuerEintrag.printHTML(out,request.getRequestURI(),con);


  }
  class Eintrag {
      String strTextfeld;

      public void aufnehmen(HttpServletRequest request)
      {
        strTextfeld = request.getParameter("BID");

      }


      protected void printHTML(PrintWriter out, String servletPath,Connection con) throws
          ServletException, IOException {
        int i = servletPath.indexOf('?');
        if (i != -1) servletPath = servletPath.substring(0, i);


        out.println("<html>");
out.println("<head>");
out.println("<title>Mitglieder Informationen</title>");
out.println("</head>");
out.println("<body text='#000000' bgcolor='#FFFF00' link='#FF0000' alink='#FF0000' vlink='#FF0000'>");
out.println("<center>");
out.println("<h1>Mitglieder Login</h1>");
out.println("

");
out.println("<form action='" + servletPath + "' method='post' target=''>");
out.println("<font size='+1'>*Benutzer-ID:*</font>");
out.println("<input type='Text' name='BID' value='' size='' maxlength=''>");
out.println("

");
*out.println("<input type='button' name='Button1' value='Daten senden!!!' onClick=self.location.href='mitglied?bid="+strTextfeld+"'>");*
out.println("&&");
out.println("<input type='Reset' name='Button2' value='Daten l&schen!!!'>");
out.println("</form>");
out.println("</center>");
out.println("</body>");
out.println("</html>");


      }

      //Clean up resources
      public void destroy()
      {

    }
  }

Danke im voraus!!!


----------



## bronks (22. Feb 2006)

@Bleiglanz hat gesagt.:
			
		

> ...
> *out.println("<input type='button' name='Button1' value='Daten senden!!!' onClick=self.location.href='mitglied?bid="+strTextfeld+"'>");*



Folgende Verbesserung hätte ich zu bieten:

out.println("<input type='button' name='Button1' value='Daten senden!!!' onClick=\"self.location.href=mitglied?bid="+strTextfeld+";\">");


----------



## @bronks (23. Feb 2006)

bronks hat gesagt.:
			
		

> @Bleiglanz hat gesagt.:
> 
> 
> 
> ...



Danke für deinen Verbesserungsvorschlag! Aber das bringt mir nichts! Mein Problem ist, dass die Nummer aus dem Textfeld nicht an den Link weitergegeben wird.

Es steht da immer NULL für die Variable.


----------



## Chuqa (23. Feb 2006)

@bronks hat gesagt.:
			
		

> *out.println("<input type='button' name='Button1' value='Daten senden!!!' onClick=self.location.href='mitglied?bid="+strTextfeld+"'>");*



versuchs ma mit 

```
out.println("<input type='button' name='Button1' value='Daten senden!!!' onClick=\"self.location.href='mitglied?bid='"+strTextfeld+"\">");
```
also das zweite Hochkomma nach _bid=_


----------



## bronks (23. Feb 2006)

@bronks hat gesagt.:
			
		

> ... Danke für deinen Verbesserungsvorschlag! Aber das bringt mir nichts! Mein Problem ist, dass die Nummer aus dem Textfeld nicht an den Link weitergegeben wird.
> 
> Es steht da immer NULL für die Variable.


Ich dachte auf den ersten Blick, daß es nur am am JS liegt, welches Du mit Fettschrift markiert hast ... Ich hab mir jetzt den kompletten Code durchgelesen.

Insgesamt kann ich nur sagen, daß der ganze Aufbau chaotisch ist und keinen Spec oder BestPractices ähnlich sieht. Wenn der Code der normalen Vorgehensweise entsprechen würde, dann wäre es mir das ganze Wert mal zu analysieren. So kann ich das nur als ein weiteres nichtfunktionierendes Experiment abstempeln. Sorry!


----------



## Chuqa (23. Feb 2006)

achso eventuell noch Groß-/Kleinschreibung beachten, also entweder:

```
strTextfeld = request.getParameter("bid");
```
oder

```
...\"self.location.href='mitglied?BID='"...
```


----------



## @chuqa (24. Feb 2006)

Chuqa hat gesagt.:
			
		

> achso eventuell noch Groß-/Kleinschreibung beachten, also entweder:
> 
> ```
> strTextfeld = request.getParameter("bid");
> ...



Wo ist der Unterschied von deinem Quellcode zu meinem?


----------



## Chuqa (24. Feb 2006)

Du hast in dem Link den Parameter (bid) klein geschrieben und in der Funktion _aufnehmen()_ groß, und deswegen entweder beim Link den Parameter groß schreiben oder in der Funktion den Parameter klein schreiben, so dass es dort keine Komplikationen wegen der Groß- und Kleinschreibung gibt.


----------



## Bleiglanz (24. Feb 2006)

```
out.println("<input type='button' name='Button1' value='Daten senden!!!' onClick=self.location.href='mitglied?bid="+strTextfeld+"'>");
```
das ist total unsinnig

der onClick Handler ist Javascript, und wird "ad hoc" einfach so aufgerufen

da gibt es keine Variable strTextfeld, was soll das sein????

du musst schon mit 

document.getElementById('....').value

usw. explizit den Wert von der Textbox abholen den du haben willst


----------



## @Bleiglanz (27. Feb 2006)

Bleiglanz hat gesagt.:
			
		

> ```
> out.println("<input type='button' name='Button1' value='Daten senden!!!' onClick=self.location.href='mitglied?bid="+strTextfeld+"'>");
> ```
> das ist total unsinnig
> ...




Wie würdest denn du das mit dem Link lösen?


----------



## busch-d (1. Mrz 2006)

wieso keine Variable strTextfeld? die ist doch als Klassenattribut deklariert, oder bin ich bescheuert?

ich würde vorschlagen, den Parameter bid immer klein zu schreiben.


```
strTextfeld = request.getParameter("bid");
```

Dann gibt es da schonmal keine Namenskonflikte.


----------



## Guest (2. Mrz 2006)

Thema erledigt! Habe dieses Problem über ein a href in einer if Abfrage gelöst. Parameter wird jetzt übergeben. Allerdings will nun mein select auf der Folgeseite den Parameter nicht übernehmen, obwohl ich genau weiß, dass der Parameter da ist, da ich ihn mir in einem versteckten Feld anzeigen lasse. Jemand eine Idee wo das Problem liegen könnte? An der DB Verbindung liegt es auf jedenfall auch nicht. Die funktioniert einwandfrei.


----------

