Servlet läuft in Eclipse, aber nicht im Browser

mihe7

Top Contributor
Mein request besteht aus 3 Parts,die Eigentlich nur die Strings enthalten aber werden mit input Stream übertragen?
Das steht doch alles in dem Link, den ich Dir vorhin geschickt habe: auf die Formularfelder greifst Du über request.getParameter zu, den file-Part liest Du über InputStream aus.

Deine restlichen Fragen sollten sich damit erübrigt haben.
 

Dimax

Top Contributor
Danke mihe7 für
auf die Formularfelder greifst Du über request.getParameter zu
in dem link wollte ich so was nicht ,nur um programmnahme zu ermitteln
Code:
private String getFileName(final Part part) {
   final String partHeader = part.getHeader("content-disposition");
   LOGGER.log(Level.INFO, "Part Header = {0}", partHeader);
   for (String content : part.getHeader("content-disposition").split(";")) {
       if (content.trim().startsWith("filename")) {
           return content.substring(
                   content.indexOf('=') + 1).trim().replace("\"", "");
       }
   }
   return null;
Typisch Oraclisch ,machen so damit die anderen 20 Zeilen Code 3 Stunden studieren.
Durch dein Hinweis habe 30 Zeilen Code gespart und jetzt sieht es so aus
Java:
@WebServlet("/daten.einlesen/FileReader")
@MultipartConfig
public class FileReader extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       
        final Part partFile=request.getPart("file");
        final Part partProg=request.getPart("progra_name");
        final Part partProj=request.getPart("SelectDropDown");
        long sizeFile=partFile.getSize();
        long sizeProg=partProg.getSize();
        long sizeProj=partProj.getSize();
        final PrintWriter out=response.getWriter();

        if ((sizeFile >0)&& (sizeProg > 0)&&(sizeProj>0)) {
            DataInputStream in = new DataInputStream(
                    partFile.getInputStream());
           
            byte dataBytes[] = new byte[(int)sizeFile];
            int byteRead = 0;
            int totalBytesRead = 0;
            while (totalBytesRead < sizeFile) {
                byteRead = in.read(dataBytes, totalBytesRead,
                        (int)sizeFile);
                totalBytesRead += byteRead;
            }
            String files =new String(dataBytes);
            String Projekt_ID =request.getParameter("SelectDropDown");
            int projekt_id_int = 0;
            int programm_id_int = 0;
            String ProgrammBeschreibung =new String(request.getParameter("progra_name"));
            projekt_id_int = Integer.parseInt(Projekt_ID);
            //System.out.println(Projekt_ID+" | "+ProgrammBeschreibung+" | "+files);
                String sSql = "SELECT max(programm_id) FROM fantastico.programm";
                Connection cn=ComboPoole.getInstance().getConnection();
 

mihe7

Top Contributor
OMG, vergib @Dimax, denn er wusste nicht, was er tat.

Der Browser gibt beim Request den Dateinamen mit. Diesen kannst Du mit dem Stück Code, das Du weggelassen hast, auslesen. Wenn Dich der nicht interessiert, dann kannst Du natürlich auf den Code verzichten.

Übrigens: die Zeilen
Java:
        final Part partProg=request.getPart("progra_name");
        final Part partProj=request.getPart("SelectDropDown");
        long sizeProg=partProg.getSize();
        long sizeProj=partProj.getSize();
kannst Du Dir sparen. Und räum' Deinen Code mal auf (das ist ja wie bei Kindern mit dem Zimmer :p).
 

mihe7

Top Contributor
Das darf nicht gespart werden
Du kannst oben gleich die Parameter auslesen, auf Gültigkeit prüfen und unten wiederverwenden.

Zum Beispiel:
Java:
String programName = request.getParameter("progra_name");
if (programName == null || programName.isEmpty()) {
    return;
}

Du kannst Dir auch für die Parameter ein Helferlein schreiben, das bestimmte Umwandlungen macht.
 

Dimax

Top Contributor
Alles falsch gemacht )).Den ganzen Tag gesessen um ein Bug zu reparieren((
Falls ein Projekt gelöscht wird ,dann der nächste bekommt max+1 Id in DB
und wenn ich ein Programm speichern möchte und wähle dafür Integer.parseInt(anfrage.getParameter("SelectDropDown")
dann wird dem Programm nur die Folgenummer vom select mitgegeben und nicht die Id aus der DB.
also habe erst alle Projekte ermittelt und dann aus dem Array die ID anhande der Folgenummer ermittelt.
Java:
String[][] Projekte2 = AuswahlAusMYSQL.ErmittlungDerProjekte();
String Projekt_ID=Projekte2[Integer.parseInt(anfrage.getParameter("SelectDropDown"))-1][1];
Jetzt bin ich stolz auf mich ,darf Feierabend machen)
 

mrBrown

Super-Moderator
Mitarbeiter
Falls ein Projekt gelöscht wird ,dann der nächste bekommt max+1 Id in DB
Warum musst du die nächste ID wissen, lass das doch die DB selbst regeln?
mit max+1 kannst du Probleme bekommen, wenn man Projekte löscht - u.U. werden dann IDs mehrmals vergeben

Hältst du das wirklich für einen sinnvollen Parameter-Namen? ;)

dann wird dem Programm nur die Folgenummer vom select mitgegeben und nicht die Id aus der DB.
Was ist für dich eine "Folgenummer vom select"?

also habe erst alle Projekte ermittelt und dann aus dem Array die ID anhande der Folgenummer ermittelt.
Nur um die ID zu bekommen ist das aber etwas umständlich, warum nicht einfach nur die letzte ID selecten?
 

mihe7

Top Contributor
@mrBrown Ich ahne Böses. Wenn ich es richtig verstehe, erhält er von "SelectDropDown" praktisch einen Array-Index und jetzt versucht er, über diesen die Verknüpfung zum Projekt herzustellen... @Dimax sollte das so sein, dann hast Du keinen Bug behoben, sondern den nächsten eingebaut.
 

Dimax

Top Contributor
Warum musst du die nächste ID wissen, lass das doch die DB selbst regeln?
Wenn ich neues Projekt einlege gibt die DB mit autoincrement die nachste freie und nicht die erste freie.
Hältst du das wirklich für einen sinnvollen Parameter-Namen?
für mich ist es ok. So weiß ich das ich die Projekt ID aus der jsp ,wo select im formular ist,bekomme.
Was ist für dich eine "Folgenummer vom select"?
Wenn ich ein Projekt auswähle wo ich ein Programm speichern möchte ,wird mir mit dem form die Reihenfolge Nummer vom select mit dem Parameter "SelctDropDown" über gegeben.
warum nicht einfach nur die letzte ID selecten?
Weil wenn ich ein Programm in DB speichern möchte ,kann ich beliebige Projekt id wählen und nicht immer die letzte.
 

Dimax

Top Contributor
erhält er von "SelectDropDown" praktisch einen Array-Index
Ich habe hier mein Code vom select schon mal gezeigt ,im select werden alle Projekte aufgelistet und zur Auswahl gestellt,wo man sein Programm "rein stellen" möchte,und so bekomme ich mit, die Folge Nummer ,so wie die Projekt IDs in der DB auch stehen.Habe lange überlegt wie ich die ID her kriege,kann sein das ich es falsch mache,wenn du was besseres raten würdest wäre super.
 

mrBrown

Super-Moderator
Mitarbeiter
Wenn ich neues Projekt einlege gibt die DB mit autoincrement die nachste freie und nicht die erste freie.
Na und? Wenn das für die DB die passende ID ist, warum sollte man dann reinpfuschen? (Nächste freie und erste freie sind für mich identisch, meinst du erste und zweite freie?)

für mich ist es ok. So weiß ich das ich die Projekt ID aus der jsp ,wo select im formular ist,bekomme.
Und glaubst du, in ein paar Wochen hast du noch die geringste Ahnung, was das meint? ;) oder der nächste, der an dem Projekt arbeitet, hat irgendeine Ahnung davon?

