我对网络开发很陌生,今年夏天我在Spring上的一个网络应用程序上工作,但该应用程序已经设置好了,只是做了一些Java和AngularJS。但现在我有一些问题从头开始这种类型的应用程序。我试图测试一个简单的Web服务,但无法访问我想要的网址,我收到404错误。我正在使用Tomcat 8.5.4开发Intellij:
的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>seb</groupId>
<artifactId>webapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.10.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
应用context.xml中
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/data/jpa
http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
http://www.springframework.org/schema/context">
<jpa:repositories base-package="repository" />
<mvc:annotation-driven/>
<context:component-scan base-package="controller" />
</beans:beans>
的web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>springrest</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springrest</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
Main.java
@SpringBootConfiguration
@EnableJpaRepositories("repository")
public class Main {
public static void main (String[] args) {
SpringApplication.run(Application.class, args);
}
}
StudentController.java
@RestController
public class StudentController {
private final StudentService studentService;
public StudentController(final StudentService studentService) {
this.studentService = studentService;
}
@RequestMapping(value = "/student", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public void getSomeStudent() {
studentService.getSomeStudent();
System.out.println("Hello");
}
}
我想要访问的网址是:localhost:8080 / webapp / student,但没有任何反应,只是有404错误。我想我忘记了一些事情,但我在网上查看了一些教程和问题,无法想出如何修复我的项目。所以,如果有人得到一些可以帮助我的线索,那将非常有帮助。先谢谢。
答案 0 :(得分:0)
将@SpringBootConfiguration更改为@SpringBootApplication,它会为您配置以下内容
- @Configuration将该类标记为应用程序上下文的bean定义源。
- @EnableAutoConfiguration告诉Spring Boot开始根据类路径设置,其他bean和各种属性添加bean 设置。通常你会为Spring MVC应用添加@EnableWebMvc, 但Spring Boot会在看到spring-webmvc时自动添加它 类路径。这将应用程序标记为Web应用程序和 激活关键行为,例如设置
- @ComponentScan告诉Spring在hello包中寻找其他组件,配置和服务,允许它 找到HelloController。
由于您使用的是spring-boot,请添加以下依赖项,并删除web.xml,其中spring-boot会自动为您配置Web调度程序servlet
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
或者如果您愿意,您仍然可以继续配置。
根据您的初始设置,控制器应位于
http://localhost:8080/student(没有'webapp')
答案 1 :(得分:0)
好吧,我停止尝试在tomcat上部署我的应用程序,我现在只使用spring,我可以访问我的URL。无论如何,我将深入研究spring文档和教程,感谢不同的解释和链接。
答案 2 :(得分:-1)
使用https://start.spring.io/创建Spring Boot Application项目。
这将为您生成spring boot maven项目。
然后在那里添加你的StudentController。
并且当@jahra指定时,您必须触发URL:http://localhost:8080/student才能访问您的学生网络服务