einfache Frage zu Servlet (Counter erzeugen)

Status
Nicht offen für weitere Antworten.

ernst

Top Contributor
Hallo allerseits,
1)
Meine Entwicklungsumgebung ist:
Netbeans IDE 5.5
Dort steht unter Tools--> Java Platform Manager:
Platform Name: jdk 1.5 (Default)
Platform Folder: C:\Programme\Java\jdk1.5.0_06
und
Standalone-Tomcat 5.5
Ich mache ein paar Testprogramme.

2)
Ich will mit dem Programm unten einen Servlet (Counter) erzeugen:
Bei jedem Aufruf der Website wird ein Zähler aus einer Datei gelesen, erhöht, wieder in die Datei geschrieben und auf dem Client ausgegeben.

Beim ersten Aufruf von:
http://localhost:8080/counter2/myCounter2
wird (wie gewünscht) auf dem Bildschirm ausgegeben:
Das Zähler Servlet wurde 256 Mal ausgegeben.
(256 habe ich einfach Mal zum Testen genommen, eignetlich müsste es 1 heissen).
Problem:
Wenn ich jetzt auf meinem Firefox-Browser auf
Ansicht --> Neu Laden
gehe, kommt wieder die _gleiche_ Meldung.
Das Zähler Servlet wurde 256 Mal ausgegeben.
Es _müsste_ aber die Meldung kommen:
Das Zähler Servlet wurde 257 Mal ausgegeben.
DasProgramm springt also nie in den if-Teil von:
if(b==true){
...

Warum?

Code:
package myPackage2;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class myCounter2 extends HttpServlet {
    int zaehler;
    RandomAccessFile myDatei = null;    
    String realerPfad;
    String pfad;
    String dateiName;
    
    public void init() throws ServletException, UnavailableException {
        boolean b;         
        File myFile;        
   
    	try{
            myFile = new File("C:\\Programme\\Apache_Tomcat\\apache-tomcat-5.5.26\\webapps\\counter2\\zaehler.txt" ,"rw");
            b = myFile.isFile();
            if(b==true){  
myDatei = new RandomAccessFile("C:\\Programme\\Apache_Tomcat\\apache-tomcat-5.5.26\\webapps\\counter2\\zaehler.txt" ,"rw");                
                zaehler = myDatei.readInt();
                zaehler++;
                myDatei.seek(0);
                myDatei.writeInt(zaehler);			                
                myDatei.close();			
            }
            // Datei existiert nicht
            else{
                zaehler=256;            
myDatei = new RandomAccessFile("C:\\Programme\\Apache_Tomcat\\apache-tomcat-5.5.26\\webapps\\counter2\\zaehler.txt" ,"rw");                
                myDatei.writeInt(zaehler);	
                myDatei.close();			                
                
            }
        }
        catch(FileNotFoundException e){
            //System.out.println("Fehler: Datei nicht vorhanden: "+e.toString());
	}
	catch(IOException e){
            //System.out.println("Fehler: Datei nicht schließbar:");
            //e.printStackTrace();
	}
    }


    
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Zähler Servlet</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Das Zähler Servlet wurde " +zaehler + " Mal aufgerufen</h1>");
        out.println("</body>");
        out.println("</html>");
        out.close();
    }

}

mfg
Ernst
 

ernst

Top Contributor
homer65 hat gesagt.:
Bei jedem Aufruf der Seite wird die Methode doGet durchlaufen, aber nicht die Methode init.
Aaaah... Das war es. Habe ewig an dem Zeug rumprobiert. Ohne deinen Hinweis hätte ich den Fehler immer wo anders gesucht und nie gefunden. Vielen Dank!!!!
Ich mache jetzt an dem Programm weiter.
Falls sich noch Fragen ergeben, werde ich sie hier stellen.

mfg
Ernst
 

ernst

Top Contributor
homer65 hat gesagt.:
Bei jedem Aufruf der Seite wird die Methode doGet durchlaufen, aber nicht die Methode init.

