Spring 5: Как загрузить статические ресурсы (css, js, images) - PullRequest
0 голосов
/ 06 июля 2018

Я обновляю проект с Spring 4 до Spring 5, но загрузка статических ресурсов не работает. У меня есть ресурсы в src/main/resources/static/js, src/main/resources/static/css и src/main/resources/static/images

Я добавляю ResourceHandler в WebConfig следующим образом

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.job.controllers"})
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**")
            .addResourceLocations("classpath:/static/");
    }
    // more code here
}

Моя конфигурация безопасности, разрешающая доступ к статическим ресурсам, выглядит следующим образом

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
   @Override 
   protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/login**", "/static/**").permitAll()
   }
}

Когда я получаю доступ http://localhost:8080/static/css/file.css

Я получаю ошибку 405 Request method 'GET' not supported

Кажется, проблема не в настройке безопасности, поскольку она не перенаправляет меня на страницу входа. Если я пытаюсь использовать общедоступный URL-адрес, например http://localhost:8080/some-place/css/file.css, я перенаправляюсь на страницу входа.

Кажется, проблема в ResourceHandler.

Мои зависимости: spring-framework - 5.0.2.RELEASE and spring-security-5.0.0.RELEASE

Ни один из ответов на другие вопросы не работает для меня. другой вопрос- Спасибо

1 Ответ

0 голосов
/ 08 июля 2018

Я понял, что когда я закомментировал строку @ComponentScan(basePackages = {"com.job.controllers"}) в классе WebConfig, статические ресурсы будут загружаться.

Это означало, что проблема была в одном из моих контроллеров.

Был сопоставлен один метод контроллера @RequestMapping(params = "settings/view", method = RequestMethod.POST)

Это отображение обнаружилось как INFO Mapped "{[],methods=[POST],params=[settings/view]}" onto ..... в журналах запуска

Это было неправильное отображение, и оно не давало статическим ресурсам загружаться.

Когда я исправил 'params' в 'value' следующим образом => @RequestMapping(value = "settings/view", method = RequestMethod.POST) статические ресурсы загружены.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...