【问题标题】:A way to avoid many servlets [duplicate]一种避免许多servlet的方法[重复]
【发布时间】:2017-02-11 20:33:30
【问题描述】:

我想避免有很多 servlet,因为页面上的每个按钮或资源都有一个特殊的 servlet 似乎不正确。

我的目标是向同一个 servlet 发出不同的 ajax 请求,并在该 servlet 中通过doGetdoPost 方法区分它们。

例如:

function bar() {
    $.ajax({
        url: "servletName",
        success: function(data) {
            foo(data);
        }
    });
}

function baz() {
    $.ajax({
        url: "servletName",
        success: function(otherdata) {
            anotherFoo(otherdata);
        }
    });
}

我可以在请求中添加什么来区分它们(使用 if else 或 switch)?

PS:我也有一个 html5 请求(我认为),所以我也想添加一些内容以使其与众不同:

$(document).ready(function () {
    $("#uploadbutton").click(function () {
        var formData = new FormData();
        formData.append("myfile", document.getElementById("file").files[0]);
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "rooms", false);
        xhr.send(formData);
        document.getElementById("status").innerHTML = xhr.responseText;
    });
});

【问题讨论】:

    标签: java html ajax tomcat servlets


    【解决方案1】:

    你必须做的最明显的事情是,在你的 AJAX 请求的 get 和 post 请求中传递一个额外的参数,并使用 request.getParameter("type"); 检查 servlet 内的参数 // 类型是你从客户端发送来检测 ajax请求。

    【讨论】:

    • 你的意思是这样的:data:{ajaxid:4} 添加到 ajax?我也可以用XMLHttpRequest 做这个吗?
    • 当然,您可以发送。在获取的情况下,它将是一个查询参数。如果在 post payload 中发布另一个数据属性
    • 服务器端是否使用request.getParameter("foo") 并检查返回值是否不为空?
    • isnt null 不够,你还需要检查 foo 的组成,然后发回正确的响应。
    【解决方案2】:

    你传入一个参数来告诉你正在做什么......例如,如果你的 servlet 是用 /myServlet 访问的,你可以调用 /myServlet?action=foo 或 /myServlet?action=bar 并在你的 servlet 中查看对于动作参数和相应的分支。

    【讨论】:

      猜你喜欢
      • 2017-01-22
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      相关资源
      最近更新 更多