-3

对于以下项目,我需要研究、了解和使用什么:

我想使用 javascript 在网页上显示地图,使用 googlemaps api。它上面会有标记。标记将是使用纬度和经度的地理位置。通过在ip-api.com中输入 IP 可以找到纬度和经度坐标,这将为我提供纬度和经度。IP 取自数据库。该地图也将显示在 Java 程序中的 jpanel 中。

我最大的担忧和困惑是我将如何连接到数据库并获取数据。我没有使用 javascript 的经验,但我听说在网页上用 javascript 连接到数据库是不好的做法。是否可以使用我的 java 程序作为数据库和网页之间的中介来连接、检索和推送数据?似乎这可以保证数据的安全,但我不知道我将如何,或者如果可能的话,将数据从 java 发送到脚本。

也许有人有其他建议?

更新我最初只是带着一般的方向感和混乱的理解问这个问题,只是在寻找正确方向的一点。与其认为我的问题很愚蠢或者我一开始没有尝试找到答案而降级,而是下面的答案实际上需要时间来提供帮助,并且能够引导我到我需要去的地方。下次不要这么快降级这样一个明显缺乏经验的程序员并试图伸出援手。这就是这个社区的目的,也是我喜欢使用它的原因。

4

4 回答 4

2

JavaScript 不能直接连接到另一个服务器上的数据库;没有 API 可以做到这一点(也许 WebSockets 除外)。您可能想要做的是在您的 JavaScript 中使用 AJAX 并为 Web 服务器编写一个应用程序,该应用程序使用来自数据库的答案来响应 AJAX 请求。

这是一项复杂的任务,需要大量学习;根据您的情况,在编写 HTML/JavaScript 部分时让其他人编写服务器部分可能更实际。如果您确实想花时间自学,我建议您从 Spring MVC 开始,因为它使编写基于 JSON 的 Web 服务变得非常容易。

于 2013-08-03T03:19:16.733 回答
2

是的,Java 可以做到这一点。Python、PHP 和大多数其他语言也可以。出于安全原因,使用 javascript 从网页直接访问数据库是有问题的。如果不了解更多关于问题、限制或您使用 Java 的经验,就很难提供更清晰的方向。如果所有这些对你来说都是新的,那么我会说你有大量的工作来学习如何做到这一点。对于从 Java 与数据库进行交互,以下内容可能会有所帮助:

http://docs.oracle.com/javase/tutorial/jdbc/

下面是一系列视频教程,使用 Java 创建 javascript 可以通过 Ajax 与之交互的 Rest 服务:

http://www.youtube.com/watch?v=gKBiIWY7FYw

http://www.youtube.com/watch?v=4DY46f-LZ0M

http://www.youtube.com/watch?v=LcZSty50KTw

于 2013-08-03T03:27:17.333 回答
1

是的,您可以使用服务器端 Java 代码作为中介。使用 JavaScript 通过 JavaScript 的 XMLHttpRequest 对象将数据发布到 HttpServlet。然后处理 servlet 中的数据。

完成数据库业务后,您可以发送“全部完成!” 回复,由您的 JS 处理。

我建议阅读 XMLHttpRequest 对象。此外,请查看涉及 POST 数据的 HttpServlet 示例。

这是一个简单的例子:

JS(在 IE9+ 中工作)

var xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function(data) {
  console.log(data);
};
xmlhttp.open("POST", "/servlet", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");

爪哇

public class MyServlet extends HttpServlet {
  public void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws IOException, ServletException {

    String fname = req.getParameter("fname");
    // db code here

    PrintWriter out = resp.getWriter();
    out.print("All done!");
  }
}
于 2013-08-03T03:19:28.740 回答
0

这是我的想法:

  1. 您出于某种原因想要存储 IP。您使用数据库。(你得到了那个部分。)

  2. 您想从该数据库中读取。您可以使用“服务器端”代码来做到这一点。例如 PHP、ASP 或 JSP(以及其他)。

  3. 您想在您的网页和 Java 桌面程序中显示信息。你用 Javascript 和 Java 来做到这一点。(你也得到了那部分)

...

现在从 1 到 2(从数据库中读取数据),数据库提供了一种语言 (sql),您使用该语言来检索数据。(当然数据库也有用户名/密码。)

从 2 到 3,您可以创建某种类型的 API,以返回您的网站和 Java 程序所需的数据。(您使用服务器端语言创建 API。)

...

注意:您不直接从 javascript 访问数据库的原因是因为 javascript 在客户端上运行。这意味着,运行 javascript 的用户将能够看到访问数据库的代码(并且代码将包括凭据)。

于 2013-08-03T03:54:13.533 回答