@ilavio

Java Spring MVC не видит представления, почему?

День добрый!
Изучаю java. Перешел к спринг. Уперся в стену, вот уже 1.5 мес. Работаю через Eclipse. Скачал tomcat. Открыл видео про java spring MVC, начал повторять за преподавателем, он работал в Intel idea. В итоге мое web приложение открывает только файл index.isp созданное maven.
Ладно, думаю сделал косяк попробую другой урок. Нашел сайт где пошагово делают простой Spring MVC. Тупо по шагам копирую каждое действие. Итог тот же. Гуглю, вычитал что если не правильно настроен контроллер, то он ищет альтернативу для отображения, АГА! Удаляю этот index.jsp и ОТОБРАЖАЕТСЯ это же страница! Страница которой нет в проекте! Адругие представления не видит!!!
Что надо настроить? или подправить код? В какую сторону дышать?
Выложил все в Github: https://github.com/ilavio/SpringMVC_lesson3

https://github.com/ilavio/SpringLesson2
Для удобства тестирования.

Вот код основных классов:
Класс конфигурационный:
package com.javabycode.config;

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;


@SuppressWarnings("deprecation")
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "springmvc.src.main.java.com.javabycode")
public class MyWebConfig extends WebMvcConfigurerAdapter {
	
	@Bean
	public ViewResolver viewResolver() {
		InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
		viewResolver.setViewClass(JstlView.class);
		viewResolver.setPrefix("/WEB-INF/views/");
		viewResolver.setSuffix(".jsp");
		return viewResolver;
	} //
	
	
	@Bean
	public MessageSource messageSource() {
	    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
	    messageSource.setBasename("messages");
	    return messageSource;
	}
 
	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
	    registry.addResourceHandler("/static/**").addResourceLocations("/static/");
	}
	
}


Класс сервелет:
package com.javabycode.config;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

public class ServletInitializer implements WebApplicationInitializer {

	public void onStartup(ServletContext container) throws ServletException {
		// TODO Auto-generated method stub
		AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
		ctx.register(MyWebConfig.class);
		ctx.setServletContext(container);
 
		ServletRegistration.Dynamic servlet = container.addServlet(
				"dispatcher", new DispatcherServlet(ctx));
 
		servlet.setLoadOnStartup(1);
		servlet.addMapping("/");
	}
	
	
	
}


Класс контроллер:
package com.javabycode.springmvc;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.javabycode.model.Employee;



@Controller
@RequestMapping("/")
public class MyController {
	
	/*
	 * This method will serve as default GET handler.
	 */
	@RequestMapping(method = RequestMethod.GET)
	public String newProfile(ModelMap model) {
		Employee employee = new Employee();
		model.addAttribute("employee", employee);
		return "employee";
	}
 
	/*
	 * This method will be called on form submission, handling POST request It
	 * also validates the user input
	 */
	@RequestMapping(method = RequestMethod.POST)
	public String saveProfile(Employee employee,
			BindingResult result, ModelMap model) {
 
		if (result.hasErrors()) {
			return "employee";
		}
 
		model.addAttribute("success", "Dear " + employee.getFirstName()
				+ " , your profile completed successfully");
		model.addAttribute("employee",employee);
		return "success";
	}
 
 
	/*
	 * Method used to populate the country list in view. Note that here you can
	 * call external systems to provide real data.
	 */
	@ModelAttribute("countries")
	public List<String> initializeCountries() {
 
		List<String> countries = new ArrayList<String>();
		countries.add("USA");
		countries.add("Canada");
		countries.add("France");
		countries.add("Indonesia");
		countries.add("Australia");
		countries.add("Other");
		return countries;
	}

}
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 1
@zdezak
Пара ошибок в файле MyConfig.java
1.@ComponentScan(basePackages = "springmvc.src.main.java.com.javabycode"). Должно быть от папки Java и выглядеть следующим образом - @ComponentScan(basePackages = "com.javabycode").
2. Строка viewResolver.setPrefix("/WEB-INF/views/"); на GitHub выглядит как viewResolver.setPrefix("/WEB-INF/views/*");.
Звездочка в конце не нужна.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
23 окт. 2020, в 05:33
15000 руб./за проект
23 окт. 2020, в 03:00
1500 руб./за проект