使用Servlet在同一网页上显示数据?

时间:2012-02-22 13:19:32

标签: java html jsp servlets

我使用的是这样的html表单:

      <form action="question" method="get">

其中question是一个java servlet类,它从表单中呈现数据并显示在其他页面上。

我要做的是在html表单下方显示此数据,而不是在其他屏幕上显示。 (有点像我们在stackoverflow.com中询问问题的页面,您输入的问题将在下面显示并显示。)

所以我想做同样的事情。任何人都知道如何做到这一点?

3 个答案:

答案 0 :(得分:1)

最简单的方法是使用javascript(客户端)。

以下是如何执行此操作的非常粗略的示例。这将让您了解如何继续。

  1. 创建一个html页面,其中包含两个单独的文本区域框。

  2. 让第一个文本区域框成为您在文本中键入的源。 为它指定一个id'source_area'。

    <textarea id='source_area'>
    </textarea>
    
  3. 让第二个文本区域框成为目标。 为它指定一个id'destination_area'。

    将此区域设置为“只读”,因为您不希望用户直接在此处键入。

    <textarea id='destination_area' readonly>
    </textarea>
    
  4. 现在,当用户输入第一个框时,我们需要捕获特定的操作。 对于此示例,我将使用“onKeyUp”来捕获释放键盘键时的事件。

    现在当键入源文本框时,键盘上的一个键被释放,它将调用一个javascript函数“transferToNextArea()”被调用。 我们将在

    中创建javascript函数“transferToNextArea()”

    在此处阅读有关javascripts的更多信息。
    http://w3schools.com/js/js_events.asp
    完整的活动清单。
    http://w3schools.com/jsref/dom_obj_event.asp

  5. javascript函数将从“source_area”文本框中提取文本。 然后它会将相同的文本分配到'destination_area'。

    function transferToNextArea()
    {
        //extracting text.
        var varSrcText = document.getElementById("source_area").value;  
    
        //assigning text to destination.
        document.getElementById("destination_area").value=varSrcText
    
    }
    
  6. 完整的HTML(在Google Chrome中测试)

    <html>
        <body >
            Source Box
            <textarea id='source_area' onKeyUp="transferToNextArea();">
            </textarea>
            <br>
            Destination Box
            <textarea id='destination_area' readonly>
            </textarea>
        </body>
        <script type="text/javascript">
            function transferToNextArea()
            {
                var varSrcText = document.getElementById("source_area").value;
                document.getElementById("destination_area").value=varSrcText
    
            }
    
        </script>
       </html>
    

    这只是一个非常基本的例子。它不是很有效,但它可以让您了解数据如何移动。 在分配文本之前,您可以使用javascript来操作文本。

    Stackoverflow在提取文本后根据html标记格式化文本。这将需要更多的代码和更多的工作。

    使用servlet执行上述任务是过度的。 只有在想要对服务器端的数据执行某些操作时,才会使用servlet。

    Example
        a) store it in a database before displaying it below.
    

    了解“ajax”调用,以便在服务器和客户端之间发送和接收数据。 Ajax将为您提供将数据发送到servlet的方法,而无需刷新整个页面。

答案 1 :(得分:0)

  • 使用表单

  • 创建JSP
  • 提交后将数据发布到某个servlet

  • 处理请求并生成结果数据并将其设置为请求的属性

  • 将请求转发给相同的jsp

  • 检查表格

  • 下的数据是否为空

答案 2 :(得分:0)

让servlet将请求转发到同一个JSP页面,并使用JSTL <c:if>有条件地显示结果。

request.setAttribute("questions", questions);
request.getRequestDispatcher("/WEB-INF/questions.jsp").forward(request, response);

<c:if test="${not empty questions}">
    <h2>There are ${fn:length(questions)} questions.</h2>

    <c:forEach items="${questions}" var="question">
         <div class="question">${question}</div>
    </c:forEach>
</c:if>

另见: