# Java Servlet, mit <a href => ansteuern



## MarRos81 (17. Mai 2006)

Hallo,

ich vermute, dass ich in meinem Quellcode einen logischen Fehler eingebaut habe. Ich hatte vor, einen Webshop zu programmieren. Über ein Servlet sollte ein Link zu einem neuen Servlet hergestellt werden, wo sich genauere Informationen ( in diesem Fall der Bücher) befinden. Ich kann die ganze Sache auch über den Server starten, allerdings funzt es nicht so wie ich es mir erhofft hatte. Es werden nur die Preise angezeigt, die die buch.getPreis() Methode liefert.


Hier der Quelltext der KatalogServlet.Java

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

public class KatalogServlet extends HttpServlet {

	private Katalog katalog;

	private Buch buch;

	private PrintWriter out;

	public void init() {
		katalog = new Katalog();
	}

	private void druckeBuch() {
		Collection buchCollection = katalog.getAlleBuecher();
		Iterator buchIterator = buchCollection.iterator();
		Buch buch = null;
		while (buchIterator.hasNext()) {
			buch = (Buch) buchIterator.next();
			out.println("<tr><td>" + "<a href =" + "./V3/buchinfo?isbn = "  + buch.getBuchTitel() + "</a>" +   "</td>");
			out.println("<td>" + buch.getPreis() + " EURO" + "</td></tr>");
			// vermute in Z. 24 und 25 das Problem
		}
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, java.io.IOException {
		response.setContentType("text/html");
		out = response.getWriter();
		out.println("<html>");
		out.println("<head>");
		out.println("<title>Webshop V3</title>");
		out.println("</head>");
		out.println("<body>");
		out.println("<h1>B&cherliste</h1>");
		out.println("<table>");
		druckeBuch();
		out.println("</table>");
		out.println("</body>");
		out.println("</html>");
		out.close();
	}

	public void destroy() {
		katalog = null;
	}
}
```

Hier der Quelltext der BuchServlet


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

public class BuchServlet extends HttpServlet {

	private PrintWriter out;

	private Katalog katalog;

	private Buch buch;

	public void init() {
		katalog = new Katalog();
	}
	
	private void druckeBuchInfo(String isbn){
		buch = katalog.getBuchInfo(isbn);
		out.println(buch.getBuchTitel());
		out.println(buch.getAutor());
		out.println(buch.getPreis() + "Euro");
		out.print(buch.getVerlag() + " ");
		out.println(buch.getErscheinungsJahr());
		out.println(buch.getIsbn());
		out.println();
		out.println(buch.getBeschreibung());
	}
	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, java.io.IOException {
		response.setContentType("text/html");
		out = response.getWriter();
		druckeBuchInfo(request.getParameter("isbn"));
		out.println("<html>");
		out.println("<head>");
		out.println("</head>");
		out.println("<body>");
		druckeBuchInfo("isbn");
		out.println("</body>");
		out.println("</html>");
		out.close();
	}
}
```


Ich hoffe, mir kann wer weiterhelfen!

vorab schon mal Danke


----------



## Murray (17. Mai 2006)

Bei Deinem Anchor-Element wird das öffnende Tag nicht beendet, außerdem fehlt irgendein Text, der als Link fungieren soll.
Vielleicht klappt es so:

```
out.println("<tr><td>" + "<a href =\"" + "./V3/buchinfo?isbn="  + buch.getBuchTitel()+ "\">Hier klicken" + "</a>" +   "</td>");
```


----------



## Guest (17. Mai 2006)

Hallo erstmal danke.


eigentlich sollte die get-Methode das vollführen. Sie sollte das Buch liefern, das man dann anklicken kann!

Ist das möglich, oder denke ich da komplett falsch!



vg


----------



## MarRos81 (17. Mai 2006)

Ich habe es ausprobiert. Es funktioniert zwar, ist aber nicht der erwünschte Effekt.

Es soll der Buchname als Link dargestellt werden. Es wird auch nicht das Servlet über den Hyperlink geöffnet.


vg


----------



## Murray (18. Mai 2006)

Wenn der Buchname der Link sein soll:

```
out.println("<tr><td>" + "<a href =\"" + "./V3/buchinfo?isbn="  + buch.getBuchTitel()+ "\">" +  buch.getBuchTitel() + "</a>" +   "</td>");
```

Was passiert denn, wenn Du auf den Link klickst?


----------



## Guest (18. Mai 2006)

So, der link wird schon mal angezeigt.  :applaus: 


Die Fehlermeldung des Apache Servers ist:

HTTP Status 404 - /V3/V3/buchinfo

The request resource (/V3/V3/buchinfo) is not avaible.


vg


----------



## Guest (18. Mai 2006)

wenn ich die links aufrufe, soll eine seite mit den näheren Informationen der Bücher erscheinen


----------



## Leroy42 (18. Mai 2006)

Ich habe den Thread zwar nicht durchgelesen, aber anhand der Fehlermeldung:



			
				Apache Server hat gesagt.:
			
		

> HTTP Status 404 - /V3/V3/buchinfo
> 
> The request resource (/V3/V3/buchinfo) is not avaible.



Kann es sein, daß der Ordner _V3/_ nicht _zusätzlich_ in der Linkadresse angegeben werden darf?


----------



## MarRos81 (18. Mai 2006)

Jo, daran scheint es zu liegen. Er gibt mir zwar jetzt noch mehr Fehler aus. Aber um die werde ich mich jetzt erstmal kümmern.

Danke, VG


----------