1)
Habe jetzt das Zurückschreiben des aktuellen Zählerstandes in die Datei in der Methode
destroy()
gemacht.
Leider wird aber nichts zurückgeschrieben, wenn ich den Tomcat mit
shutdown.bat
oder indem ich ich einfache durch Wegklicken
beende.
Warum?

2)
Warum wird in dem Servlet mit einer Anweisung wie
System.out.println("Hallo");
nichts auf dem Bildschirm ausgegeben?
Wie kann man eine Bildschirmausgabe erzwingen (wäre wichtig um z.B. bei Fehlersuche
Variablenwerte anschauen zu können)?


mfg
Ernst

Code:
package myPackage2;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class myCounter1 extends HttpServlet {
    int zaehler;
    RandomAccessFile myDatei = null;    
    String realerPfad;
    String pfad;
    String dateiName;
    
    public void init() throws ServletException, UnavailableException {
        String tempString;
        boolean b;         
        File myFile;        

        realerPfad = this.getServletContext().getRealPath("counter1");
        //pfad = realerPfad.substring(0, realerPfad.indexOf("\\counter1"));
        pfad = realerPfad.substring(0, realerPfad.indexOf("."));        
        pfad = realerPfad.substring(0, realerPfad.indexOf("\\counter1"));        
        //dateiName = pfad+"\\counter1"+"\\zaehler.txt";
        dateiName = pfad+"\\zaehler.txt";        

        dateiName = "C:\\Programme\\Apache_Tomcat\\apache-tomcat-5.5.26\\webapps\\counter1\\zaehler.txt";                        

   
    	try{
            // Ein Objekt anlegen und mit einer Datei "verbinden"
            // Dies bedeutet nicht, dass es diese Datei schon gibt!
            myFile = new File(dateiName);
            // Prüfen, ob diese Datei auch existiert		
            b = myFile.isFile();
            // Datei existiert schon
            if(b==true){  
                // Datei öffnen
                myDatei = new RandomAccessFile(dateiName,"rw");
                // Datei auslesen
                tempString = myDatei.readLine();                
                // Datei ist leer
                if(tempString == null){
                    zaehler=0;
                }
                // Es befindet sich keine int-Zahl in der Datei 
                else if(tempString.length()!=4){
                    zaehler=0;                    
                    //zaehler = Integer.parseInt(tempString);
                }
                else{
                    zaehler = myDatei.readInt();
                }
                    // schließe Datei
                myDatei.close();			
            }
            // Datei existiert nicht
            else{
                // Datei anlegen und öffnen                
                myDatei = new RandomAccessFile(dateiName,"rw");                
                zaehler=1;            
                myDatei.close();			                
            }
        }
        catch(FileNotFoundException e){
            // Eine mögliche Ausgabe (genauere Fehlerbeschreibung) 
            // mit toString()
            System.out.println("Fehler: Datei nicht vorhanden: "+e.toString());
	}
	catch(IOException e){
            System.out.println("Fehler: Datei nicht schließbar:");
            // Andere mögliche Ausgabe (genauere Fehlerbeschreibung) 
            // mit printStackTrace()
            e.printStackTrace();
	}
    }
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Zähler Servlet</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Das Zähler Servlet wurde " +zaehler + " Mal aufgerufen</h1>");
        zaehler = zaehler + 1;
        out.println("</body>");
        out.println("</html>");
        out.close();
    }

    public void destroy(){
        try{
            myDatei.seek(0);            
            myDatei.writeInt(zaehler);			                
            myDatei.close();            
        }
        catch(FileNotFoundException e){
            // Eine mögliche Ausgabe (genauere Fehlerbeschreibung) 
            // mit toString()
            System.out.println("Fehler: Datei nicht vorhanden: "+e.toString());
	}
	catch(IOException e){
            System.out.println("Fehler: Datei nicht schließbar:");
            // Andere mögliche Ausgabe (genauere Fehlerbeschreibung) 
            // mit printStackTrace()
            e.printStackTrace();
	}
    }
}
 

homer65

