Java 在JSP中使用jQueryAjax没有调用Servlet?

Java 在JSP中使用jQueryAjax没有调用Servlet?,java,jquery,ajax,jsp,servlets,Java,Jquery,Ajax,Jsp,Servlets,我第一次使用JSP和Ajax。我试图从数据库中获取一列数据,并使用Ajax调用将其填充到JSP页面的下拉列表中。我不想刷新页面,这就是原因,我正在进行Ajax调用 这是我的,它有进程按钮,只要我点击进程按钮,它就会显示一个空的下拉列表。这在我的另一个test.jsp页面中 我有一个表,名为account,我需要从jsp进行这个select查询- SELECT USERS FROM ACCOUNT; 只要我点击Process按钮,我就需要使用Ajax在我的POSTGRESQL数据库上执行上面的S

我第一次使用
JSP
Ajax
。我试图从数据库中获取一列数据,并使用Ajax调用将其填充到JSP页面的下拉列表中。我不想刷新页面,这就是原因,我正在进行Ajax调用

这是我的,它有进程按钮,只要我点击进程按钮,它就会显示一个空的下拉列表。这在我的另一个
test.jsp
页面中

我有一个表,名为
account
,我需要从jsp进行这个select查询-

SELECT USERS FROM ACCOUNT;
只要我点击Process按钮,我就需要使用Ajax在我的POSTGRESQL数据库上执行上面的SQL查询。无论是什么用户,我从数据库返回,我需要在我的下拉列表中填充这些
用户
,如上面的JSFIDLE所示

下面是我使用Ajax从JSP页面调用的servlet代码

@WebServlet("/someservlet/*")
public class SomeServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) {
        try {

            System.out.println("Hello Test");
            // Step 1. Load the JDBC driver
            Class.forName("org.postgresql.Driver");

            // Step 2. Create a Connection object
            Connection con = DriverManager.getConnection(
                    "jdbc:postgresql://localhost/test","root", "root!");

            Statement s = con.createStatement();

            String sql ="SELECT USERS FROM ACCOUNT";
            ResultSet rs = s.executeQuery(sql);
            List<String> list = new ArrayList<String>();

            while (rs.next()) {
                list.add(rs.getString("email"));
            }
            String json = new Gson().toJson(list);
            response.getWriter().write(json);
            rs.close();
            s.close();
            con.close();
        } catch (ClassNotFoundException e1) {
            e1.printStackTrace();
        } catch (SQLException e2) {
            e2.printStackTrace();
        } catch (Exception e3) {
            e3.printStackTrace();
        }
    }
}
问题陈述:-

但不知何故,它根本不起作用,这意味着我的servlet根本不会被使用Ajax从JSP页面调用。我的System.out也没有从servlet打印到控制台上

另外,我还有一个servlet。这是我创建的第二个servlet。也许这就是原因

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
           version="2.5">

</web-app>

问题是这个类不是一个
Servlet
。它就像一个普通的Java类

它应该扩大

声明此批注的类必须扩展

始终尝试在编译类型本身中使用注释替代方法来捕获此类错误

jQuery的
get(…)
需要有效的URL。 下面是我对您提供的代码片段所做的尝试。这将转到servlet。 1.提供jQuery-version.js文件

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" ></script>
  • servlet

    @WebServlet("/someservlet/*")
    public class TestServlet extends HttpServlet{
        public void doGet(HttpServletRequest request, HttpServletResponse response) {
            System.out.println("Hello Test");
            String json = "Hello from servlet";
            try {
                response.getWriter().write(json);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    

  • 请使用
    @WebServlet(“/someservlet”)
    再试一次。您提到的更改已经存在于我的代码中,除了extends
    HttpServlet
    之外。我也添加了这些更改,但仍然不起作用。还有什么我遗漏的吗:(这对我来说很好。你能发布你的
    web.xml
    ?开始时发生的另一件奇怪的事情是我必须给出
    $.get()的完整URL。)
    方法,因为相对URL在我第一次试用时不起作用,即我必须给出类似
    http://localhost:8080/TestServlet/someservlet
    。您在这里更改了吗-
    $.get('someservlet',函数(responseJson)
    ?是的,
    $.get('http://localhost:8080/TestServlet/someservlet,函数(responseJson)
    我还使用了双引号。不知道这是否有什么区别。或者说,它根本没有击中它。(谢谢你,布拉伊,是的,我已经更正了我的代码,但它仍然没有击中。你知道我遗漏了什么吗:(
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" ></script>
    
    $.get('someservlet', function(responseJson) {
    alert(responseJson);
    var $ul = $('<ul>').appendTo($('#somediv'));
    $.each(responseJson, function(index, item) {
    $('<li>').text(item).appendTo($ul);
    });
    }); 
    
    @WebServlet("/someservlet/*")
    public class TestServlet extends HttpServlet{
        public void doGet(HttpServletRequest request, HttpServletResponse response) {
            System.out.println("Hello Test");
            String json = "Hello from servlet";
            try {
                response.getWriter().write(json);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }