我正在尝试构建一个基本的MVC应用程序使用spring boot,以Hibernate作为ORM,MySql作为数据库。我面临的问题是jsp视图没有得到解决。
当我尝试使用具有以下URL的get请求获取注册表单时,会出现404错误:
http://localhost:9000/users/register/
这是我在应用程序中的设置。
目录结构:
-src
-main
-java
-com
ApplicationStart.java
-controllers
UserController.java
-repositories
UserRepository.java
-webapp
-WEB-INF
-jsp
register.jsp
-resources
application.properties
用户控制器:
@RestController
public class UserController {
private UserRepository userRepository;
@Autowired
public UserController(UserRepository userRepository)
{
this.userRepository = userRepository;
}
@RequestMapping(value = "/users/register", method = RequestMethod.GET)
public String Register()
{
return "register";
}
}
应用程序.属性:
服务器端口:9000
spring.datasource.url:jdbc:mysql://localhost/contacts
spring.datasource.driverClassName:com.mysql.jdbc.driver
spring.datasource.username:root
spring.datasource.password:
spring.view.prefix:/web-inf/jsp/
spring.view.suffix:.jsp
pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- HIBERNATE -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
</dependency>
<!-- MYSQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
</dependencies>
主类
@ComponentScan
@Configuration
@EnableAutoConfiguration
public class ApplicationStart {
public static void main(String[] args)
{
SpringApplication.run(ApplicationStart.class, args);
}
}
这是我的应用程序的当前设置。对于如何解决这个问题的任何帮助都非常感谢。
如果需要更多信息,请评论。
谢谢-
我最近在升级一个旧项目时遇到了这个问题,该项目需要将JSP
作为视图技术,并将Tomcat
作为嵌入式Servlet-Container
。注意:选择一个替代的模板引擎,如果可以的话,避免使用JSP。但是,如果您无法避免JSP,并且您的应用程序无法解决它们,那么在撰写本文时(spring-boot2.x.x),请确保以下内容:
Java-jar war-filename.war
@controller
批注,但没有annnotation@enablewebmvc
。这是因为您正在使用spring-boot
为您配置WebMVC。@componentscan
注释?application.properties
应该具有如下内容:spring.mvc.view.prefix:/web-inf/jsp/spring.mvc.view.suffix:.jsp
此外,由于您使用的是spring引导,因此应用程序
不需要扩展SpringBootServletInitializer
。它也可以工作,但是为了保持简单,您所需要的只是一个如下所示的类:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
请注意,下面提到了所需的最小依赖集(Maven示例):
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
<dependencies>
<!-- spring-boot dependencies below -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- jstl and jsp compilation support below -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
spring boot对JSP的支持有限,因为它使用了嵌入式servlet容器。摘自spring boot参考文件:
当运行使用嵌入式servlet容器(并打包为可执行存档)的spring boot应用程序时,JSP支持存在一些限制。
从使您的应用程序成为一个可执行的war开始,并确保您使用了Tomcat(启动应用程序时查看日志)。除非您明确声明应该包含Jetty,否则您将使用Tomcat,因为它是默认提供的。或者,尝试更改您的视图技术,这可能需要更多的初始工作,但可以显著减少开发期间的周转时间,请参见热交换。
我在tomcat 7本地应用程序服务器上使用JSP 1.2和JSTL或Spring的taglib声明。但是,无论文件是在WEB-INF/lib下还是在类路径的其他位置,我总是会收到这样的错误:绝对uri:http://java.sun.com/jsp/jstl/core无法在web.xml或与此应用程序一起部署的jar文件中解析绝对uri:http://www.springframework.or
我正在处理一个Spring boot项目,我使用了JSP文件并提供了Whitelabel错误页面。有一个意外的错误(type=Not ville, status=404)。 我已经将JSP放在/src/main/webapp/pages/中,并且已经用应用程序属性给出了路径。 这有几个模块,主要组件不包括Spring Boot依赖性,它只包括所需的特定模块。从其他模块继承的代码已用于Spring
当应用程序在AWS Elasticbeanstrok上运行时,有人知道如何从资源文件夹中读取文件吗? 请参阅下面的代码: 这是错误消息: JAVA木卫一。FileNotFoundException:类路径资源[application.properties]无法解析为绝对文件路径,因为它不位于文件系统:jar:file:/var/app/current/application中。罐子/BOOT-IN
Springboot 2.5.13,swagger2:实现" io . spring fox:spring fox-boot-starter:3 . 0 . 0 "实现" io . spring fox:spring fox-swagger-ui:3 . 0 . 0 " 运行时错误:无法解析名为“forward:/swagger ui/index.html”的视图
我在用 嵌入式Jetty 9。 Maven Java 1.7 JSTL 当我在Eclipse中运行应用程序并浏览到包含JSTL标记的网页时,它工作得很好。当我将它捆绑在可执行jar中并从cmd提示符运行时,我得到 我是不是漏掉了一些明显的东西!?
你好,我写和销售机票的后端服务,我试图为这个api编写测试。当我试图为AirlineCompanyController类编写createAirlineCompany测试时,我得到了这个错误。 我的测试班: 还有我的航空公司服务舱: 我的航空公司Imp课程: 我得到的错误是来自then返回()方法,我不知道如何解决这个问题。谢谢大家。