从jsp表单中写入文本文件



各位早上好,

我正在使用eclipse并学习如何使用JSP进行编码,我使用bootstrap创建了一个简单的表单(代码和密码)(让它看起来很好看),我希望每次单击按钮"Se-connector"(提交)时,都能创建或添加一个文本文件,其中包括单击者的时间和名称(codeOp.getText())。

这是我的表格(显示的是法语对不起):

<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>

下面是我想添加的代码(或者至少类似的代码):

    <% 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();%>

其想法是创建一个简单的日志文件,显示每次单击的时间(可以稍后使用Date添加)和单击用户的名称(CodeOP)。

这看起来很简单,但我不知道在哪里编写代码,因为不鼓励在JSP页面中编写java代码。

感谢您提前阅读!准备接受批评;)

您可以将其发送到后端,而不是使用JSP内联编写。然后,您可以在后端执行该代码。您希望将JSP按钮绑定到该按钮后面的操作。当你有一个表单并提交它时,这是一个通过你创建的"Servlet"的操作。

不过,您的方法应该是POST方法,而不是GET方法。所以这行<form class="form-signin" action="page1" method="GET">应该改为类似<form class="form-signin" action="Page1" method="POST">

您不需要将.jsp添加到操作中。该操作是一个将传递给servlet的参数。

然后,当操作与表单中的操作匹配时,您可以在servlet中在后端执行一些(普通的java)代码。

为了更具体一点,在servlet中有一个post方法。这看起来大致像

 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();
    }
 }

我写这篇文章并没有实际测试,但它更多的是让你知道如何做到这一点。当您有多个表单时,您可以使用表单的ACTION来确定哪个表单在servlet中发送了POST请求。明智的做法是为所有后端逻辑创建一些后端类,然后从Servlet调用一些Facade类,然后它可以调用后端的正确类来创建日志等。

您是否考虑过使用现有的webapp日志文件?尝试在jsp页面application.log(String.format("EVENT - User %s, Action %s", "myuser", "click-1"))中调用日志函数,然后查找j2ee服务器的日志文件。

这适用于开箱即用的并发多个用户请求,使用自定义FileOutputStream确保它正确同步。

使用grep或类似方法从日志文件中收集事件。

相关内容

  • 没有找到相关文章

最新更新