【问题标题】:How to pass data from servlet to jsp code (out side the form)? [duplicate]如何将数据从 servlet 传递到 jsp 代码(在表单之外)? [复制]
【发布时间】:2017-06-30 04:38:27
【问题描述】:

我已经编写了 jsp 代码,通过从 servlet 获取数据来绘制图表。 我将“提交”按钮保留在表单之外,并且未绘制正确的图形。 但是当我在表单而不是图表中调用按钮时,我得到的数据表包含正确的数据。所以我认为 servlet 数据已传递到表单而不是表单之外。

这是我的jsp代码

 <form  action="NewServlet1" method="Post" >
<center>
        <input type="text" name="website" list="website" placeholder="Enter your website">
        <datalist id="website">
        <option value="https://www.google.lk/">GOOGLE</option>
        <option value="https://www.yahoo.com/">YAHOO</option>
        <option value="https://www.hackerrank.com/">HACKER RANK</option>

        </datalist><br>
        <button id="button2"  name="button2" onclick="submit()" class="btn btn-primary">submit</button>
         <br><br><br>


    </center></form>

     <div style="width: 400px; height: 400px">
        <canvas id="myChart" width="10000" height="10000" ></canvas>
    </div>
<center> <div>
       <button id="button1"  name="button1" onclick="submit()" class="btn btn-primary">submit</button>
    </div></center>
    <script>
        function Test(today, time) {
            var ctx = new Chart(document.getElementById("myChart")

            , {

                type: 'line',
                data: {
                    labels: today,
                    datasets: [{
                            data: time,
                            label: "Web Service 1",
                            borderColor: "red",
                            fill: false
                        }
                    ]
                },
                options:
                        {
                            scales: {xAxes: [{display: true, scaleLabel: {display: true, labelString: 'date and time'}}], yAxes: [{display: true, ticks: {beginAtZero: true, steps: 100, stepValue: 50, max: 6000}}]},

                            hover: {intersect: false },
                            title: {display: true, text: 'response time of selected website'},
                              tooltips: { mode: 'nearest'}

                        }
            });
}
function submit()
{

    $.post("NewServlet1",
            {

            },
            function (data)
            {

                Test(data.today, data.time);
            });
}

这是我的 servlet 代码

 protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
       response.setContentType("text/html"); //1st line
       String website = request.getParameter("website"); //2nd line
        NewClass1 myclass1 = new NewClass1();
        NewClass2 myclass2 = new NewClass2();
        //String website1 = "https://www.google.lk/";    /*when I use this line instead of 1st
                                                         //and 2nd lines
                                                         //I'm getting perfect graph but I want
                                                         // to take user input not fixed input*/

    try {
        myclass2 = myclass1.myclass(website);


    } catch (Exception ex) {
        Logger.getLogger(NewServlet1.class.getName()).log(Level.SEVERE, null, ex);
    }
    int time[] = NewClass1.time1;
    String today[]=NewClass1.today;
    NewClass3 myclass3 = new NewClass3();
    myclass3.time=time;
    myclass3.today=today;
    Gson gson = new Gson();
    String jsonString = gson.toJson(myclass3);
    response.setContentType("application/json");
    response.getWriter().write(jsonString);


}

有人会犯我的错误吗

【问题讨论】:

    标签: javascript java jsp servlets


    【解决方案1】:
    1. 您没有明确提及提交功能,而是使用表单的操作参数。因此,当您从表单内部调用提交函数时,它会使用输入字段调用表单 Action NewServlet1。
    2. 您从表单外部进行的调用会调用您已明确定义的函数 Submit。所以定义提交方法不是一个好习惯,最好使用表单操作和输入类型提交。因此,只需指定具有所需操作的表单,或重命名方法即可。

    【讨论】:

    • 你能认错吗?
    • 我不能犯你的错误,因为我不想犯
    • 没关系 :) 谢谢以上回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多