Spring MVC - działanie aplikacji na stronach html a nie jsp

0

Witam. Stworzyłem swój projekt Spring MVC i mam pewien problem, mianowicie jako strona startowa ładuje mi się strona jsp, próbowałem zmieniać w konfiguracji, żeby szukał plików z rozszerzeniem html

	@Bean
	public ViewResolver getViewResolver(){
		InternalResourceViewResolver resolver = new InternalResourceViewResolver();
		resolver.setPrefix("/WEB-INF/views/");
		resolver.setSuffix(".jsp");
		return resolver;
	}

zmieniłem na

 resolver.setSuffix(".html");

Ale to nie działa, dostaję błąd 404 i warninigi na serwerze

paź 29, 2014 1108 AM org.springframework.web.servlet.DispatcherServlet noHandlerFound
WARNING: No mapping found for HTTP request with URI [/iBank/WEB-INF/views/home.html] in DispatcherServlet with name 'SpringDispatcher'

Jak zrobić, żeby aplikacja działała na stronach html a nie jsp? W ogóle co to za pomysł, żeby domyślnie ustawiało jsp, którego dawno się nie używa? Wie ktoś jak sobie z tym poradzić?

0

Co wpisujesz w przeglądarce ? xxx/mojastronaczy czy xxx/mojastrona**.html ?**.

Pokaż kontroller

0

@olek1

  1. JSTL to nie JSP. Takie rozszerzenie wynika tylko z tego że niektóre IDE automatycznie wykryją formatowanie i pokolorują kod jak widzą rozszerzenie jsp ;]
  2. Źle to robisz. Z błędu wynika że próbowałeś wejśc na stornę localhost/iBank/WEB-INF/views/home.html a zapewne kontroler wcale nic takiego nie mapuje, tylko mapuje jakiś sensowny URL w stylu /iBank/ albo /iBank/mojaturbostrona ;] Pokaz kod kontrolera...
0

Nic nie kombinowałem specjalnie w tym projekcie, utworzyłem tylko projekt Spring z archetypu i mam taki domyślny kontroler:

@Controller
public class HomeController {

	@RequestMapping(value="/")
	public ModelAndView test(HttpServletResponse response) throws IOException{
		return new ModelAndView("home");
	}
}

A projekt uruchamiam po prostu zieloną strzałką w IDE.

Jeszcze plik konfiguracyjny w razie czego:

@Configuration
@ComponentScan(basePackages="pl.iBank")
@EnableWebMvc
public class MvcConfiguration extends WebMvcConfigurerAdapter{

	@Bean
	public ViewResolver getViewResolver(){
		InternalResourceViewResolver resolver = new InternalResourceViewResolver();
		resolver.setPrefix("/WEB-INF/views/");
		resolver.setSuffix(".html");
		return resolver;
	}
	
	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
	}

	
}

w tym zmieniłem w setSuffix z jsp na html.

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>iBank</display-name>
	<context-param>
		<param-name>contextClass</param-name>
		<param-value>
			org.springframework.web.context.support.AnnotationConfigWebApplicationContext
		</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<servlet>
		<servlet-name>SpringDispatcher</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextClass</param-name>
			<param-value>
				org.springframework.web.context.support.AnnotationConfigWebApplicationContext
			</param-value>
		</init-param>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>pl.iBank</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>SpringDispatcher</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

	<session-config>
		<session-timeout>30</session-timeout>
	</session-config>
</web-app>
0

No ale co masz otwarte jak klikasz tą zieloną strzalkę? Bo eclipse lubi w takich sytuacjach robić "run file" zamiast "run project" ;] co masz w pasku adresu w przeglądarce? i jak wygląda w tym projekcie struktura katalogów?

0

Nie no na pewno uruchamia się projektk bo pyta mnie np czy uruchomić na serwerze. Z jsp uruchamia się normalnie. W url mam: http://localhost:8080/iBank/
Struktura taka: http://zapodaj.net/47303ba66a374.jpg.html

0

Na oko wyląda ok. Pewny jesteś że sie przebudowało poprawnie?

0

Tak na bank. Jak dodałem do kontrolera takie coś to działa teraz i strona html:

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

Ale nie bardzo wiem co to robi.

0

Jednak nie uporałem się z tym dziadostwem. Mam tylko jeszcze jedno pytanie. Dlaczego Spring tworzy domyślnie strony jsp i obsługuje je? Przecież to przestarzała technologia.

1

Powtórze jeszcze raz: JSP to nie jest JSTL! Spring korzysta ze standardowego javowego silnika szablonów JSTL, tego samego z którego korzystało JSP. Jest kupa edytorów które "rozpoznają" kolorowanie i podpowiadanie składni w plikach JSP. Ten plik mógłbyś nazwać .alamakota zamiast .jsp tylko że niektóre edytory nie będą ci wtedy kolorować w nim składni. Pliki o których mowa NIE ZAWIERAJĄ kodu pisanego w JSP. Zawierają tylko tagi JSTL.
A czemu taki jest default? Bo java standardowo zawiera ten silnik szablonów. Nikt nie broni zmienić na Velocity czy Freemarkera (ja bym nawet polecał).

To jest tak jak z mieszaniem kodu PHP z HTMLem. To są dwie zupełnie oddzielne rzeczy. Można używać ich osobno, ale można też je pomieszać w jednym pliku .php Ale to nie sprawia nagle że HTML stał się tym samym co PHP...

0

Ok, ale ja nie pytam czemu korzysta z JSTLa, tylko czemu tworzy domyślnie strony jsp. Przecież jstla można używać na stronach html. A widzę Spring wszystko dostosowuje pod te dynamiczne strony JSP. A zmiana z tych stron jsp żeby projekt działał z tego co czytałem nie jest taka prosta, że zmienia się tylko ten suffix w ViewResolverze i wszystko gra. Tutaj znalazłem coś na ten temat: http://stackoverflow.com/questions/15479213/how-to-serve-html-files-with-spring Niby gościowi zadziałało, ale u mnie coś nie poszło.

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