如何从java Servlet返回数据到ajax

how to return data to ajax from java Servlet

本问题已经有最佳答案,请猛点这里访问。

我有我的ajax功能如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$.ajax({
  type: 'GET',
  url:"/myservlet",
  data: {
  objects: '2',
  dimension: '2',
  },
  success: function( data ) {
  console.log(data);
  alert(data);
  },
  error:function(data,status,er) {
    alert("error:"+data+" status:"+status+" er:"+er);
   }
 });

我有我的servlet来处理发送到/ myservlet的数据。 我从ajax教程中读到,它说成功函数中的数据是ajax从服务器端获得的数据。 但我不知道如何设置此数据或将此数据从Java servlet中的doGet方法返回到前端。 看来doGet是一个void方法,不能返回任何值,不是吗? 我是网络开发的新生,提前感谢!


您可以通过在response.getWriter().write("");上写入来从servlet获取数据。

这是一个简单的servlet示例。

1
2
3
4
5
6
7
8
9
10
@WebServlet(name ="MyServlet", urlPatterns = {"/myservlet"})
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("Success Data");
    }  
}

您可能会注意到doGet()方法有两个参数:HttpServletRequest和HttpServletResponse。

您使用HttpServletRequest获取有关请求的信息 - 任何参数,调用客户端IP,URL等。

http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html

您使用HttpServletResponse来填充响应。 HttpServletResponse有许多方法允许您设置响应头和数据。

http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html


你不需要从doGet方法返回任何东西,事实上你不能因为它是无效的。

因此,您需要做的是从响应中获取PrintWriter对象并将数据写入其中,并在成功函数中使用该对象。