从jsp表单写入文本文件

时间:2016-08-01 09:57:18

标签: java forms file jsp

早上好,伙计们,

我正在使用eclipse并学习如何使用JSP进行编码,我使用bootstrap创建了一个简单的表单(代码和密码)(使其看起来很漂亮),我想每次点击按钮“Se connecter”(提交),在文本文件中创建或添加点击者的时间和名称(codeOp.getText())。

这是我的表格(显示在法国抱歉):

R -e "shiny::runApp('../Shiny_visualization')" --args 'db_path'

这是我正在考虑添加的代码(或者至少是这样的代码):

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

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

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

感谢提前阅读!准备被批评;)

2 个答案:

答案 0 :(得分:0)

您可以将此内容发送到后端,而不是使用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类,然后可以调用后端的正确类来创建日志等。 。

答案 1 :(得分:0)

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

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

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