不提交就调用servlet并保持在同一个JSP页面中

时间:2016-11-22 06:07:33

标签: java jsp servlets

我是java web编程的新手。所以,这就是我所做的, 我已经构建了一个decorator模型,我有一个servlet来调用模型的不同类的方法。

JSP文件中,我有每个项目的项目和数量列表菜单。数量显示为<List> </List>

我需要做的是,无论何时更改数量,请致电doPost调用装饰类重新计算价格并在同一JPS页面中更新价格

我尝试使用<select id="id1" name="id1" onchange="document.menu.submit()",正在调用doPost,但我正被转发到空白页面!这是servlet页面。我想更新价格并保持在同一个JSP页面

所以,基本上我需要在servlet中调用servlet doPost或其他函数并将价格返回到同一个JSP页面

这是一个项目的快照 来自JSP

<select id="id1" name="id1" onchange="document.menu.submit()">
<option value="0"> 0</option>
<option value="1"> 1</option>
<option value="2"> 2</option>
<option value="3"> 3</option>
<option value="4"> 4</option>
<option value="5"> 5</option>
</select> 
<td> <input type="text" name="totalTxtbox" id="totalTxtbox" style="width:40px;"/> </td>

来自servlet

private Model model;
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        int id1=Integer.parseInt(request.getParameter("id1"));
        double total;
        total= calculatePrice(id1, id2, id3, id4, id4); // This method handles the price calculation 
        request.setAttribute("totalTxtbox", total);

    }

很抱歉,如果这是一个小问题!

3 个答案:

答案 0 :(得分:1)

您可以为您的servlet创建 Asynchronous Call

  

AJAX是Asynchronous JavaScript和XML的首字母缩写。这是一个团体   相互关联的技术,如JavaScript,DOM,XML,HTML,CSS   AJAX允许您无需异步发送和接收数据   重新加载网页。所以它很快。

     

AJAX允许您不向服务器发送重要信息   整个页面。因此,只有来自客户端的有价值数据才会被路由   到服务器端。它使您的应用程序具有交互性和更快的速度。

您只需要一些JavaScript。

例如,您要将数据发送到的servlet的URL为servlet.ajx,并且您希望发送两个变量userIditemId,然后您可以在JSP中编写它页。

<head>
    <!-- ... -->
    <script src="path/to/jquery.js" type="text/javascript"></script>
    <script>
        function doSubmit() {
            $.ajax({
                type: 'POST',
                url: 'servlet.ajx',
                data: 'userId=' + userid + '&itemId=' + itemId,
                error: function(response) {
                    // Gets called when an error occurs with error details in variable response
                },
                success: function(response) {
                    // Gets called when the action is successful with server response in variable response
                }
            });
        }
    </script>
</head>

答案 1 :(得分:0)

请参阅以下提供相同示例的链接: http://www.journaldev.com/4742/jquery-ajax-jsp-servlet-java-example

答案 2 :(得分:0)

没有一种快速简便的方法可以回发到服务器,只需更新总字段即可。据我所知,这些是获得你所需要的3种最流行的方式:

  1. JSP - 表达式语言(EL) - 这需要你刷新 页面,并在执行此操作时,使用用户填写字段 类型。为此,您可以捕获所有输入数据并将其放入 通过Request或Session属性返回JSP页面。

  2. AJAX - AJAX可以使用服务器数据更新HTML页面的部分内容 没有刷新整个页面。

  3. JavaScript - 现在最常见的是,数据编辑是在 客户端使用JavaScript。在你的情况下,这可能是最大的 感觉如果您已经拥有页面上已有的数据。它可能是 就像一行或两行JavaScript函数一样简单(比如说, calcTotals)通过将提交更改为: 平变化= “calcTotals();”我不是JavaScript专家,但如果那样的话 所有你想要做的,我先尝试一下。