Top Contributor
System.out.println("text");
Wird nicht auf den Bildschirm, sondern in die Log Dateien des Tomcat geschrieben. Einfach mal in den Ordner log gucken. Das kann aber sehr unübersichtlich sein, da auch noch viel anderes in die Log's geschrieben wird.
 

ernst

Top Contributor
homer65 hat gesagt.:
System.out.println("text");
Wird nicht auf den Bildschirm, sondern in die Log Dateien des Tomcat geschrieben. Einfach mal in den Ordner log gucken. Das kann aber sehr unübersichtlich sein, da auch noch viel anderes in die Log's geschrieben wird.

Bist du sicher?

1)
Bei mir heißt der Ordner
logs

2)
Habe das gesamte Tomcat-Verzeichnis einschließlich Unterordner
nach der Bildschirmausgabe
HALLO WELT
durchsucht, aber nichs gefunden!

mfg
Ernst
 

homer65

Top Contributor
Ich bin sicher. Ok der Ordner logs und nicht log. Habe es gerade noch mal ausprobiert. Die Einträge sind bei mir am Ende der Datei catalina.out im Ordner logs zu finden.
 

ernst

Top Contributor
homer65 hat gesagt.:
Ich bin sicher. Ok der Ordner logs und nicht log. Habe es gerade noch mal ausprobiert. Die Einträge sind bei mir am Ende der Datei catalina.out im Ordner logs zu finden.
Bei mir wurden heute nur folgende Dateien im Ordner logs angelegt:

admin.2008-07-30.log 0 KB
host-manager.2008-07-30.log 0 KB
manager.2008-07-30.log 0 KB
catalina.2008-07-30.log 3 KB
localhost.2008-07-30.log 2 KB

catalina.out gibt es nicht bei mir.

mfg
Ernst
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Wahrscheinlich einfache Frage bzgl. JSF Web Tier 2
W JSF einfache DataTable PrimeFaces Web Tier 1
L einfache JSF-Seite wird nicht angezeigt Web Tier 8
M wie kann ich 1 einfache Servlet auf Internet Einrichten Web Tier 6
pkm Frage zum URL-Pattern des Bereitstellungsdeskriptors Web Tier 11
A Anfänger-Frage Servlet/Applet/JSP Web Tier 0
F JSF Frage zu valueChangeListener Web Tier 1
F JSF synchronized(session) Frage ? Web Tier 1
F JSF h:selectManyCheckbox Css Frage Web Tier 2
F JSF p:selectCheckboxMenu Frage Web Tier 0
S JSF Allgemeine Frage zu JSF Web Tier 10
U Servlet Allgemeine Frage zu Servlets Web Tier 2
K Frage zu Taglibs in JSF Web Tier 3
C Kleinere Frage EJB/JSF Web Tier 7
M Design-Frage: JSP, Servlets und CSS Web Tier 11
M Frage zur Konfiguration einer RichFaces DataTable Web Tier 4
F Frage zu Java Beans Web Tier 17
F Frage zum Validator Web Tier 2
J Frage zu Checkbox bei JSF Web Tier 3
S Frage bezüglich Einblendung eines Zusatzfeldes Web Tier 2
O Escapen oder nicht Escapen, das ist hier die Frage :) (Struts2) Web Tier 2
H Frage zu Servlet getRequestDispatcher Web Tier 2
S JSF: Frage wegen managed-bean Web Tier 3
G Struts 2 - Validation Frage Web Tier 5
E File upload mit jsp (frage zum speicherort) Web Tier 12
G Kurze Frage zu editier-Formularen Web Tier 7
T Action mapping Frage (Struts) Web Tier 2
G Kurze Frage zu Servlets&Struts Web Tier 4
O kurze Frage zur Tomcat Installation Web Tier 2
O Struts Grundlagen Frage Web Tier 32
W getServletConfig().getInitParameter(.) Frage Web Tier 5
G Frage zu Tiles Web Tier 4
M Grundlegende Frage zu Servlets und JSPs Web Tier 12
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
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
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

Ähnliche Java Themen

Neue Themen


Oben