Servlet Servlet wird nicht angesprochen

F.S.WhiTeY

Bekanntes Mitglied
Moin ihr lieben,


ich versuche gerade eine PDF-Datei aus einem Servlet zu streamen. Die Art und Weise wie ich da vorgehen muss ist mir eigentlich bekannt und ich habe das ganze auch schon für JFreeChart umgesetzt (BufferedImage) aber irgendwie will dieses Servlet nicht angesprochen werden.

Ich benutze flyingsaucer-R8 und IText für die PDF-Generierung aus einer xhtml-Datei.
Allerdings sollte es damit nichts zu tun haben, denn das Servlet wird noch nicht mal ansatzweise angesprochen.
Gemerkt habe ich das dadurch, das der
Code:
System.out.println("ENTER PDF SERVLET");
nicht auf der Console auftaucht.
Eine Exception wird auch nicht geschmissen, es passiert eigentlich garnichts, von einem HTML 404 mal abgesehen.

Hier mal was zum anschauen.

Servlet-Code:
Java:
package de.klientsoftware.statistik;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.lowagie.text.DocumentException;
import java.io.OutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.xhtmlrenderer.pdf.ITextRenderer;

/**
 *
 * @author david
 */
public class ExportToPDFServlet extends HttpServlet {

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     * 
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException{
        System.out.println("ENTER PDF SERVLET");
        OutputStream out = response.getOutputStream();
        String filename = request.getPathInfo().substring(1);
        String inputFile = request.getServletContext().getRealPath("/web/faces/user/"+filename);
                        
        try {
            
            response.setContentType("application/pdf");
            ITextRenderer renderer = new ITextRenderer();
            renderer.setDocument(inputFile);
            renderer.layout();
            renderer.createPDF(out);
            
            
         
        }catch(DocumentException dexp){
            Logger.getLogger(ExportToPDFServlet.class.getName()).log(Level.SEVERE, null, dexp);
        }finally {            
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}


Registrierung und Mapping in der web.xml:
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<!--Der ganze Kram davor -->

<servlet>
<servlet-name>ImageStreamServlet</servlet-name>
<servlet-class>de.klientsoftware.statistik.ImageStreamServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet>
<servlet-name>ExportToPDFServlet</servlet-name>
<servlet-class>de.klientsoftware.statistik.ExportToPDFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<!--Andere Servlets dazwischen -->

<servlet-mapping>
<servlet-name>ImageStreamServlet</servlet-name>
<url-pattern>/ImageStreamServlet/*</url-pattern>
</servlet-mapping>


<servlet-mapping>
<servlet-name>ExportToPDFServlet</servlet-name>
<url-pattern>/ExportToPDFServlet/*</url-pattern>
</servlet-mapping>

<!-- und der ganze rest den mann so braucht -->
[/XML]

Ich habe die beiden Servlets gepostet, weil ich darauf aufmerksam machen wollte, das ich bei dem zweiten servlet nichts anderes gemacht habe als bei dem ersten für die Bilder.


Einbinden in die JSF-Page:

Variante 1:
HTML:
<iframe id="pdf" src="/ExportToPDFServlet/statistik.xhtml" frameborder="0" width="500px" height="500px" type="application/pdf">

                       Sowas aber auch! Kein IFrame-Support? 

</iframe>

Variante 2:
HTML:
<object id="pdf" border="0" width="100%" height="100%" type="application/pdf" data="/ExportToPDFServlet/statistik.xhtml">

Sowas aber auch! Kein PDF-Viwer installiert?? 
    
</object>

Variante 3:
HTML:
<a href="/ExportToPDFServlet/statistik.xhtml" > Her mit der PDF!!! </a>


Egal was ich mache, es wird kein GET auf das Servlet abgesetzt...

Jemand eine Idee ?

:(


LG

David

EDIT:

Ich habe noch folgende versucht:
HTML:
<h:commandLink value="HER DAMIT MAN!" action="/ExportToPDFServlet/statistik.xhtml" />

Wobei mir der server sagt:

WARNUNG: JSF1090: Navigations-Fall wurde für Komponente j_idt42 nicht aufgelöst.

j_idt42 ist dann wohl der commandLink ohne id.
 
Zuletzt bearbeitet von einem Moderator:

F.S.WhiTeY

Bekanntes Mitglied
Noch mal ein zusätzlicher hinweis: Wenn ich lustiger weise mal zum spaß ein
Code:
<h:graphicImage value="/ExportToPDFServlet/statistik" />
absetze, wird das Servlet angesprochen, schmeißt aber natürlich eine Exception :D

NUN bin ich ganz durch den Wind :rolleyes:
 

freez

Top Contributor
Hast du schon mal versucht den URL im Browser direkt einzugeben? Das wäre der erste Schritt um zu testen, ob es grundsätzlich geht, bevor du versuchst über relative Pfade in Webseiten drauf zu kommen.


[EDIT]Bist du dir sicher, dass du deine System.out.println sehen kannst? Ggfs. im Standardkonstruktor mal ein System.out.println ausgeben.[/EDIT]
 
Zuletzt bearbeitet:

F.S.WhiTeY

Bekanntes Mitglied
Moin,

danke für deine Antwort.

Hast du schon mal versucht den URL im Browser direkt einzugeben?

Da bin ich gestern dann auch noch drauf gekommne. Allerdings hatte ich um 2:30AM keine Muse mehr hier zu posten. Der Fehler war schlicht und einfach, das meine URL im Browser so auszusehen hat:
localhost:8080/web/faces/ordner/datei.endung

Das Servlet wird also über
Code:
/web/ExportToPDFServlet/datei.endung
angesprochen. Bei einem
Code:
h:graphicImage
aus dem Context heraus geht das natürlich automatisch, allerdings wenn man standard HTML benutzt sollte man dann schon standard Pfade verwenden.

Kurz um: ein /web/ vor die Pfade und es geht... manchmal hilft Nachdenken .. :bloed:

Dafür habe ich nun ein Problem mit dem Parsen der xhtml-Dateien aber naja.. das wird schon.

Danke

LG

David
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Servlet wird nicht gefunden - HTTP Error 503 Web Tier 7
Z Servlet Response HTTP-Status 200 wird nicht übertragen Web Tier 3
I servlet: init wird auch nach ServletException aufgerufen Web Tier 3
E Java Servlet doPost request, Mehrere Parameter mit demselben Namen aus Tabellenzeilen Web Tier 2
R servlet-mapping führt zu 404-Fehlern Web Tier 0
B Servlet mit TomCat9 Web Tier 0
A redirect mit servlet-mapping in web.xml Web Tier 4
J Wie Mouse Event in Servlet einbinden? Web Tier 1
D JSF Servlet Mapping Web Tier 3
J Session Servlet - JavaScript Web Tier 6
D Servlet 1 Servlet für alles - Wie Cookies per Ajax? Web Tier 1
S Problem mit Checkboxen im Servlet erkennen Web Tier 3
Todesbote Servlet MVC Design Pattern Web Tier 1
A Anfänger-Frage Servlet/Applet/JSP Web Tier 0
Shams Allgemeine Verständnisfrage zum Thema Servlet (in Vaadin) Web Tier 2
H File Output Servlet Web Tier 6
I vTiger Astersik Connector: NO JSP Support for , did not find org.apache.jasper.servlet.JspServlet Web Tier 0
OnDemand Servlet oder JSP Web Tier 12
H Servlet/JSP und OSGI Web Tier 2
L Servlet Datenbank Web Tier 0
D Java EE Servlet login Problem Web Tier 1
W Servlet SPEICHERN UNTER-Dialog für mehrere Dateien Web Tier 4
A Faces Context nicht mehr erreichbar nach Servlet Aufruf Web Tier 1
S Java Bean und Java Servlet Web Tier 2
D Servlet Servlet Weiterleitung static html Web Tier 5
G GWT 404 - Servlet nicht gefunden Web Tier 6
H Applet wirft AccessControlException bei File von Servlet Web Tier 3
H Servlet lässt sich nicht deployen Web Tier 7
C Kommunkation Servlets/Browseraufruf Servlet Web Tier 4
J Servlet Zugriff Servlet Web Tier 11
A JSON von JavaScript an Servlet Web Tier 9
K Servlet + JSP: JSP-Seite ein Array/ArrayList überliefern vom Controller-Servlet Web Tier 8
0 Servlet.Properties Web Tier 3
P Servlet Wo gibt es das javax.servlet.Servlet? Web Tier 2
H Servlet Servlet nimmt HTTP-GET mit Parameter entgegen Web Tier 2
5 Bild Pfad Servlet Web Tier 2
D Datenbankzugriff im Servlet Web Tier 5
H Servlet Apache Geronimo: Servlet nicht erreichbar Web Tier 2
S Ich brauche Buchempfehlung über JSP und Servlet Web Tier 2
A Parameterübergabe an Servlet und Aufruf von Servlets per Java Code Web Tier 7
S Auswahl eine Zeile von einer HTML Tabelle im Servlet Web Tier 4
K Servlet URL Mapping Web Tier 3
S ClassPath für Servlet Web Tier 3
reibi Servlet Logging - Standard Servlet Web Tier 5
K Portlet, Servlet doGet und doPost Web Tier 4
reibi Servlet Alleinlaufendes Servlet bauen Web Tier 6
lukas24680 Servlet pro Request Web Tier 2
C Pageing mit JSp&Servlet Web Tier 5
D JSP JSP integriert ein Servlet... Wie? Web Tier 7
I Servlet vor Browser URL-Direktzugriff schützen Web Tier 3
N Servlet ausführen Web Tier 26
B statische Html Seite als response erhalten (Servlet) Web Tier 3
A javax/servlet/jsp/jstl/core/Config Web Tier 1
F Servlet mapping ;-) Web Tier 3
H Servlet Mapping mit JSF Web Tier 8
B (JSP)+(Struts2)+(Servlet) Konfiguration web.xml Web Tier 2
W MVC mit Bean, JSP und Servlet Web Tier 6
T Button im Servlet - Werte übergeben Web Tier 2
J werte per post an servlet übergeben und auswerten Web Tier 3
ruutaiokwu HttpServletRequest-instanz in servlet und JSP unterschiedlich? Web Tier 5
T Bild durch anderes Bild ersetzen mit Servlet Web Tier 3
E Mein erstes Servlet Web Tier 8
S Servlet automatisch aufrufen Web Tier 2
J Kommunikation zwischen Servlet und EJB Web Tier 6
C Image in Servlet Web Tier 2
S Servlet File Upload (API oder JSPSmart download) Web Tier 4
N API Nutzung SERVLET Web Tier 12
J Memory Leak in Servlet nach längere Laufzeit Web Tier 6
ruutaiokwu template engine gesucht ohne abhängigkeit zum servlet container Web Tier 2
G Servlet Ausgabe richtig benutzen Web Tier 4
W Servlet auf sich selbst verweisen lassen (Anfängerfrage) Web Tier 6
M Servlet Ausführungsfehler Web Tier 4
D Servlet alle 6h ausführen Web Tier 5
M Servlet & JSP Organisation Web Tier 2
J seltsames Auslastungsproblem bei Servlet Web Tier 7
ruutaiokwu JSF - läuft ausserhalb des servlet-containers? Web Tier 5
R Direkten Servlet-Aufruf verhindern (JSP) Web Tier 3
K Formularweiterleitung an Servlet Web Tier 5
N Servlet: Problem mit getParameterValues Web Tier 4
J Dateiupload- Servlet Web Tier 14
H Probleme beim Aufrufen von Java- oder Servlet-Methoden aus Javascript Web Tier 2
G Kommunikation Servlet + Applikation Web Tier 4
megachucky Welche Servlet-Version benötigt GWT 2.0? Web Tier 13
X Servlet Select box Web Tier 6
S Java Servlet Content Type Web Tier 3
E Servlet zum speichern einer Datei in einer Datenbank Web Tier 3
M Servlet neuladen Web Tier 2
H Wie wurde ein Servlet aufgerufen Web Tier 2
J Servlet soll XML ausgeben und Javascript soll dieses einlesen Web Tier 3
H servlet fehlermeldung Web Tier 3
W JSP/Servlet Web Applikation programmierung Web Tier 9
J Faces response aus einem anderen Servlet heraus rendern Web Tier 4
E Servlet mit einem Link aufrufen? Web Tier 13
D Servlet FacesServlet is not available und Web Tier 3
S servlet bedienen mit get und post parameter Web Tier 10
S Laden von globalen Resourcen im Servlet Container..? Web Tier 3
T JBoss + Servlet + HTML Fileupload + Encoding Web Tier 1
2 Servlet: Pfad zu Webcontent Web Tier 6
J Servlet Sicherheit Web Tier 4
J struts2: vom value stack zum servlet Web Tier 14

Ähnliche Java Themen

Neue Themen


Oben