Datei aus Servlet öffnen

Status
Nicht offen für weitere Antworten.

robthemobb

Mitglied
Hallo,

ich hoffe, ich bin hier im richtigen Forum gelandet.

Ich möchte gerne aus einem Servlet ein erstelltes PDF öffnen.
Momentan benutze ich dafür den befehl:

Code:
response.sendRedirect("http://www.domain.de/pdf.pdf");

den Befehl:

Code:
Desktop.getDesktop().open(new File(pdf.pdf"));

kann ich nicht nehmen da das pdf ja vom clientbrowser geöffnet werden soll. oder geht es doch?

kann mir evtl jmd sagen wie oder ob ich direkt aus dem servlet das pdf (liegt auf dem server) öffnen kann?

vg, rob
 
M

maki

Gast
Was meinst du mit "ob ich direkt aus dem servlet das pdf (liegt auf dem server) öffnen kann"?

Du kannst das PDF źum Client (Browser) streamen und dieser macht dann was er damit so macht.
 

robthemobb

Mitglied
Danke für die schnelle antwort.

Ich meine wahrscheinlich das Streamen zum Browser des Clients. Hab mich nur doof ausgedrückt.
Meine Absicht ist es, das erstellte PDF dem Client zur Verfügung zu stellen.

Ablauf ungefähr so:

Client gibt Daten in ein form ein. klappt

aus form mit Daten wird ein PDF. klappt

pdf wird auf Server gespeichert. klappt

Client soll PDF im Browser sehen. klappt nur mit redirect


Hast du da ne Idee?
 
M

maki

Gast
Klar, Ideen gibt es viele, allerdingslieferst du nur genug infos für wilde Spekulationen ;)

Welcher COntent ist denn im stream angegeben?
Wie sieht den der Code zum Streamen aus?
 

robthemobb

Mitglied
Code:
package de;

import java.awt.Desktop;
import java.io.*;
import java.util.*;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.lowagie.text.*;
import com.lowagie.text.pdf.*;

public class FormExchange extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
    public FormExchange() {
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    	PdfReader reader = new PdfReader("pdf.pdf");
		String param1 = request.getParameter("parameter1").toString();
		String param2 = request.getParameter("parameter2").toString();
		String param3 = request.getParameter("parameter3");
		String param4 = request.getParameter("parameter4");
		String param5 = request.getParameter("parameter5");

		try {
			PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("pdf.pdf"));

			AcroFields form = stamper.getAcroFields();
			form.setField("param1", parameter1 );
			form.setField("param2", parameter2 );
			form.setField("param3", parameter3 );
			form.setField("param4", parameter4 );
			form.setField("param5", parameter5);

			stamper.close();
			response.sendRedirect("http://www.domain.de/pdf.pdf");

			//Desktop.getDesktop().open(new File("pdf.pdf"));
			
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}


Das ist das Servlet. Da soll, nach dem das PDF erstellt wurde, nun ein Befehl folgen, der es öffnet.
 

robthemobb

Mitglied
Super danke, ich glaube das hilft mir schon weiter.

zwei kleine Fragen habe ich allerdings dazu:

Code:
String pdfDir = getServletContext().getInitParameter("pdf-dir");

ist das vorstehende die Anweisung nach dem Pfad "pdf-dir" zu suchen?
oder bekommt die funktion den Pfad, wo das PDF erstellt wird?

in der API habe ich es nicht verstanden.

Rob
 
M

maki

Gast
getIniParamter liefert einen Paramter, so wie er in der WEB-INF/web.xml deklariert ist.

Irgendwo wirst du ja auch definiert haben, wohin die PDFs gespeichert werden, also den Pfad zum Ordner mit den generierten PDFs.
 

robthemobb

Mitglied
nein, bis jetzt wurden die in der document root abgelegt. wusste gar nicht das ich das beeinflussen kann :D


ist das in der web.xml dann das child param-name und param-value, an dem ich den pfad angeben kann?
 
M

maki

Gast
Wenn die Dateien im root der webapp liegen brauchst du ja nicht, anber zur Info, das sind Init Parameter in der web.xml
Code:
 <web-app>
        <servlet>
            <servlet-name>MyServletName</servlet-name>
            <servlet-class>com.mycompany.MyServlet</servlet-class>
    
            <init-param>
                <param-name> param1 </param-name>
                <param-value> value1 </param-value>
            </init-param>
            <init-param>
                <param-name> param2 </param-name>
                <param-value> value2 </param-value>
            </init-param>
            ...
        </servlet>
        ...
    </web-app>
 
M

maki

Gast
>> http://www.pfadzurdatei.de/datei.pdf ist der wert

Nö, du solltest schon einen Pfad auf dem Dateisystem haben.

Mit getServletContext().getRealPath("/") solltest du den Dateisystempfad zum Context bekommen, aber (!!!) Dateien sollte die Webapp sowieso nicht im context root ablegen, ist sehr schlecht falls mal eine neue Version installiert werden soll.

Anstatt einen relativen Pfad wie
Code:
new FileOutputStream("pdf.pdf")
solltest du lieber ein Verzeichnis wählen, welches sich ausserhalb des webapps bzw tomcat_home Verzeichnisses befindet, den Pfad kannst du ja in der web.xml wie oben beschrieben angeben.
 

robthemobb

Mitglied
Danke Maki!

Hat nun alles geklappt.

Der Parameter in der web.xml hieß aber wohl 'context-param'. bei 'init-param' tat sich nichts, bzw pdfDir in der .java wurde auf null gesetzt.

rob
 
M

maki

Gast
InitParam ist für ein Servlet, ContextParam für den gesamten Context, also alle Servlets, beides geht, muss nur richtig verwendet werden ;)
 

