当前位置: 首页 > 知识库问答 >
问题:

如何在没有web.xml情况下将AJAX映射到servlet

端木阳荣
2023-03-14

TL;DR:将@webservlet(“/find-customers”)放在servlet(通过Tomcat 7部署)的开头并不是将servlet映射到host:port/webproject/find-customers中,即使servlet位于src文件夹中。

package coreservlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.*;
import javax.servlet.annotation.*;

@WebServlet("/Find-Customers")
public class ShowCustomers extends HttpServlet {
  @Override
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
      throws ServletException, IOException {


response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");

// more code here

}

  public void doPost(HttpServletRequest request,
                     HttpServletResponse response)
      throws ServletException, IOException {
    doGet(request, response);
  }
}
Webproject
--src
  --coreservlets
    --ShowCustomers.java
--WebContent
  --scripts
    --ajaxFxns.js
  --index.html

共有1个答案

何志业
2023-03-14

您能显示Ajax代码吗?Ajax调用的URL可能有问题。例如,考虑以下两种情况:

  1. 在Ajax调用中使用“/find-customers”作为URL。它将针对类似于:localhost:8080/find-customers的URL,这是不正确的。
  2. 在Ajax调用中使用“find-customers”作为URL。它将目标URL类似:。localhost:8080/webproject/find-customers,这是正确的。

Ajax调用对下面index.html和ajaxfxns.js发布的ShowCustomers Servlet很好地工作

index.html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="ISO-8859-1">
        <script type="text/javascript" src="scripts/ajaxFxns.js"></script>
        <title>Ajax post</title>
    </head>
    <body>
    </body>
</html>

ajaxfxns.js

var xhttp = new XMLHttpRequest();
xhttp.open("POST", "Find-Customers", true);
xhttp.send();
 类似资料:
  • 问题内容: 我从 JavaEE 6中 了解到,它是可选的。 因此,如果没有 web.xml ,如何告诉应用程序服务器使用Jersey作为JAX-RS规范的实现? 问题答案: 就如何在没有web.xml的情况下实现应用程序配置而言,@AlexNevidomsky的回答是正确的。您在子类上使用注释。 有关部署选项的更多信息,请参见JAX-RS规范-> 2.3发布-> 2.3.2Servlet。 或更常

  • 我正在使用实体框架映射一些表,但除非我声明一些列作为主键,否则我无法这样做。 这里的问题是,数据库中的表没有主键,并且有数百万行。我没有创建新Id列的权限。 Obs:如果我将属性添加到诸如

  • 问题内容: 我有两个hibernate类:基类和具有附加字段的扩展类。(这些字段由其他表映射。) 例如,我有: 如何在Hibernate中对此进行映射?hibernate文档说明了三种类型的继承配置:每个类一个表,一个具有类型列的表和一个联接表-在此都不适用。 我之所以需要这样做,是因为类A来自通用框架,该框架已在多个项目中重用,而类B(和Node)是特定于一个项目的扩展- 不再使用。将来,我可能

  • 我知道这可以在Servlet3.0中通过@Webservlet注释实现,在这里您只需分配url模式,而不必在web.xml中进行任何配置。是否有一种方法可以通过编程方式为运行Servlet2.5的应用程序分配servlets url模式? 我正在创建一个库,多个应用程序将依赖于它,并试图使它,以便这些应用程序中的每一个都不必显式配置任何servlet url映射,我正在创建的库中的servlet在

  • < sub >(我已经知道了答案,但是因为我经常发现自己在重新寻找答案,所以我把它贴在这里作为自己和他人的文档。这是Stackoverflow上鼓励的。) 许多 Servlet 开发人员都读过《Head First Serlet》一书 在Servlet 2.4及更低版本中,web.xml用于完全配置Web应用程序。但是更高版本似乎有其他方法来配置Web应用程序,无需触及web.xml和注释。例如,

  • 问题内容: 我希望能够以不同于web.xml的方式修改/配置过滤器。这是2个过滤器的静态配置。我希望能够静态配置一个过滤器,并允许该过滤器加载其他过滤器。我只是想知道是否有人知道lib已有此功能。 使用Servlet API 2.5 我已经在Guice的GuiceFilter中完成了此操作,其中在运行时配置了过滤器。 问题答案: 只需执行与容器已完成的相同的工作即可。即,按照servlet过滤器所