Spring boot +mvc a czysty html

0

Hej, korzystam sobie ze spring-boota i spring mvc. I teraz chciałbym sobie generować widoki w czystym html-u BEZ THYMELEAF-a. Tylko cały czas wyskakuje mi error 404.
Poniżej mój plik konfiguracyjny oraz controller. Plik .html umieściłem w folderze /resources/static

@Configuration
@ComponentScan
@Controller
@EnableAutoConfiguration
public class Config extends WebMvcConfigurerAdapter {
    @Bean
    public ViewResolver getViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/resources/static/");
        resolver.setSuffix(".html");
        return resolver;
    }

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

    @Override
    public void configureDefaultServletHandling(
            DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}

@Controller
public class MainController {

    @RequestMapping("/index")
    public String mainPage() {
        return "index";
    }
}

Z góry dzięki za wszelkie sugestie

0

Ale dodając kontroler informujesz springa, że to jest jakiś widok dynamiczny. Wywal kontroler i otwórz localhost:8080 bez żadnych dodatkowych elementów. Powinno wyświetlić zawartość index.html

0

Super, zaczęło mi się wyświetlać moja strona html, ale nie wczytuje plików css-a do niej.
Po drugie jaka jest różnica między dynamicznymi a statycznymi widokami?

0
  1. CSS - jako zasoby zdefiniowałeś tylko pliki z końcówką html.
  2. Widoki statyczne są serwowane od razu. Spring po prostu odsyła do klienta plik, wykorzystując do tego swój wewnętrzny mechanizm, coś w rodzaju uniwersalnego kontrolera do obsługi zasobów statycznych. W przypadku widoków dynamicznych, czyli w uproszczeniu tam gdzie masz kontroler, uruchamiany jest kod kontrolera, serwisy, dao itd. Następnie informacje są zbierane do mapy Model i przekazywane do mechanizmu renderującego wraz z nazwą widoku (stąd klasa ModelAndView). Mechanizm renderujący odnajduje szablon, wypełnia go danymi z mapy i odsyła do klienta.
0

ok, rozwiązałem problem z css-ami. Miałem je umieszczone w podkatalogach, dlatego trzeba było dodać dodatkowe gwiazdki w metodzie

addResourceHandler("/resources/**")

.

Teraz zadam Ci jeszcze jedno głupie pytanie. To jest tak, że jak pisze sobie stronkę w spring mvc i chce przekazać do swojego widoku, jakieś dane z modelu przez kontroler, to muszę korzystać z jakiegoś szablonu widoków typu jsp, thymeleaf etc. Czystym html-em się to nie obędzie ?

0

No właśnie swoją definicją nadpisałeś konfigurację z plikami CSS.

0

Swoją drogą polecam wszystkim jhipster. Można się dużo nauczyć z generowanych projektów, zarówno struktury jak i całej reszty przez kontrolery, serwisy, security itp.

1
kdmrulez napisał(a):

Teraz zadam Ci jeszcze jedno głupie pytanie. To jest tak, że jak pisze sobie stronkę w spring mvc i chce przekazać do swojego widoku, jakieś dane z modelu przez kontroler, to muszę korzystać z jakiegoś szablonu widoków typu jsp, thymeleaf etc. Czystym html-em się to nie obędzie ?

Czysty html, to jest interpretowany przez przeglądarkę tekst. Jednak po stronie serwera potrzebujesz jakiegoś mechanizmu, który wygeneruje dynamiczne elementy tego tekstu. Dlatego korzystamy z szablonów widoków. Ich zadaniem jest stworzenie kodu HTML.

Czy można inaczej? Można. Po stronie klienta wykorzystujemy np. AngularJS albo React.js i z serwerem komunikujemy się za pomocą AJAXa. Serwer odsyła nam dane w postaci np. JSONa, a po stronie klienta aktualizujemy widok z wykorzystaniem JavaScript. Wadą tego rozwiązania jest konieczność zapewnienia odpowiedniej wersji przeglądarki po stronie klienta. Tak by mogła ona ogarnąć nasze skrypty np. na urządzeniach mobilnych możemy mieć problemy z wydajnością. Kolejnym problemem jest indeksowanie treści. Roboty zignorują naszą stronę traktując ją jako pozbawioną treści (choć nie zawsze).

1 użytkowników online, w tym zalogowanych: 0, gości: 1