使用jQuery Ajax从JSP页面调用Servlet
我知道这里有很多相关问题,但实际上与我的问题无关的问题都附有答案。 或者至少是一个公认的答案。 如果有人可以指出我这个问题,那就很高兴错了。 如果我错过了标记,请重新加注。
我的问题,正如标题所说,我想从我的JSP页面调用一个Servlet并返回一个字符串或html。
我的Servlet名称是MyFirstServlet。
请问,请在任何答案中都非常具体,因为我是一个完整的JSP,Java和Servlet noobie。
非常感谢你提前。
首先创建一个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 data = new HashMap(); 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
中。 例如,在/firstServlet
的url-pattern
上。
然后,在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生成动态下拉列表?