gpt4 book ai didi

java - 找不到 Spring MVC 路由 - 404

转载 作者:行者123 更新时间:2023-11-30 07:57:17 24 4
gpt4 key购买 nike

我在 WildFly 10 服务器中托管了一个 Spring 4.1.0 MVC 项目。我无法在没有收到 404 的情况下发送请求。这是我的 Controller 和方法声明之一:

@Controller
@RequestMapping("/rest/message")
public class HomeController {
@RequestMapping(method = RequestMethod.POST, value = "/register")
public @ResponseBody PostResult register(HttpServletRequest request, @RequestHeader("userUid") String userUid,
@RequestHeader("Uid") String Uid, @RequestHeader(value = "firstName", required = false) String FirstName,
@RequestHeader(value = "lastName", required = false) String LastName,
@RequestHeader(value = "emailAddress", required = false) String EmailAddress,
@RequestHeader(value = "userName", required = false) String UserName,
@RequestHeader(value = "country", required = false) String Country,
@RequestHeader(value = "password", required = false, defaultValue = "") String Password,
@RequestHeader(value = "deviceId", required = false, defaultValue = "") String deviceID) {
}

}

我正在使用 Postman 向 http://localhost:8080/rest/message/register 发送请求.我返回“404 - 未找到”。我可以成功导航到 http://localhost:8080查看 WildFly 初始屏幕。我还可以在 Controller 的构造函数中设置一个断点以查看它的构造。此外,我在服务器日志中看到以下内容让我相信该路由实际上已被注册:

INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/rest/message/register],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public com.justPick5.jp5.returnObjects.PostResult com.justPick5.jp5.HomeController.register(javax.servlet.http.HttpServletRequest,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)

为了排除参数问题的可能性, Controller 中有一个简单的方法:

@RequestMapping(method = RequestMethod.GET, value = "/testNoParams")
public @ResponseBody PostResult testNoParams() {
System.out.println("testNoParams");
return null;
}

从 Postman 执行 GET 到 http://localhost:8080/rest/message/testNoParams结果相同。

这是我的 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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">

<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</context-param>


<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>

</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

</web-app>

感谢任何帮助。

最佳答案

我想这个问题与上下文路径有关。 http://localhost:8080/ ../rest/message/testNoParams

如果我没记错的话,您需要将正确的路径放在 (/../) 上,即 WAR 已使用其他名称部署,可能是您走错了路径。

这通常发生在 wildfly 部署中。

例如:部署的 WAR 是 ABC.1.0.0-BUILD-SNAPSHOT.war,但我们经常在我们的路径中找到/ABC/。

因此,请更正上下文路径。您可以在 wildfly -> 部署 -> 部署位置执行此操作。

关于java - 找不到 Spring MVC 路由 - 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41476535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com