2016-08-01 17 views
0

Guten Morgen Schreiben,in einer Textdatei Leute aus einer jsp Form

Ich bin mit Eclipse und zu lernen, wie JSP mit codieren, habe ich ein einfaches Formular (Code und Passwort) mit Bootstrap (es aussehen zu lassen nett) und ich möchte jedes Mal, wenn ich auf den Button "Se connecter" (submit) klicke, um eine Zeit und den Namen (codeOp.getText()) der Person, die geklickt hat, zu erstellen oder in eine Textdatei einzufügen.

hier ist meine Form (das Display ist in französisch sorry):

<div id="page-content-wrapper"> 
    <div class="container col-sm-offset-2 col-sm-6"> 
     <form class="form-signin" action="Page1.jsp" method="GET"> 
     <h2 class="form-signin-heading">Veuillez vous connectez</h2> 
     <label for="codeOp" class="sr-only">Code de l'opérateur</label> 
     <input type="number" id="CodeOp" class="form-control" placeholder="Code l'opérateur" ></input> 
     <label for="password" class="sr-only">Mot de passe</label> 
     <input type="password" id="password" class="form-control" placeholder="Password" ></input> 
     <div class="checkbox"> 
      <label> 
       <input type="checkbox" value="remember-me"/> Se souvenir de moi. 
      </label> 
     </div> 
       <button class="btn btn-lg btn-primary btn-block" type="submit"/>Se connecter 
     </form> 
    </div> 
</div> 

und hier ist der Code, den ich die Zugabe (oder zumindest so ähnlich) denke:

<% String content = codeOP.GetText(); %> 
    <% File file = new java.io.File("log.txt");%> 
    <% FileWriter fw = new FileWriter(file.getAbsoluteFile());%> 
    <% BufferedWriter bw = new BufferedWriter(fw);%> 
    <% bw.write(content);%> 
    <% bw.close();%> 

Die Die Idee besteht darin, eine einfache Protokolldatei zu erstellen, die den Zeitpunkt jedes Klicks (kann später mit Datum hinzugefügt werden) und den Namen (CodeOP) des Benutzers anzeigt, auf den geklickt wurde.

Es scheint einfach, aber ich weiß nicht, wo ich den Code schreiben soll, da es nicht ratsam ist, Java-Code in eine JSP-Seite zu schreiben.

Vielen Dank für das Lesen im Voraus! Bereit, kritisiert zu werden;)

+0

Nein! denke nicht einmal darüber nach wie Java 1.2 zu schreiben. Machen Sie es mit normalen Loggern ins Innere! –

+0

JSP sind als Ansicht Ihrer Webanwendung konzipiert. Wenn Sie eine Backend-Operation (wie die Protokollierung) ausführen möchten, ist es besser, ein Servlet zu verwenden, das sich anmeldet und dann an Ihre JSP weiterleitet. –

+0

Danke für die schnelle Antwort Leute! Ich wusste, dass ich einen Fehler machen würde xD Könntest du ein wenig mehr über die Verwendung des Servlets für diesen Zweck erzählen? Oder gibt es eine Möglichkeit, dich zu kontaktieren? – DrayneZ

Antwort

0

Anstatt dies inline mit JSP zu schreiben, könnten Sie dies an das Backend senden. Sie können diesen Code dann im Backend ausführen. Sie möchten Ihre JSP-Schaltfläche an eine Aktion binden, die sich dahinter befindet. Wenn Sie ein Formular haben und es abschicken, handelt es sich um eine Aktion, die das von Ihnen erstellte "Servlet" durchläuft.

Obwohl Ihre Methode sollte eine POST-Methode, keine GET-Methode sein. Also diese Zeile <form class="form-signin" action="page1" method="GET"> sollte zu etwas wie <form class="form-signin" action="Page1" method="POST">

geändert werden Sie müssen die .jsp nicht zur Aktion hinzufügen. Die Aktion ist ein Parameter, der an unser Servlet übergeben wird.

Sie können dann im Servlet einen (normalen Java) Code im Backend ausführen, wenn die Aktion mit der aus dem Formular übereinstimmt.

Um dies etwas konkreter zu machen, haben Sie in Ihrem Servlet eine Post-Methode. Das sieht in etwa wie

public class SomeServlet extends HttpServlet{ 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
     // do something with the form data. 
     // I would use another class for the filewriting though 

     String content = request.getParameter('codeOp'); 
     File file = new File("log.txt"); 
     FileWriter fw = new FileWriter(file.getAbsoluteFile(); 
     BufferedWriter bw = new BufferedWriter(fw); 
     bw.write(content); 
     bw.close(); 

    } 
} 

ich dies schrieb, ohne diese tatsächlich zu testen, aber es ist mehr Ihnen eine Vorstellung zu geben, wie Sie dies tun würden. Wenn Sie mehrere Formulare haben, können Sie das ACTION des Formulars verwenden, um herauszufinden, welches Formular die POST-Anforderung in Ihrem Servlet gesendet hat. Es wäre sinnvoll, einige Backend-Klassen für die gesamte Backend-Logik zu erstellen. Rufen Sie einfach unter Servlet eine Klasse Facade an, die dann die richtige Klasse des Backends zur Erstellung des Protokolls usw. aufrufen kann.

+0

Das sieht erstaunlich exatly was ich brauche, ich werde daran arbeiten und lassen Sie wissen, danke für die detaillierte Antwort bro! Kann ich dich irgendwie kontaktieren? – DrayneZ

0

Haben Sie schon darüber nachgedacht Verwenden Sie eine vorhandene Webapp-Logging-Datei? Versuchen Sie, die Protokollfunktion innerhalb der JSP-Seite application.log(String.format("EVENT - User %s, Action %s", "myuser", "click-1")) aufzurufen und suchen Sie dann nach Protokolldateien des j2ee-Servers.

Dies funktioniert für gleichzeitige Mehrfachanfragen von Benutzern, mit einem benutzerdefinierten FileOutputStream, müssen Sie sicherstellen, dass es ordnungsgemäß synchronisiert ist.

Verwenden Sie grep oder ähnliches, um Ereignisse aus der Protokolldatei zu erfassen.

+0

Ich schaute mich tatsächlich um und las ein paar Sachen über die Webapp-Logging, aber es klingt kompliziert, ich brauche nur etwas einfaches x) – DrayneZ