我在项目中使用了spring boot。当我使用ide启动应用程序时一切正常,但是当我运行jar文件并在浏览器中打开第一页时,我看到了这个文本:
file://
http://
https://
ftp://
webdav://
Spring启动配置类是:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
There was an unexpected error (type=Not Found, status=404).
/login.html
如何解决这个问题?
编辑 - >项目树
@EnableAutoConfiguration
@EnableTransactionManagement
@EnableJpaAuditing
@EnableCaching
@EnableWebMvc
@EnableWebMvcSecurity
@Import({SecurityLauncher.class})
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
public class Launcher extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(Launcher.class);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
super.addResourceHandlers(registry);
}
@Bean
public DispatcherServlet dispatcherServlet() {
return new DispatcherServlet();
}
@Override
public void configureDefaultServletHandling(
DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
编辑2 - > Spring安全配置:
├── src
│ ├── main
│ │ ├── java
│ │ ├── resources
│ │ └── webapp
│ │ ├── app
│ │ │ ├── css
│ │ │ ├── js
│ │ │ │ ├── controllers
│ │ │ │ ├── directives
│ │ │ │ ├── factory
│ │ │ │ ├── filters
│ │ │ │ └── services
│ │ │ ├── lib
│ │ │ ├── resources
│ │ │ ├── templates
│ │ │ └── view
│ │ └── WEB-INF
| | |__ index and login files
│ └── test
│ └── java
答案 0 :(得分:2)
@SpringBootApplication正在错误的软件包中扫描控制器,但找不到控制器,所以你必须删除@SpringBootApplication并让@ComponentScan(basePackages =" ...")查找控制器得到正确的扫描。当您启动login.html时,您是否在日志中看到了映射消息?
答案 1 :(得分:1)
通常,在Spring Boot应用程序中,您将静态文件放在src/main/resources/static
,src/main/resources/public
,src/main/resources/resources
或src/main/resources/META-INF/resources
下。您的模板属于src/main/resources/templates
。
官方documentation说:
如果您的应用程序将打包为jar,请不要使用src / main / webapp目录。虽然这个目录是一个通用标准,但它只适用于war包装,如果你生成一个jar,它将被大多数构建工具默默忽略。
答案 2 :(得分:0)
如果它只是一个html文件,则需要添加到路径 src / main / resources / static
src/main/resources/static/index.html
并称之为
http://{IP}:{port}/index.html
答案 3 :(得分:0)
问题在于contextPath。 有两种方法可以解决它:
答案 4 :(得分:0)
默认情况下,Spring Boot将从类路径中的/ static(或/ public或/ resources或/ META-INF / resources)目录或ServletContext的根目录中提供静态内容。它使用Spring MVC中的ResourceHttpRequestHandler,因此您可以通过添加自己的WebMvcConfigurerAdapter并覆盖addResourceHandlers方法来修改该行为。
在独立的Web应用程序中,还启用了容器中的默认servlet,并充当后备,如果Spring决定不处理它,则从ServletContext的根目录提供内容。大多数情况下,这不会发生(除非您修改默认的MVC配置),因为Spring总是能够通过DispatcherServlet处理请求。
默认情况下,资源映射到/ **,但您可以通过spring.mvc.static-path-pattern调整它。例如,可以按如下方式将所有资源重新定位到/ resources / **:
spring.mvc.static路径图案= /资源/ **
希望有帮助!!!