Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc Spring自定义登录页仅在IDE中显示_Spring Mvc_Spring Boot_Jar_War - Fatal编程技术网

Spring mvc Spring自定义登录页仅在IDE中显示

Spring mvc Spring自定义登录页仅在IDE中显示,spring-mvc,spring-boot,jar,war,Spring Mvc,Spring Boot,Jar,War,我正在用Spring Boot开发一个REST-API。现在我还想充当OAuth2提供者,因此我想添加对“client_credentials”授权类型的支持 为了做到这一点,我必须允许用户登录并授权客户端。Spring提供了一个丑陋的默认登录表单,现在我想显示自己的自定义登录表单 问题是我无法让它在IDE之外工作 我的配置如下所示: @Configuration @EnableWebSecurity public class SpringSecurityConfig extends WebSe

我正在用Spring Boot开发一个REST-API。现在我还想充当OAuth2提供者,因此我想添加对“client_credentials”授权类型的支持

为了做到这一点,我必须允许用户登录并授权客户端。Spring提供了一个丑陋的默认登录表单,现在我想显示自己的自定义登录表单

问题是我无法让它在IDE之外工作

我的配置如下所示:

@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().requireCsrfProtectionMatcher(new AntPathRequestMatcher("**/login")).and().authorizeRequests().antMatchers("/hellopage").hasAuthority(Role.USER.value())
                .and().formLogin().defaultSuccessUrl("/hellopage").loginPage("/login").and().logout().permitAll();
    }

    @Override
    public void configure(WebSecurity web) throws Exception {
        web.ignoring().antMatchers("/*.css");
        web.ignoring().antMatchers("/*.js");
    }
}

@Configuration
protected class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/*.js/**").addResourceLocations("/ui/static/");
        registry.addResourceHandler("/*.css/**").addResourceLocations("/ui/static/");
    }

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("login");
        registry.addViewController("/login").setViewName("login");
        registry.addViewController("/testpage").setViewName("testpage");
        registry.addViewController("/hellopage").setViewName("hellopage");
    }

    @Bean
    public InternalResourceViewResolver setupViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/ui/jsp/");
        resolver.setSuffix(".jsp");
        resolver.setViewClass(JstlView.class);
        return resolver;
    }
我的文件夹结构如下所示:

当我在Eclipse中运行我的应用程序并访问时,一切都正常工作,并显示我的自定义登录表单。当我用maven打包应用程序并执行生成的.war文件时,visiting显示了丑陋的默认登录表单,这让我相信spring无法找到自定义表单的资源

当我尝试访问任何其他.jsp(如
testpage.jsp
)时,会出现以下错误(当应用程序从我的IDE运行时,这也可以正常工作):

我正在使用docker容器部署我的应用程序,该容器使用
java-jar myserver.war
运行.war文件,因此这对我来说是可行的


如何确保Spring在执行.war文件时能够找到我提供的资源?

默认情况下,Maven希望jsp位于/WEB-INF/*位置

您可以将jsp保存在
src/main/webapp/WEB-INF/jsp
中。您还可以相应地更新
InternalViewResolver
前缀


有关详细说明,请参考

尝试将JAR保存在src/main/webapp/WEB-INF/jsp中。。你也可以考虑建立一个胖罐子而不是战争(如果你还没有)。根据你的图片,你得到了HTTP 500内部服务器错误,你可以分享你的堆栈跟踪吗?原来解决方案确实是把它放入Web-INF -所以我的文件夹结构是<代码> SRC/main /WebAPP/WEB-INF/JSP现在它起作用了。如果你想提供答案,我可以接受。