Java 在带有@EnableWebMvc的Spring Boot应用程序中没有GET/resources/views/home.jsp的映射
@EnableWebMvc打破了自动配置提供的默认映射,因此我添加了InternalResourceViewResolver,但这无助于获取视图。当我进入时: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
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
中获得staticwelcome.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
中获得staticwelcome.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安全性。