Servlet aufrufen

Status
Nicht offen für weitere Antworten.

padde479

Bekanntes Mitglied
Moin moin!

Ich habe eine Applikation geschrieben, die online ein gif-Bild erzeugen soll. Das habe ich die beiden folgenden Klassen geschrieben:

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

public class GifServlet extends HttpServlet{
 public void doGet(HttpServletRequest req, HttpServletResponse res)
  throws ServletException, IOException{
  String text = req.getParameter("text"); // koennte null sein

  res.setContentType("image/gif");
  OutputStream out = res.getOutputStream();
  
  // Hilfsklasse im Package fbwi.prog4 aufrufen:
  fbwi.prog4.CreateImage.create(text,out);
  // alternativ: import fbwi.prog4;
  //CreateImage.create(text,out);
 }
}

Code:
package fbwi.prog4;
/* Die package-Anweisung legt den Namen des Packets fest. Sie muss vor allen anderen Anweisungen in 
 * der Datei stehen. Die übersetzte class-Datei muss sich im Verzeichnis ../WEB-INF/classes/fbwi/prog4
 * befinden.
 * Beim Übersetzen mit JCreator werden die Verzeichnisse für die packages automatisch erzeugt.
 */
import java.awt.*;
import java.io.*;
import Acme.JPM.Encoders.GifEncoder; // in gif.jar

public class CreateImage{
 public static void create(String text, OutputStream out){
  Frame f = new Frame();

  // Grafik-Kontext herstellen, ohne ein Fenster zu öffnen:
  f.addNotify();
  
  // Abmessungen des Bildes:
  int breite = 400;
  int hoehe  = 150;

  // Leeres internes Fenster erzeugen:
  Image img = f.createImage(breite,hoehe);

  // Malen ins Bild:
  Graphics g = img.getGraphics();

  // Nun können alle Grafikmethoden der Klasse Graphics benutzt werden:
  g.setColor(Color.BLUE);
  g.fillRect(0,0,breite,hoehe);
  // gelbes Oval:
  g.setColor(Color.YELLOW);
  g.drawOval(5,5,breite-10,hoehe-10);
  // Schriftart und -größe festlegen:
  Font font = new Font("SansSerif", Font.ITALIC,50);
  g.setFont(font);
  // Fontmetrik:
  FontMetrics fm = g.getFontMetrics();
  int textBreite = fm.stringWidth(text);
  int textHoehe  = fm.getAscent();
  // Textkoordinaten:
  int x = breite/2 - textBreite/2;
  int y = hoehe/2  + textHoehe/2;
  // Schatten (4 Pixel Versatz) in rot schreiben:
  g.setColor(Color.RED);
  g.drawString(text,x+4,y+4);
  // Text in grün schreiben:
  g.setColor(Color.GREEN);
  g.drawString(text,x,y);

  // Bild in gif umwandeln:
  try{
   GifEncoder gifenc = new GifEncoder(img,out);
   gifenc.encode();
  }catch(IOException e){
   System.err.println(e.toString());
  }
 }// end create()
}

Meine web.xml-Datei sieht folgendermaßen aus:

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app 
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app >
 <servlet>
  <servlet-name>RequestHandlingExample</servlet-name>     
  <servlet-class>RequestHandlingExample</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>aufg1</servlet-name>
  <servlet-class>Prog4Ueb8Aufg1</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>aufg2</servlet-name>
  <servlet-class>Prog4Ueb8Aufg2</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>aufg3</servlet-name>
  <servlet-class>Prog4Ueb8Aufg3</servlet-class>
 </servlet>
 <servlet>
  <servlet-name>aufg4</servlet-name>
  <servlet-class>GifServlet</servlet-class>
 </servlet>

 
 <servlet-mapping>
  <servlet-name>RequestHandlingExample</servlet-name>
  <url-pattern>/servlet/RequestHandlingExample</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>aufg1</servlet-name>
  <url-pattern>/servlet/aufg1</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>aufg2</servlet-name>
  <url-pattern>/servlet/aufg2</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>aufg3</servlet-name>
  <url-pattern>/servlet/aufg3</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
  <servlet-name>aufg4</servlet-name>
  <url-pattern>/gifmaker</url-pattern>
 </servlet-mapping>

</web-app>

Unter dem Verzeichnis WEB-INF/classes liegen die Verzeichnisse fbwi/prog4/. Darin liegt die Klasse CreateImage.class. Im Verzeichnis classes liegt die Datei GifServlet.java bzw. -.ckass. Beim Kompilieren funktioniert ja alles super. Wenn ich allerdings

http://localhost:8080/examOwn/gifmaker?text=Hallo+Welt

