Java 在带有@EnableWebMvc的Spring Boot应用程序中没有GET/resources/views/home.jsp的映射

Java 在带有@EnableWebMvc的Spring Boot应用程序中没有GET/resources/views/home.jsp的映射,java,spring,spring-boot,Java,Spring,Spring Boot,@EnableWebMvc打破了自动配置提供的默认映射,因此我添加了InternalResourceViewResolver,但这无助于获取视图。当我进入时: http://localhost:8090/logIn 我在控制台中收到以下消息: No mapping for GET /resources/views/home.jsp 可能是映射到/*的DispatcherServlet,如果是,如何将嵌入式DispatcherServlet的映射更改为/ 项目结构: main +- ja

@EnableWebMvc打破了自动配置提供的默认映射,因此我添加了InternalResourceViewResolver,但这无助于获取视图。当我进入时:

http://localhost:8090/logIn
我在控制台中收到以下消息:

No mapping for GET /resources/views/home.jsp
可能是映射到
/*
DispatcherServlet
,如果是,如何将嵌入式
DispatcherServlet的映射更改为
/

项目结构:

main  
 +- java  
 |    +- app
 |        +- Application.java  
 |        +- web
 |            +- LogInController.java
 |        +- config
 |            +- ViewResolverConfig.java    
 +- resources
      +- views
          +- home.jsp
      +- application.properties
Application.java

@SpringBootApplication
@Import(ViewResolverConfig.class)
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}
viewsolverconfig.java

@Configuration
@EnableWebMvc
public class ViewResolverConfig implements WebMvcConfigurer {
    @Bean
    public ViewResolver internalResourceViewResolver() {
        InternalResourceViewResolver bean = new InternalResourceViewResolver();
        bean.setViewClass(JstlView.class);
        bean.setPrefix("resources/views/");
        bean.setSuffix(".jsp");
        return bean;
    }
}
LogInController.java

@Controller
@RequestMapping("/logIn")
public class LogInController  {

    @GetMapping
    public String enterPage(Model model){
        return "home";
    }
}

对于初学者,我强烈建议不要在springboot中使用JSP,因为存在严重的限制,而且技术已经过时,最好使用类似THymeleaf的东西。也就是说,您的
前缀
属性是错误的。删除
resources/
部分,即使这样,它也可能会失败(由于所提到的限制)@M.Deinum谢谢,不幸的是,它在建议的修复中失败了。我在
resources/templates/
中查看了Thymeleaf和home.html。但是我没有从带有资源处理程序的
resources/static
中获得static
welcome.html
,它的路径模式是
/static/**
,并且在资源位置具有
classpath:/static/
。我在控制器中使用
返回“static/welcome.html”
。具有所述配置的我的应用程序已成功提供
资源/static/style.css
。如果您能给我提供有关服务静态页面的建议,我将不胜感激。从控制器返回的视图将传递到
viewsolver
。您不应该为静态页面设置控制器。您还应该删除
viewsolverconfig
类,因为Spring Boot已经完成了所有这些操作。@M.Deinum谢谢。我理解。实现相同行为的正确方法是什么,它给我控制器提供了
if(isUserCredentialsValid()){return“redirect:static/welcome.html”;}否则{return“logIn”;}
不要使用控制器来使用过滤器。另外,您也不想使用Spring security来实现您自己的安全性。对于初学者,我强烈建议不要将JSP与Spring引导一起使用,因为存在严重的限制,而且技术已经过时,您最好使用类似THymeleaf的东西。也就是说,您的
前缀
属性是错误的。删除
resources/
部分,即使这样,它也可能会失败(由于所提到的限制)@M.Deinum谢谢,不幸的是,它在建议的修复中失败了。我在
resources/templates/
中查看了Thymeleaf和home.html。但是我没有从带有资源处理程序的
resources/static
中获得static
welcome.html
,它的路径模式是
/static/**
,并且在资源位置具有
classpath:/static/
。我在控制器中使用
返回“static/welcome.html”
。具有所述配置的我的应用程序已成功提供
资源/static/style.css
。如果您能给我提供有关服务静态页面的建议,我将不胜感激。从控制器返回的视图将传递到
viewsolver
。您不应该为静态页面设置控制器。您还应该删除
viewsolverconfig
类,因为Spring Boot已经完成了所有这些操作。@M.Deinum谢谢。我理解。实现相同行为的正确方法是什么,它给我控制器提供了
if(isUserCredentialsValid()){return“redirect:static/welcome.html”;}否则{return“logIn”;}
不要使用控制器来使用过滤器。另外,您不想实现自己的安全性,而是使用Spring安全性。