HttpServletResponse将发送数据而不将其打印到客户端屏幕

时间:2017-06-20 17:42:15

标签: java servlets httpresponse

我正在构建一个Web应用程序。

此Web应用程序的一部分是从客户端到服务器的ajax请求:

$.ajax({
      url: url,
      type: "get", 
      data: { 
        id: ID, 
      },
      success: function(response) {
        //parameter response contains the data sent back from the server
        //some stuff is done to this data in the rest of this function     
      },
      error: function() {
        alert("An error occurred.");
      }
  });

在服务器端,我使用servlet来处理请求。 一旦收到客户端的数据,并且已经应用​​了一些业务逻辑,我想发回一个简单的字符串。

然后,数据字符串将由上面的ajax函数的以下部分处理:

 success: function(response) {
     //parameter response contains the data sent back from the server
     //some stuff is done to this data in the rest of this function     
 },

我的问题是:

我知道如何将数据发送到客户端的屏幕:

 PrintWriter out = response.getWriter();
 out.println(data);

但是,我不知道如何将数据(不是屏幕而是屏幕)发送到ajax函数,这样这个ajax函数就可以处理从服务器接收的数据。

类“HttpServletResponse”的java对象“response”仅提供诸如“sendError()”之类的方法。

我想发送数据而不将其打印到屏幕上。

我该怎么做?

******** UPDATE ********************* ***********************

我尝试使用PrintWriter将字符串发送回ajax函数:

PrintWriter out = response.getWriter();
out.println("test");

...然后我想在警告信息中输出文本“test”:

$.ajax({
      url: url,
      type: "get", 
      data: { 
        latitude: location.lat(), 
        longitude: location.lng(), 
        radius: 10
      },
      success: function(response) {
        alert(response);
      },
      error: function() {
        alert("Ein Fehler beim Abfragen der Daten ist aufgetreten.");
      }
  });

但是输出不是输出内容为“test”的警报消息,而是由发送ajax调用的JSP-Page的整个html代码组成!

1 个答案:

答案 0 :(得分:1)

没有任何内容被发送到"屏幕"具体而言,这完全取决于请求的来源 如果单击链接,浏览器将启动请求,浏览器将收到response并处理输出以显示。

在这种情况下,request将来自您的ajax调用,因此ajax调用将处理请求,并且内容将在响应的.requestText属性中接收。

您可能希望确保HttpServletResponse对象的响应内容类型设置为" text / html",但是因为您已经到目前为止要使用ajax,您也可以考虑使用JSON的步骤。