aufrufe, bekomme ich eine Fehlermeldung. Und zwar folgende:

type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet execution threw an exception
root cause
java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable.
sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
sun.awt.X11GraphicsEnvironment.access$000(X11GraphicsEnvironment.java:53)
sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:142)
java.security.AccessController.doPrivileged(Native Method)
sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:131)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Class.java:164)
java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:6 8)
java.awt.Window.init(Window.java:270)
java.awt.Window.<init>(Window.java:318)
java.awt.Frame.<init>(Frame.java:419)
java.awt.Frame.<init>(Frame.java:384)
fbwi.prog4.CreateImage.create(CreateImage.java:13)
GifServlet.doGet(GifServlet.java:15)
javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.

Kann mir jemand sagen, was ich da falsch mache?
 

KSG9|sebastian

Top Contributor
ich nehm mal an, dass du linux laufen hast ?
vll. isses ein problem mit Linux ! Probiers mal mit Swing statt mit AWT.

Was anderes:

Benutz kein default-package, ist ist laut Konvetion falsch.
In der web.xml solltest du bei servlet-class dann den kompletten pfad angeben, also:

<servlet-class>das.ist.ein.package.Klasse</servlet-class>
 

Bleiglanz

Gesperrter Benutzer
google mal nach

tomcat+images+headless

am einfachsten ist es natürlich, du installierst X auf deinem Server...
 

padde479

Bekanntes Mitglied
Ja, habe Linux laufen. Und mit der servlet-class ist auch alles okay. Schließlich liegt GifServlet.class unter classes und CreateImage unter fbwi.prog4. Das kann's also nicht sein. Will mich da aber gar nicht festlegen. Bin noch blutiger Anfänger was jsp und servlets angeht. :shock:

Was ist denn damit gemeint:

