Spring启动 - 无法解析jsp视图

Bal*_*ian 6 java jsp spring-mvc spring-boot

我正在尝试使用Spring引导和Hibernate构建一个基本的MVC应用程序,如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
Run Code Online (Sandbox Code Playgroud)

UserController的:

@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";
   }

}  
Run Code Online (Sandbox Code Playgroud)

Application.properties:

server.port: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>
Run Code Online (Sandbox Code Playgroud)

主类

@ComponentScan
@Configuration
@EnableAutoConfiguration
public class ApplicationStart {
    public static void main(String[] args)
    {
        SpringApplication.run(ApplicationStart.class, args);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的应用程序的当前设置.任何有关如何解决问题的帮助非常感谢.

如果需要更多信息,请评论.

谢谢-

mat*_*sev 6

Spring Boot对JSP的支持有限,因为它使用了嵌入式servlet容器.从Spring Boot 参考文档:

运行使用嵌入式servlet容器的Spring Boot应用程序(并打包为可执行存档)时,JSP支持存在一些限制.

  • 使用Tomcat它应该可以使用war包装,即可执行的war会起作用,并且也可以部署到标准容器(不限于但包括Tomcat).由于Tomcat中的硬编码文件模式,可执行jar将无法工作.
  • Jetty目前不能用作带JSP的嵌入式容器.有一个JSP示例,您可以看到如何设置.

首先让您的应用程序成为可执行的战争,并确保使用Tomcat(在启动应用程序时检查日志).除非您明确声明应该包含Jetty,否则您使用的是Tomcat,因为默认情况下会提供.或者,尝试更改您的视图技术,这可能需要更多初始工作,但可以显着缩短开发期间的周转时间,请参阅Hotswapping.