“未找到服务。” Spring 和 jQuery 中的错误(ajax 调用)
'No service was found." error in Spring and jQuery (ajax call)
我有一个 Java 服务器,在 Spring 框架下有多个 GET 和 POST 请求,工作正常。现在,我在我的项目中创建了一个 jsp 文件来创建一个简单的表单(CustomerID、Title、Message)。单击表单的提交按钮后,我想将 POST JSON 格式的表单数据提供给我的服务。当我使用 Advanced REST Client 触发它时,此服务调用(POST 请求)工作正常。但是,当部署在 Tomcat 服务器上时,这个特定的表单前端不会在浏览器中打开。相反,我的屏幕上显示 "No Service was found."。
在摆弄我的 web.xml 之后,我意识到如果删除以下代码:
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ecvServlet</servlet-name>
<servlet-class>com.***.platform.ecvcheck.NodeStatusServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ecvServlet</servlet-name>
<url-pattern>/node</url-pattern>
</servlet-mapping>
来自我的 web.xml,然后 form.jsp 文件打开就好了。但是 none 的 GET 和 POST 请求(甚至那些与 form.jsp 无关的请求)将不起作用。因此,点击提交按钮时不会调用任何服务。
我的最终 web.xml 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>feedex-app</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/appContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<listener>
<listener-class>com.***.platform.config.PlatformContextLoaderListener</listener-class>
</listener>
<display-name>feedex-app</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
有人可以帮助我如何将前端位合并到 Tomcat 服务器(webapp)中吗?
谢谢!
添加以下内容解决了问题:
<init-param>
<param-name>static-resources-list</param-name>
<param-value>/(\w)+.html</param-value>
</init-param>
我的最终 web.xml 看起来像这样。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>feedex-app</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/appContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<listener>
<listener-class>com.***.platform.config.PlatformContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<init-param>
<param-name>static-resources-list</param-name>
<param-value>/(\w)+.jsp</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ecvServlet</servlet-name>
<servlet-class>com.***.platform.ecvcheck.NodeStatusServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ecvServlet</servlet-name>
<url-pattern>/node</url-pattern>
</servlet-mapping>
<display-name>feedex-app</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
您的 CXFServlet url 映射有问题。您将映射指定为 /*。所以所有的请求,甚至是静态资源都被路由到 CXFServlet。尝试将 CXFServlet 映射到其他对象。它会工作得很好。你不需要静态资源列表。
我有一个 Java 服务器,在 Spring 框架下有多个 GET 和 POST 请求,工作正常。现在,我在我的项目中创建了一个 jsp 文件来创建一个简单的表单(CustomerID、Title、Message)。单击表单的提交按钮后,我想将 POST JSON 格式的表单数据提供给我的服务。当我使用 Advanced REST Client 触发它时,此服务调用(POST 请求)工作正常。但是,当部署在 Tomcat 服务器上时,这个特定的表单前端不会在浏览器中打开。相反,我的屏幕上显示 "No Service was found."。
在摆弄我的 web.xml 之后,我意识到如果删除以下代码:
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ecvServlet</servlet-name>
<servlet-class>com.***.platform.ecvcheck.NodeStatusServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ecvServlet</servlet-name>
<url-pattern>/node</url-pattern>
</servlet-mapping>
来自我的 web.xml,然后 form.jsp 文件打开就好了。但是 none 的 GET 和 POST 请求(甚至那些与 form.jsp 无关的请求)将不起作用。因此,点击提交按钮时不会调用任何服务。
我的最终 web.xml 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>feedex-app</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/appContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<listener>
<listener-class>com.***.platform.config.PlatformContextLoaderListener</listener-class>
</listener>
<display-name>feedex-app</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
有人可以帮助我如何将前端位合并到 Tomcat 服务器(webapp)中吗?
谢谢!
添加以下内容解决了问题:
<init-param>
<param-name>static-resources-list</param-name>
<param-value>/(\w)+.html</param-value>
</init-param>
我的最终 web.xml 看起来像这样。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>feedex-app</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/appContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<listener>
<listener-class>com.***.platform.config.PlatformContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<init-param>
<param-name>static-resources-list</param-name>
<param-value>/(\w)+.jsp</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ecvServlet</servlet-name>
<servlet-class>com.***.platform.ecvcheck.NodeStatusServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ecvServlet</servlet-name>
<url-pattern>/node</url-pattern>
</servlet-mapping>
<display-name>feedex-app</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>
您的 CXFServlet url 映射有问题。您将映射指定为 /*。所以所有的请求,甚至是静态资源都被路由到 CXFServlet。尝试将 CXFServlet 映射到其他对象。它会工作得很好。你不需要静态资源列表。