Benutz kein default-package, ist ist laut Konvetion falsch.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Servlet Wie kann ich ohne Hilfe von Eclipse in JBoss mein servlet aufrufen Allgemeines EE 2
A jsf: Servlet aufrufen, wie geht das? web.xml Fehler? Allgemeines EE 13
M Servlet lässt sich nicht aufrufen Allgemeines EE 6
L Servlet kann Funktion nicht aufrufen Allgemeines EE 3
K Servlet per Formular aufrufen Allgemeines EE 8
N JSP kann Servlet nicht aufrufen! :-( Allgemeines EE 2
V Servlet aufrufen aus JSF Allgemeines EE 5
W Servlet aufrufen Allgemeines EE 6
G Servlet beim Absenden eines Formulars aufrufen Allgemeines EE 11
C Servlet von Frame aus aufrufen Allgemeines EE 3
J JSP aus Servlet aufrufen. Allgemeines EE 2
A Anderes Servlet aufrufen Allgemeines EE 4
K URL aus Servlet aufrufen Allgemeines EE 3
G Jakarta Servlet API 5.0 Allgemeines EE 1
pkm Frage wegen AJAX-Zugriff auf ein Servlet Allgemeines EE 1
Dimax Servlet Servlet Kommunikation Allgemeines EE 18
K Unterschied zwischen JSP & Servlet gegenüber REST mittels JAX-RS Allgemeines EE 1
Dimax Servlet läuft in Eclipse, aber nicht im Browser Allgemeines EE 74
M URL Servlet Request getParameter Allgemeines EE 2
M Servlet Methoden Aufruf im Servlet Allgemeines EE 10
J 404 Not found (Servlet) Allgemeines EE 1
J Asynchrones Servlet löst NullPointerException aus Allgemeines EE 5
E Servlet Servlet das richtige? Allgemeines EE 11
B HTTP-Header-Inspektor-Servlet Allgemeines EE 1
N JSP Servlet mit JSP ansprechen Allgemeines EE 2
F Mehrere Bilder aus MySQL DB via Servlet darstellen. Allgemeines EE 1
J FTP und Servlet Allgemeines EE 11
H Post an Servlet Allgemeines EE 2
A Binärdatei vom Servlet erzeugen lassen Allgemeines EE 3
S Servlet Authentication Filter Allgemeines EE 0
S LDAP JAAS oder Servlet Allgemeines EE 0
G Problem: Servlet in JSP einbinden mit <jsp:include> Allgemeines EE 3
F eigene Anwendung per Servlet Container starten Allgemeines EE 9
F Servlet Daten im Speicher ablegen Allgemeines EE 3
L Servlet ClassNotFoundException Servlet Allgemeines EE 3
G Allgemeine Frage zu Authentifizierung mittels Servlet API Allgemeines EE 2
J Servlet "package does not exist" Allgemeines EE 5
K Servlet-Mapping Allgemeines EE 9
0 Servlet mit ArrayList Allgemeines EE 3
E Servlet unter mehreren Adressen Allgemeines EE 16
S Pfad-Zugriff über Servlet-init() Allgemeines EE 2
S Servlet.service() threw exception Allgemeines EE 4
A Servlet erkennt request Objekt nicht Allgemeines EE 8
G Direkter Zugriff auf Servlet- doPost Allgemeines EE 15
G Servlet doGet, doPost Allgemeines EE 3
A Kodierungsproblem bei Parameterübergabe von Browser an Servlet (GET) Allgemeines EE 2
Antoras servlet-mapping auf dynamische URLs Allgemeines EE 17
0 Problem mit librarys javax.servlet.http.HttpServletRequest cannot be resolved Allgemeines EE 1
MQue Ajax - Servlet Allgemeines EE 2
MQue Servlet Allgemeines EE 9
S [Design] Dynamischer EJB Aufruf von Servlet Allgemeines EE 3
S Servlet auf JBoss 5? Allgemeines EE 11
B HttpSession bekommen wenn nicht in Servlet Allgemeines EE 8
MQue Servlet / Button Allgemeines EE 5
S In Eclipse werden die "Servlet-Klassen" nicht gefu Allgemeines EE 2
U javax.faces und javax.servlet cannot be resolved Allgemeines EE 2
W Potentielles Memory Leak bei Servlet Allgemeines EE 6
B unterschied servlet und bean Allgemeines EE 2
Escorter Servlet .sar und jede Menge .jar Archive Allgemeines EE 2
N Servlet und JSF (URL-Rewriting)? Allgemeines EE 3
N Servlet zyklisch aktualisieren Allgemeines EE 2
zilti Verbindung Applet <-> Servlet Allgemeines EE 5
ARadauer Servlet Bild Rückgabe Allgemeines EE 2
I Über Formular Daten zu Servlet Allgemeines EE 36
H Servlet - Zwischenmeldung anzeigen bei längerer Berechnung Allgemeines EE 2
G Ordner mit Umlauten einlesen - Servlet Allgemeines EE 3
A web.xml für Servlet in Tomcat 5.5 erstellen Allgemeines EE 2
M Zwei Buttons in einem Servlet Allgemeines EE 2
A web.xml für Servlet in Tomcat erstellen Allgemeines EE 6
B Servlet Allgemeines EE 3
G EJB - EJB wird nicht ins Servlet geladen Allgemeines EE 3
K load-on-startup -> in der Servlet Klasse Allgemeines EE 6
G Objekt an Servlet übergeben - oder Objekt global definieren? Allgemeines EE 4
W Was bei Servlet-Entwicklung alles beachten? Allgemeines EE 8
R Zugriff auf Filter Servlet Allgemeines EE 10
I JBOSS Jsp Files Pfad im Servlet? Allgemeines EE 4
N Servlet-Request abbrechen? Allgemeines EE 3
D Java Servlet mit Radio Buttons Allgemeines EE 2
G Servlet debugging Allgemeines EE 8
N Thread von Servlet aus starten Allgemeines EE 16
N JSP: Collection im Servlet überwachen (mit AJAX)? Allgemeines EE 5
J Socket daten darstellen per jsp,servlet Allgemeines EE 2
W servlet über https Allgemeines EE 2
B Parameterübergane von Servlet an JSP funktioniert nicht ? Allgemeines EE 2
M Aus einem Servlet auf ein anderes zugreifen ? Allgemeines EE 2
G Servlet Serializable Allgemeines EE 2
B Servlet-Api.jar auf JBoss? (Migration von Tomcat zu JBoss) Allgemeines EE 4
H Servlet - Importieren von Code Allgemeines EE 2
P Java Servlet - Umgang mit Verlinkungen Allgemeines EE 7
M Wert aus Servlet an normale Klasse übergeben Allgemeines EE 2
E Servlet soll JFRame öffnen. Jframe.setvisible schlägtfehl Allgemeines EE 2
M servlet --> jsp - problem beim umstrukturieren Allgemeines EE 5
D Servlet Problem über Server Allgemeines EE 26
L sessions mit servlet oder jsp ? Allgemeines EE 9
B JSF - Servlet mit Parametern über einen Link öffnen Allgemeines EE 3
D Binärdaten im Servlet entgegen nehmen, aber wie? Allgemeines EE 5
T Servlet-Instanzen und ServletContext Allgemeines EE 2
L speichern von daten mittels servlet in xml Allgemeines EE 8
N Collection überwachen (Servlet + AJAX) Allgemeines EE 3
N Liste mit Checkboxen an Servlet übergeben? Allgemeines EE 3

Ähnliche Java Themen


Oben