Wenn ich ein Projekt auswähle wo ich ein Programm speichern möchte ,wird mir mit dem form die Reihenfolge Nummer vom select mit dem Parameter "SelctDropDown" über gegeben.
Weil wenn ich ein Programm in DB speichern möchte ,kann ich beliebige Projekt id wählen und nicht immer die letzte
Mir schwant böses...das Dropdown gibt dir den Index des Projekts zurück?

Bitte nicht! Das sollte nichts anderes als die ID zurück liefern, wenn da was anderes bei rauskommt, solltest du das dringend ändern!

(Man sollte sich vorm Posten auch die letzte Seite anzeigen lassen -.- ...)
 

mrBrown

Super-Moderator
Mitarbeiter
Dann zeig doch dein aktuelles Dropdown mal.
In dem hier irgendwo gezeigten benutzt für die ID bereits, der Code ist aber (untertrieben) ziemlich hässlich und hoffentlich nicht mehr so im Projekt.
 

Dimax

Top Contributor
Nächste freie und erste freie sind für mich identisch
Genau das ist ja das Problem,wenn ich Projekt_id 1 lösche aber noch Projekt_id 2 usw drin habe dann erste freie ist id=1 und nächste freie id=3 so mach die DB nächstes Projekt automatisch zu ID=3 und nicht zu Id 1,deswegen beim Auswahl listet DropDown Reihenfolge nach alle IDs aber die Reihenfolge Nummer und ID Nummer stimmen nicht überein.
HTML:
<FORM ENCTYPE="multipart/form-data" ACTION="ProjStatistik.jsp"
    METHOD=GET>
    <table border="0" align="center" rules="groups" cellspacing="11">
        <tbody>
            <tr><td></td></tr>
            <tr><td></td></tr>
            <tr>
                <td align="right">Projekt ID: </td>
                <td align="left"><select name="SelectDropDown" size=1 class="standard">
                        <option value=''></option>
                        <%
                            String[][] Projekte2 = AuswahlAusMYSQL.ErmittlungDerProjekte();
                            String[] Projekt_IDs = new String[Projekte2.length];
                            for (int i = 0; i < Projekte2.length;) {
                                ++i;
                                out.print("<option value=\"" + i + "\">" + Projekte2[i - 1][1] + " " + Projekte2[i - 1][0]
                                        + "</option>");
                                Projekt_IDs[i - 1] = Projekte2[i - 1][1];
                            }
                        %>
                </select><b><font color="red"> Falls kein Projekt zur Auswahl steht mussen sie einen erstellen!</font></b>
                </td></tr><tr><td></td></tr><tr><td></td></tr><tr>
                <td></td></tr><tr><td></td><td align="left"><b><INPUT TYPE="submit" VALUE="Auswerten"></b></td></tr>
                </tbody></table>
                </FORM>
 

