【问题标题】:sending Json information from Servlet to Javascript将 Json 信息从 Servlet 发送到 Javascript
【发布时间】:2015-12-21 00:36:28
【问题描述】:

我想创建一个网络应用程序,用于查找每个人经常去的地方附近最近的超市。

出于这个原因,我创建了一个 jsp 页面,其中有一个带有我所在位置坐标的地图,以及用于显示超市信息和地图中标记的 js。在我的 js 中,我试图从带有 json 表单的 Servlet 获取所有最近的超市信息。 但是当我运行它时,它不会出现任何东西。你真的能帮帮我吗?

//这是我的js:

 function main1() {
 $.ajax({
    url: 'Myservlet',
    type: 'json',
    data: {
       latitude: pos[0],
       longitude: pos[1],
       map: map
     },
    success: function(data){

        drawMap(data);
        drawTable(data);
    }

});
}     

 function drawMap(data){
    var infowindow = new google.maps.InfoWindow();
    var marker, i;

    for (i = 0; i < data.length; i++) {
      marker = new google.maps.Marker({
        position: new google.maps.LatLng(data[i].latd, data[i].longd),
        map: map
      });
      google.maps.event.addListener(marker, 'click', (function(marker, i) {
        return function() {
          infowindow.setContent(data[i].name, data[i].region);
          infowindow.open(map, marker);
        }
      })(marker, i));
    }
 }

//在我的Servlet中

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import package1.DB.*;
import com.google.gson.Gson;
import java.lang.*;

public class MyServlet extends HttpServlet {

public MyServlet(){
    super();
}

public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws IOException, ServletException {

        response.setContentType("text/html; charset=ISO-8859-7");
        PrintWriter out = new PrintWriter(response.getWriter(), true);
        List<Markets> super_markets;

    try{

        DB db=new DB();
        super_markets=db.getNearestMarkets(request.getParameter("latitude"),request.getParameter("longitude"));

        String json = new Gson().toJson(super_markets);
        response.getWriter().write(json);

  } catch (Exception ex) {
  out.println("Exception: " + ex.getMessage());
  out.println("</body>");
  out.println("</html>");
  }
}
}// End of class

【问题讨论】:

  • 我不太了解 Java,但您的谷歌地图 JS 代码似乎是正确的。 我会仔细检查几件事: 1. 您在成功回调中收到正确的 数据 2. data[i].latddata[i].longd 是您想要的 您可以在浏览器中使用简单的 console.log 检查值
  • 您提到了 JSP,但您的问题中没有 JSP。
  • 您没有在注释中为您的 servlet 的 url 指定 urlPatterns。您是在 web.xml 文件中执行此操作吗?
  • 在我的 jsp 中,一个带有地图的 jave 脚本,还有这个

标签: javascript json jsp servlets


【解决方案1】:

您需要告诉 servlet 容器应该将哪些路径路由到您的 servlet。您可以使用 web.xml 文件或使用 Servlet 类中的注释来执行此操作。例如:

@WebServlet({"/Myservlet/*"})
public class MyServlet extends HttpServlet {
    ...
}

请注意,在您的 javascript 中,您使用的是“Myservlet”,而您的类名是 MyServlet。类名不必与您使用的 url 一致,但它会有所帮助。

【讨论】:

  • 它的正确名称 MyServel 都是 :) 我的错在这里...我的 servlet 在文件夹 WEB-INF/classes 中.. 在这个文件夹中我有一个名为 js 的文件夹在里面这个,还有一个名为 first 的文件夹。所以在名为 first 的文件夹中,有我的 js ,路径如下:--js/first/myjav.js 您认为我的 js 中我的 url 中的哪个路径是正确的?谢谢!
  • 在您的 javascript ajax 调用中,您有“url: 'Myservlet'”,该 url 需要与您在注释中输入的字符串相匹配,如我的示例所示。
猜你喜欢
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
  • 2012-08-15
相关资源
最近更新 更多