Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Ajax调用在servlet中不起作用?_Java_Jquery_Ajax_Jsp_Servlets - Fatal编程技术网

Java Ajax调用在servlet中不起作用?

Java Ajax调用在servlet中不起作用?,java,jquery,ajax,jsp,servlets,Java,Jquery,Ajax,Jsp,Servlets,我试图从JSP向Servlet发出Ajax调用,然后从Servlet获取数据并将其嵌入html视图。目前,在ajax调用之后,数据甚至没有添加到我的标记中。我可能做错了什么?有更好的方法吗?非常感谢您的任何建议 HomeServlet.java 包com.example import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager;

我试图从JSP向Servlet发出Ajax调用,然后从Servlet获取数据并将其嵌入html视图。目前,在ajax调用之后,数据甚至没有添加到我的标记中。我可能做错了什么?有更好的方法吗?非常感谢您的任何建议

HomeServlet.java 包com.example

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.JSONArray;

import com.google.gson.Gson;

/**
 * Servlet implementation class Home
 */
@WebServlet("/HomeServlet")
public class HomeServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public HomeServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        Map<String, String> options = new LinkedHashMap<>();

          String text = "some text";
         PrintWriter out = response.getWriter();
         response.setContentType("text/html");
         out.println("<html><body>");
         try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con= (Connection) DriverManager.getConnection("jdbc:mysql://localhost/apiprovider","root","");
             Statement stmt = con.createStatement();
             ResultSet rs = stmt.executeQuery("select * from apiinfo");
            // out.println("<table border=1 width=50% height=50%>");
            // out.println("<tr><th>EmpId</th><th>EmpName</th><th>Salary</th><tr>");
             while (rs.next()) {
                 String n = rs.getString("apiname");
                 String nm = rs.getString("apiendpoint");

                 options.put("value1", n);
                 options.put("value2", nm);
                 String json = new Gson().toJson(options);





                 response.setContentType("application/json");
                 response.setCharacterEncoding("UTF-8");
                 response.getWriter().write(json);

                // out.println("<tr><td>" + n + "</td><td>" + nm + "</td><td>" + s + "</td></tr>"); 
             }
           //  out.println("</table>");
            // out.println("</html></body>");
             con.close();
            }
             catch (Exception e) {
             out.println("error");
         }
     }



    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        //doGet(request, response);
        response.setContentType("text/html");
        PrintWriter out= response.getWriter();
        String n = request.getParameter("apiname");
        String p = request.getParameter("apiendpoint");
        String e = request.getParameter("apiversion");
        String c = request.getParameter("source");
        try
        {
        Class.forName("com.mysql.jdbc.Driver");
        System.out.println("driver loaded");
        System.out.println("Driver is loaded");
        Connection con= (Connection) DriverManager.getConnection("jdbc:mysql://localhost/apiprovider","root","");
        System.out.println("Connection created");
        PreparedStatement ps= ((java.sql.Connection) con).prepareStatement("insert into apiinfo(apiname,apiendpoint,apiversion,accessibility) values (?,?,?,?)");
        ps.setString(1,n);
        ps.setString(2,p);
        ps.setString(3, e);
        ps.setString(4,c);
        ps.execute();
        out.close();
        System.out.println("Inserted");
        }
        catch(Exception e1)
        {
        System.out.println(e1);
        }

    }

}

尝试在浏览器上调试,看看是否从ajax调用中获取数据。是否检查是否找到servlet?
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<div id="ajaxresponse">

</div>
<form>
 API Name:<br>
  <input type="text" id = "apiname" name="apiname">
   API ENDPOINT:<br>
  <input type="text" id ="apiendpoint" name="apiendpoint">
  <br>
  API VERSION:<br>
  <input type="text" id="apiversion" name="apiversion">
   ACCESSIBLE:<br>
  <input type="checkbox" name="source" value="internet"> Internet<br>
    <input type="checkbox" name="source" value="vpn"> VPN<br>
 <!-- 
  <br><br>
  <input type="submit" formaction="Home" method="post" value="Submit"> -->
  <br>
    <input type="submit" id="check" name="check" value="Check">

</form> 
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
$(document).on("click", "#check", function() { // When HTML DOM "click" event is invoked on element with ID "somebutton", execute the following function...
   console.log("I was clicked");
    $.get("HomeServlet", function(responseText) { 

        // Execute Ajax GET request on URL of "someservlet" and execute the following function with Ajax response text...
      var $select = $("#ajaxresponse");                           // Locate HTML DOM element with ID "someselect".
        $select.find("option").remove();                          // Find all child elements with tag name "option" and remove them (just to prevent duplicate options when button is pressed again).
        $.each(responseJson, function(key, value) {    
            // Iterate over the JSON object.
            $("<option>").val(key).text(value).appendTo($select); // Create HTML <option> element, set its value with currently iterated key and its text content with currently iterated item and finally append it to the <select>.
        });       // Locate HTML DOM element with ID "somediv" and set its text content with the response text.
    });
});
</script>
</body>
</html>
http://localhost:8080/TestApplication/Home.jsp?apiname=&apiendpoint=&apiversion=&check=Check