mihe7

Top Contributor
Wenn der Anwender ein Objekt Deiner Anwendung auswählen, also identifizieren, soll, braucht er dazu die ID. Folglich gibst Du als value der Option einfach die ID aus und das Thema ist erledigt.
 

mihe7

Top Contributor

mrBrown

Super-Moderator
Mitarbeiter
Genau das ist ja das Problem,wenn ich Projekt_id 1 lösche aber noch Projekt_id 2 usw drin habe dann erste freie ist id=1 und nächste freie id=3 so mach die DB nächstes Projekt automatisch zu ID=3 und nicht zu Id 1,deswegen beim Auswahl listet DropDown Reihenfolge nach alle IDs aber die Reihenfolge Nummer und ID Nummer stimmen nicht überein.
Trenn dich von der Vorstellung, das IDs mehrmals vergeben werden können, diese irgendetwas mit einer reihenfolge zu tun haben oder überhaupt Zahlen sind.
Du solltest IDs einfach nur als beliebige, einmalige Werte ansehen.

Das die bei dir grad Zahlen sind, die hochgezählt werden, ist reines Implementierungsdetail, auf das du absolut nicht vertrauen kannst.
 

Dimax

Top Contributor
Danke Jungs für gute Ratschläge,ich mache erst mal Urlaub.Wünsche euch allen schöne Feiertage und freue neues Jahr!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Servlet (Bilder aus Datenbank liefern) läuft nur einige Zeit Allgemeines EE 12
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
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
E Servlet Wie kann ich ohne Hilfe von Eclipse in JBoss mein servlet aufrufen 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
A jsf: Servlet aufrufen, wie geht das? web.xml Fehler? Allgemeines EE 13
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
M Servlet lässt sich nicht aufrufen Allgemeines EE 6
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
L Servlet kann Funktion nicht aufrufen Allgemeines EE 3
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
K Servlet per Formular aufrufen Allgemeines EE 8
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
T Wie Datenbank und Servlet koppeln? Allgemeines EE 3
G Ladeseite anzeigen lassen während das Servlet noch arbeitet? Allgemeines EE 6
P Tomcat Servlet POST Daten als Array Allgemeines EE 2
P PDF per Servlet übertragen, danach keinen Inhalt mehr Allgemeines EE 12
N JSP kann Servlet nicht aufrufen! :-( Allgemeines EE 2
J Servlet Parameter aus web.xml übergeben, wie zugreifen? Allgemeines EE 2
L servlet.jar ? Allgemeines EE 2
K Servlet: Respone.redirect mit POST-Parametern Allgemeines EE 5

Ähnliche Java Themen

Neue Themen


Oben