使用jQuery Ajax从JSP页面调用Servlet

7
我知道这里有很多相关的问题,但没有一个与我的问题实际相关并附有答案。或者至少有一个被接受的答案。如果有人能指出问题所在,请告诉我。如果我标签错了,请重新标记。
我的问题就像标题所说,我想从我的JSP页面调用一个Servlet并返回一个字符串或HTML。
我的Servlet名称是MyFirstServlet。
请尽可能具体地回答,因为我是一个完全的JSP、Java和Servlet新手。
非常感谢您的帮助。
1个回答

8

首先创建一个Servlet类,根据请求返回所需的响应。它可以是HTML、XML或JSON。我建议使用JSON,因为它在Java中最容易生成,并且在JavaScript中最容易消费。您可以使用例如Google Gson将完整的Java对象转换为JSON字符串(反之亦然)。例如:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOexception {
    // Populate response data somehow. Can be a String, Javabean or Collection/Map of either.
    Map<String, Object> data = new HashMap<String, Object>();
    data.put("success", true);
    data.put("message", "Hello World!");
    data.put("param", request.getParameter("foo"));
     
    // Write response data as JSON.
    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(new Gson().toJson(data));
}

一旦servlet完成,只需按照惯例在web.xml中映射它。例如,在url-pattern为/firstServlet上。然后,在jQuery中,您可以使用$.getJSON()从给定资源获取JSON。第一个参数是URL,显然是firstServlet。第二个参数是回调函数,在其中可以处理返回的响应数据。我传递了请求参数foo仅用于演示目的,这不是必需的。
$.getJSON('firstServlet?foo=bar', function(data) {
    alert('Success: ' + data.success + '\n'
        + 'Message: ' + data.message + '\n'
        + 'Param: ' + data.param);
});

你当然可以用它来显示简单的警报,但还可以进行更多操作。例如,根据返回的数据,在当前页面上操作/遍历HTML DOM。
我之前在这里发布了两个具有实际示例的答案,您也可能会发现它很有用:
- 从JavaScript调用Java Servlet - 如何使用jQuery和JSP生成动态下拉列表?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接