【发布时间】:2016-06-09 20:27:42
【问题描述】:
为了让我的基本 rest-api(只有 GET)正常工作,我创建了这个设置:
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>app</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>app</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>app</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
接下来我有这个 api 控制器:
package packagename.controller.api;
import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import packagename.model.Home;
@RestController
public class HomeApiController {
@RequestMapping("/api/home")
public Home greeting() {
return new Home(1, "asdas");
}
}
以及实际的 Home 模型:
package packagename.model;
public class Home {
private final long id;
private final String content;
public Home(long id, String content) {
this.id = id;
this.content = content;
}
public long getId() {
return id;
}
public String getContent() {
return content;
}
}
当我创建war文件并将其放入我的tomcat服务器的webapps文件夹时,我打开“localhost:8080/webappname/api/home”。
接下来我得到 404 错误,但我不知道为什么。
有人可以帮我完成这个设置吗? 谢谢和问候!
【问题讨论】:
-
您已经将 Spring Boot 与传统的 Web 应用程序混合在一起。 RestController 就足够了,不需要指定 web.xml。您需要删除 web.xml 并添加依赖项
spring-boot-starter-tomcat并将其标记为provided并将packaging更改为war并在没有 web.xml 的情况下继续配置 war 插件。 -
是的,你可以。请在 servlet 设置中使用
/**而不是/作为您的url-pattern。 -
我添加了这个更改,但还剩下 404 ..
标签: spring api rest http controller