robthemobb

Mitglied
scheint dann ja so als würde

Code:
 String pdfDir = getServletContext().getInitParameter("pdfDir");

zu

Code:
<context-param> 
                <param-name>pdfDir</param-name> 
                <param-value> value2 </param-value> 
</context-param>

gehören!?

es funktioniert ja nun. aber wie würde ich denn die andere variante angehen?
 
M

maki

Gast
Ok, soweit stimmt alles.

Was ich übersehen habe war, dass du die init param in der init() Methode abfragen soltest, aber context params gehen genauso, alles gut.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Servlet zum speichern einer Datei in einer Datenbank Web Tier 3
E Spring FileNotFoundException obwohl Datei da ist Web Tier 5
D jar datei Web Tier 12
S JSF Eine XHTML-Datei in zwei andere XHTML integrieren Web Tier 0
F JSP jSP Datei mit normalem Java Programm auslesen? Web Tier 5
S xhtml Datei & Webspace Web Tier 8
R JSF Bilder aus CSS Datei werden nicht angezeigt. Web Tier 2
M log4j2 - RollingFile Datei bleibt leer Web Tier 1
V Name und Pfad der Datei in JSF Web Tier 0
K Internationalisierung über Properties Datei Web Tier 6
M JSF JSP, Facelets und einbinden einer js-Datei Web Tier 2
H XML Datei mit Formular eingaben Füllen JSP Web Tier 7
H Relativer Pfad für XML-Datei in JSP-Anwendung Web Tier 3
Rudolf Servlet Zur Laufzeit generierte Datei zum Herunterladen anbieten Web Tier 2
S JSP Erzeugten JSP HTML-Quelltext in html-Datei speichern Web Tier 4
H Servet Datei schreiben Web Tier 6
G Deploy und undeploy - wie kann meine WAR Datei das mitbekommen? Web Tier 2
J Servlet Manuelles Rendern einer JSF Datei Web Tier 4
C JSP Datensatz mit JSP aus XML-Datei löschen Web Tier 6
A Wie in JSP lokale Datei verarbeiten? Web Tier 8
N Problem mit Datei Streaming Web Tier 2
J JSP - Datei einlesen Web Tier 15
S Lesender Zugriff auf Datei im Webprojekt Web Tier 2
I Tomcat aktualisiert CSS - Datei nur ab und zu Web Tier 4
L Unter JSP eine XML Datei erstellen Web Tier 3
J Doppeltes und-Zeichen in JSF Datei Web Tier 4
I Export in eine CSV - Datei und PDF Web Tier 5
G Externe Bibliotheken in war-Datei angeben Web Tier 8
F Log4J Konfiguration in .war Datei Web Tier 4
U access denied bei Datei Schreiben mit Java unter Linux trotz gesetzter Rechte Web Tier 2
M Datei öffnen aus JSF-Anwendung Web Tier 3
O relativer Pfad zu properties Datei Web Tier 8
M JSF: Parameterübergabe an Properties-Datei aus JSF-Tag heraus? Web Tier 4
F IE stellt tif-Datei kryptisch dar Web Tier 3
F Datei von bean aus laden Web Tier 3
G Tomcat findet angeblich die Datei nicht. Web Tier 8
M Generierte Datei an Browser senden Web Tier 8
F [servelt] datei lesen? Web Tier 5
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
F.S.WhiTeY Servlet Servlet wird nicht angesprochen Web Tier 3
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
P Servlet wird nicht gefunden - HTTP Error 503 Web Tier 7
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

Ähnliche Java Themen

Neue Themen


Oben