2016-03-14 2 views
0

Это первый раз, когда я пытаюсь создать приложение mvc весны. Это, как я настроил моя весна приложениеБорьба с развертыванием Spring mvc со статическими страницами

Project API Initializer

public class ProjectApiInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 
    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return new Class[] {ProjectApiConfiguration.class}; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return null; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[] {"/"}; 
    } 
} 

Конфигурация

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages = "com.rootpackage.api") 
public class ApiConfiguration { 
} 

Обратите внимание, что пружинные отображения на /. Который работает нормально, когда я получить доступ к URL-адрес localhost:8080/client/<client_id>/token

контроллер

@RestController 
public class ApiController { 
    @RequestMapping(value = "/client/{clientId}/token", consumes = APPLICATION_JSON_VALUE) 
    public ResponseEntity getClientToken(@PathVariable String clientId){ 
     Message msg = new Message("hello " + clientId); 
     return new ResponseEntity<>(msg, HttpStatus.OK); 
    } 
} 

Я не имею никакого web.xml. Api доступен по адресу localhost:8080/client/<client_id>/token.

Теперь я создал статическую html-страницу в папке webapp и попытался получить к ней доступ на странице localhost:8080/static_html.html, но tomcat вернулся 404. Зачем ? Что мне здесь не хватает?

+0

Вы настроили статические обработчики ресурсов? –

+0

У меня есть инициализатор и настройка ... нет обработчика ресурсов. Что это ? –

ответ

0

Вы должны настроить обработчик ресурсов, например .:

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages = "com.rootpackage.api") 
public class ApiConfiguration extends WebMvcConfigurerAdapter { 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("/**").addResourceLocations("/public-resources/"); 
    } 
} 

Где "Государственно-ресурсы" папка/пакет в вашем JAR классам.

+0

Я добавил эту строку в 'addResourceHandlers' ...' registry.addResourceHandler ("/ **") .addResourceLocations ("/ webapp /"); 'где моя статическая html-страница находится в каталоге' webapp'. Когда я попытался получить доступ к нему в http: // localhost: 8080/ .html', он возвратил 404 ... хотя я вижу метод 'doFilters', который вызывается. –

+0

Попробуйте .addResourceLocations ("/"); Вместо этого –

+0

Каталог 'webapp' не является частью вашего файла войны. Он представляет собой корень веб-приложения. Поместите ваши файлы прямо в этот каталог или в любой подкаталог и передайте соответствующий путь к методу addResourceLocations, как мы рекомендовали («/» или «/ dir-name /»). – pgiecek

0

Измените свой класс ApiConfiguration следующим образом, поместите ваши статические файлы под папку static в корень веб-приложения и попытайтесь получить к ним доступ через http://localhost:8080/static/some-html.html.

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages = "com.rootpackage.api") 
public class ApiConfiguration extends WebMvcConfigurerAdapter { 

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

} 
Смежные вопросы