Servlet läuft in Eclipse, aber nicht im Browser

Diskutiere Servlet läuft in Eclipse, aber nicht im Browser im Allgemeines EE Forum; Wie oben versprochen hab mein code ein wenig modifiziert.D.h Kritik wird erwünscht) <p align=center><b><span style="font-size:11pt;...

  1. Dimax
    Dimax Mitglied
    Wie oben versprochen hab mein code ein wenig modifiziert.D.h Kritik wird erwünscht)
    Code (Java):

    <p align=center><b><span style="font-size:11pt; font-weight:bold;">W&auml;hlen Sie eine Datei mit Programmen aus</span></b><br></p>
    <FORM ENCTYPE="multipart/form-data" ACTION="Programmehinzufuegen.jsp"
        METHOD=POST>
        <table border="0" align="center" rules="groups" cellspacing="11">
            <tbody>
                <tr>
                    <td align="right">Source-Datei: </td>
                    <td align="left"><INPUT NAME="file" TYPE="file" class="file"></td>
                </tr>
                <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></td>
                </tr>
                <tr><td></td></tr>
                <tr><td></td></tr>
                <tr>
                    <td></td>
                    <td align="left"><b><INPUT TYPE="submit" VALUE="hinzuf&uuml;gen"></b></td>
                    <td></td>
                    <td></td>
                </tr>          
                <tr>
                    <td></td>
                    <td align="right"><a href="Projektorganisation.jsp"><b><input type="button" name="zurueck" value="Zur&uuml;ck"></input></b></a>
                    <td></td>
                </tr>
            </tbody>
        </table>
    </FORM>

    <%
        String contentType = request.getContentType();

        if ((contentType != null)
                && (contentType.indexOf("multipart/form-data") >= 0)) {

            DataInputStream in = new DataInputStream(
                    request.getInputStream());    
            int formDataLength = request.getContentLength();
            byte dataBytes[] = new byte[formDataLength];
            int byteRead = 0;
            int totalBytesRead = 0;

            while (totalBytesRead < formDataLength) {
                byteRead = in.read(dataBytes, totalBytesRead,
                        formDataLength);
                totalBytesRead += byteRead;
            }in.close();
            boolean GesamtErgebniss = true;
            int projekt_id_int = 0;
            int programm_id_int = 0;
            String Projekt_ID = null;
            String file = new String(dataBytes);
            String ProgrammBeschreibung = "";
            String ProjektBeschreibung = "";
            String textfile = "";
            String Datenbank = "sasco";  
           
            Statement st = null;
            Statement st1 =null;
            ResultSet rs = null;
            ResultSet rs1 =null;
           
            if (file.indexOf("name=\"SelectDropDown\"") != -1) {
                String Ausgewaehlt = file.substring(
                        file.indexOf("name=\"SelectDropDown\"") + 22,
                        file.indexOf("name=\"SelectDropDown\"") + 26);

                Projekt_ID = Projekte2[Integer.parseInt(Ausgewaehlt.trim()) - 1][1];
                ProjektBeschreibung = Projekte2[Integer.parseInt(Ausgewaehlt.trim()) - 1][0];
                projekt_id_int = Integer.parseInt(Projekt_ID.trim());
                int PROGname = file.indexOf("name=\"file\"");
                String progName=file.substring(PROGname+23,file.indexOf("\"",PROGname+23));
                System.out.println(progName);                                  
                String FlagImProgramm="ADD ";
                String Datei="";
                String FileName="";
                String sSql = "SELECT max(programm_id) + 1 FROM sasco.programm";
                            try (Connection cn=MYSQLparameter.eureVerbindungMeinHerr();){
                               
                                String data =new String (dataBytes)    ;
                                String tempData=new String("");
                                System.out.println("Datei enthält "+data.length()+" Zeichen");
       
                                            for(int b=0;b<(data.length()-7);b++){
                                               
                                                String     tempFlag=data.substring(b,b+4);
                   
                                                    if(tempFlag.equals(FlagImProgramm)){                                                                                                  
                                                        if(data.indexOf("ADD ",b+4)!=-1){
                                                            tempData=data.substring(data.indexOf("ADD ",b),data.indexOf("ADD ",b+4));
                                                           
                                                            b=data.indexOf("ADD ",b+4)-6;
                                                           
                                                        }
                                                        else if(data.lastIndexOf("%MEND")!=-1){
                                                           
                                                            tempData=data.substring(data.indexOf("ADD ",b),data.lastIndexOf("%MEND")+7);
                                                           
                                                          }
                                                            else{
                                                               
                                                                tempData=data.substring(data.indexOf("ADD "),data.lastIndexOf("RUN;")+6);
                                                               
                                                            }
                                                        try {      
                                                                                                                                               
                                                            FileName=tempData.substring(11,19)+".txt";
                                                            ProgrammBeschreibung=tempData.substring(11,19);
                                                            File fileT=new File(FileName);
                                                            FileWriter fw=new FileWriter(fileT);
                                                            fw.write(tempData);
                                                            fw.close();                                                                                                                                                                                                                                                              
                                                            try {                                                              
                                                                    st = cn.createStatement();
                                                                    rs = st.executeQuery(sSql);
                                                                    programm_id_int = 1;
                                                                while (rs.next()) {
                                                                    programm_id_int = Integer.parseInt(rs.getString(1).trim());
                                                                }
                                                            } catch (Exception ex) {ex.getStackTrace();}                          
                                                                               
                                            if (projekt_id_int != 0 && programm_id_int != 0 ) {
                                                                                                                   
                                                boolean Ergebniss = false;                                                                                  
                                                       
                                                Ergebniss = SpeicherungInMYSQL.SpeicherungDesProgramms(Datenbank,
                                                        projekt_id_int, programm_id_int, ProgrammBeschreibung);
                                                if (Ergebniss == false){
                                                    out.println("ACHTUNG: Fehler beim Speichern des Programms: "+ ProgrammBeschreibung);
                                                    GesamtErgebniss = false;
                                                    }
                                               
                                                String[][] Werte = Analyse.ZeilenBestimmen(tempData);
                                                String OHNEKom1 = Analyse.EntferneKommentarTyp1(tempData);
                                                Ergebniss=SpeicherungInMYSQL.SpeicherungDerZeilen(Datenbank,
                                                        projekt_id_int, programm_id_int, Werte);
                                                if (Ergebniss == false){
                                                    out.println("ACHTUNG: Fehler beim Speichern der Zeilen: " + ProgrammBeschreibung);
                                                    GesamtErgebniss = false;
                                                    }
                                                else {
                                                    String[][] OHNEKom2 = Analyse
                                                            .EntfernungVonKommentarVomTyp2(OHNEKom1, Werte);
                                       
                                                    int AnzahlDerStatements = Werte.length;
                                       
                                                    Ergebniss=SpeicherungInMYSQL.SpeicherungVonStatements(Datenbank,
                                                            projekt_id_int, programm_id_int, OHNEKom2);
                                                    if (Ergebniss == false){
                                                        out.println("ACHTUNG: Fehler beim Speichern der Statements: "+ProgrammBeschreibung );
                                                        GesamtErgebniss = false;
                                                        }
                                                    else {
                                       
                                                        String[][] KommentarVonTyp1 = Analyse.EntferneCodeUndTyp2(
                                                                tempData, Werte);                                          
                                                        Ergebniss=SpeicherungInMYSQL.SpeicherungKommentarVonTyp1(Datenbank,
                                                                projekt_id_int, programm_id_int, KommentarVonTyp1);
                                                       
                                                        if (Ergebniss == false){
                                                            out.println("ACHTUNG: Fehler beim Speichern der Kommentare vom Typ 1: "+ProgrammBeschreibung );
                                                            GesamtErgebniss = false;
                                                            }
                                           
                                                        String[][] KommentarVonTyp2 = Analyse
                                                                .ErmittlungderKommentareVomTyp2(OHNEKom1, Werte);                                      
                                                        Ergebniss=SpeicherungInMYSQL.SpeicherungKommentarVonTyp2(Datenbank,
                                                                projekt_id_int, programm_id_int, KommentarVonTyp2);
                                                       
                                                        if (Ergebniss == false){
                                                            out.println("ACHTUNG: Fehler beim Speichern der Kommentare vom Typ 2: " +ProgrammBeschreibung);
                                                            GesamtErgebniss = false;
                                                        }                              
                                                        try{
                                                        String[][] tokenstabelle = Analyse.BildungderTokens(
                                                                OHNEKom1, Werte);
                                                        Ergebniss=SpeicherungInMYSQL.SpeicherungDerTokens(Datenbank,
                                                                projekt_id_int, programm_id_int, tokenstabelle);
                                                        }catch(ArrayIndexOutOfBoundsException e){e.getStackTrace();}
                                                       
                                                        if (Ergebniss == false){
                                                            out.println("ACHTUNG: Fehler beim Speichern der Token: " +ProgrammBeschreibung);
                                                            GesamtErgebniss = false;
                                                            }
                                                        else {
                                                            Ergebniss=SpeicherungInMYSQL.AufrufenderProzeduren(Datenbank,
                                                                    projekt_id_int, programm_id_int);
                                                            if (Ergebniss == false){
                                                                out.println("ACHTUNG: Fehler beim Ausführen der Prozeduren:" +ProgrammBeschreibung);
                                                                GesamtErgebniss = false;                                                      
                                                            }
                                                        }
                                                    }
                                                }
                                                Ergebniss=SpeicherungInMYSQL.SpeichernSteps(tempData,programm_id_int,projekt_id_int);
                                                if(Ergebniss==false){
                                                    System.out.println("Fehler beim SpeichernSteps "+programm_id_int);
                                                }
                                                else{
                                                    //System.out.println("SpeichernSteps ist ok "+programm_id_int);
                                                }
                                                Ergebniss=SpeicherungInMYSQL.SpeichernMacroDaten(projekt_id_int, programm_id_int, tempData);
                                               
                                                if(Ergebniss==false){System.out.println("Fehler beim SpeichernMacroDaten");}
                                                else{//System.out.println("Speichern MacroDaten ist ok");
                                                }                      
                                                            System.out.println("Erstellt-----"+FileName);                                                      
                                                            tempData="";                                                                                                  
                                                            }
                                                        } catch(Exception e){e.printStackTrace();System.out.println(ProgrammBeschreibung);}                          
                                                    }
                                                }      
                                cn.close();
                            }catch(Exception e) {System.out.println(e.getMessage()+"hinzufüg");}
            }
    }      
    %>
    </body>
    <div class="footer"></div>
    </html>
     
     
  2. mrBrown
    mrBrown Super-Moderator Mitarbeiter
    Das gilt immer noch:

    Und wenn die Einrückung so aussieht:
    Code (Text):
                                                                //code
    Sollte man da ganz schnell was ändern...
     
  3. Dimax
    Dimax Mitglied
    Ja dass stimmt,da kann man ein paar Zeilen auslagern aber nicht viel,weil eigentlich ist diese Seite dafür gedacht um
    mögliche Fehler bei Datenverarbeitung aufzulisten und deswegen 20 Zeilen auslagern in eine separate Klasse um die dann wieder einholen lohnt sich nicht.Gebe zu ist auch keine Profi Lösung..mit der Zeit wird es aber).
     
  4. mrBrown
    mrBrown Super-Moderator Mitarbeiter
    Das klingt jetzt echt hart, aber der Code ist wirklich schlecht.

    Das Auslagern in eine Klasse wäre ein zwingend nötiger Schritt, damit man da irgendwas dran verbessern kann.
     
  5. mihe7
    mihe7 Bekanntes Mitglied
    1. 20 Zeilen?!? Du hast etwa 200 Zeilen Java-Code in der JSP, die alles mögliche machen, vom Request einlesen bis zur DB-Abfrage.
    2. Das lohnt sich schon deswegen, weil es die Lesbarkeit drastisch erhöht.
    Da ist ein Tippfehler, das muss fiasco.programm heißen :p
     
  6. Dimax
    Dimax Mitglied
    Ja Ja..gibs noch bessere Vorschläge für Programm Nammen? ))
     
  7. mihe7
    mihe7 Bekanntes Mitglied
    Nein, die sonst passen würden klingen alle nicht so gut (https://synonyme.woxikon.de/synonyme/fiasko.php)

    Um nochmal zum Thema zurück zu kommen: ich würde z. B. den unteren Teil in ein Servlet verschieben, dann kannst Du per @MultipartConfig annotieren und einfach auf die Parts bzw. Parameter zugreifen: https://docs.oracle.com/javaee/6/tutorial/doc/glraq.html

    Nach getaner Arbeit kannst Du das Ergebnis in Form von Attributen in den Request legen und diesen an das JSP weiterleiten.

    Der Rest wäre natürlich weiter zu strukturieren, da stellt es einem wirklich die Zehennägel auf.
     
    Dimax gefällt das.
  8. Dimax
    Dimax Mitglied
    Wenn das hier nicht Provozieren würde(Bild)
     

    Anhänge:

    • Hmm.png
      Hmm.png
      Dateigröße:
      49,9 KB
      Aufrufe:
      25
  9. mihe7
    mihe7 Bekanntes Mitglied
    Was soll das sein bzw. werden?
     
  10. Dimax
    Dimax Mitglied
    ist noch in der Entwicklung im Moment sieht so aus
    Code (Java):

    %>  
    <br><br><div >
    <iframe width=49% height="500" align="left" frameborder="1" src="<!--kommt noch etwas rein-->"></iframe>
           
    <iframe width=49% height="500" align="right" frameborder="1" src="DatenbankStatistik.jsp"></iframe>
            </div>
           
    <%
     
    bin immer noch bei dem Bilder senden und empfangen(
     
  11. Wenn du Java lernen möchtest, empfehlen wir dir diese Online-Training hier
Die Seite wird geladen...

Servlet läuft in Eclipse, aber nicht im Browser - Ähnliche Themen

JSF - läuft ausserhalb des servlet-containers?
JSF - läuft ausserhalb des servlet-containers? im Forum Web Tier
Servlet (Bilder aus Datenbank liefern) läuft nur einige Zeit
Servlet (Bilder aus Datenbank liefern) läuft nur einige Zeit im Forum Allgemeines EE
Unterschied zwischen JSP & Servlet gegenüber REST mittels JAX-RS
Unterschied zwischen JSP & Servlet gegenüber REST mittels JAX-RS im Forum Allgemeines EE
redirect mit servlet-mapping in web.xml
redirect mit servlet-mapping in web.xml im Forum Web Tier
URL Servlet Request getParameter
URL Servlet Request getParameter im Forum Allgemeines EE
Thema: Servlet läuft in Eclipse, aber nicht im Browser