2017-01-11 1 views
0

Я новичок в разработке Spring Boot Application. Я занимаюсь простым весенним загрузочным приложением, используя весеннюю версию загрузки 1.4.3. и Spring 4.3.5.RELEASE. Я успешно работаю в конфигурации конфигурации базы данных Mysql. Также создается таблица при запуске основного класса Spring Boot.Невозможно загрузить страницу Jsp с помощью Spring Boot 1.4.3 Версия выпуска и весна 4.3.5.RELEASE версия

Ниже Spring Загрузочный структура проекта:

SpringBootApp[boot] 
src/main/java 
    -config 
    -controller 
    -dto 
    -entity 
    -repository 
    -service 
src/main/resources 
    -application.properties 
src/test/java 
src/main/webapp 
       /recources/css 
       /resources/images 
       /resources/js 
       /WEB-INF/view/jsp/main.jsp 

DBConfig.java Я создал файл, который отнеся DB функции, как создание источника данных, JPA управления транзакциями.

Ниже WebMVC файл конфигурации:

@EnableWebMvc 
    @Configuration 
    @Import(DBConfig.class) 
    @ComponentScan(basePackages = { "com.tms" }) 
    public class SpringWebConfig extends WebMvcConfigurerAdapter { 
     @Override 
     public void addResourceHandlers(ResourceHandlerRegistry registry) { 
      registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); 
     } 

     @Bean 
     public InternalResourceViewResolver viewResolver() { 
      InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
      viewResolver.setViewClass(JstlView.class); 
      viewResolver.setPrefix("/WEB-INF/view/"); 
      viewResolver.setSuffix(".jsp"); 
      return viewResolver; 
     } 

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

Ниже App Контекст инициализатор файла:

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

     @Override 
     protected Class<?>[] getRootConfigClasses() { 
      return new Class[] { DBConfig.class }; 
     } 
     @Override 
     protected Class<?>[] getServletConfigClasses() { 
      return new Class[] { SpringWebConfig.class }; 
     } 
     @Override 
     protected String[] getServletMappings() { 
      return new String[] { "/" }; 
     } 

    } 

Я также добавил ниже строки кода в application.properties файл, чтобы определить местонахождение страниц JSP и деактивировать тимелеафа.

spring.mvc.view.prefix: /WEB-INF/jsp/ 
spring.mvc.view.suffix: .jsp 
spring.thymeleaf.check-template-location=false 

Ниже Spring Controller Java файл:

@RequestMapping("/") 
public class IndexController { 

    @RequestMapping(method = RequestMethod.GET) 
    public String printWelcome(ModelMap model) { 
     model.addAttribute("title", "Hello world!"); 
     return "main"; 
    } 
} 

Ниже образец страницы JSP:

/WEB-INF/jsp/main.jsp 

    <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 
    <html> 
    <head> 
    <title>Spring Boot</title> 
    </head> 
    <body> 

     <h2>Test Page</h2> 
     <table> 
      <tr> 
       <td>Title</td> 
       <td>${title}</td> 
      </tr> 

     </table> 
    </body> 
    </html> 

Spring загрузки приложений успешно начать работу.

Ниже STS вывод консоли:

2017-01-12 04:22:57.501[0;39m [32m INFO[0;39m [35m4968[0;39m [2m---[0;39m [2m[   main][0;39m [36morg.hibernate.tool.hbm2ddl.SchemaUpdate [0;39m [2m:[0;39m HHH000228: Running hbm2ddl schema update 
[2m2017-01-12 04:22:57.677[0;39m [32m INFO[0;39m [35m4968[0;39m [2m---[0;39m [2m[   main][0;39m [36mj.LocalContainerEntityManagerFactoryBean[0;39m [2m:[0;39m Initialized JPA EntityManagerFactory for persistence unit 'jpaUnit' 
[2m2017-01-12 04:22:58.392[0;39m [32m INFO[0;39m [35m4968[0;39m [2m---[0;39m [2m[   main][0;39m [36ms.w.s.m.m.a.RequestMappingHandlerMapping[0;39m [2m:[0;39m Mapped "{[/book]}" onto public org.springframework.http.ResponseEntity<java.util.List<com.tms.dto.BookDto>> com.tms.controller.BookController.getAllBooks() 
[2m2017-01-12 04:22:58.400[0;39m [32m INFO[0;39m [35m4968[0;39m [2m---[0;39m [2m[   main][0;39m [36ms.w.s.m.m.a.RequestMappingHandlerMapping[0;39m [2m:[0;39m Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 
[2m2017-01-12 04:22:58.401[0;39m [32m INFO[0;39m [35m4968[0;39m [2m---[0;39m [2m[   main][0;39m [36ms.w.s.m.m.a.RequestMappingHandlerMapping[0;39m [2m:[0;39m Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) 
[2m2017-01-12 04:22:58.466[0;39m [32m INFO[0;39m [35m4968[0;39m [2m---[0;39m [2m[   main][0;39m [36mo.s.w.s.handler.SimpleUrlHandlerMapping [0;39m [2m:[0;39m Mapped URL path [/resources/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 
[2m2017-01-12 04:22:58.476[0;39m [32m INFO[0;39m [35m4968[0;39m [2m---[0;39m [2m[   main][0;39m [36mo.s.w.s.handler.SimpleUrlHandlerMapping [0;39m [2m:[0;39m Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler] 
[2m2017-01-12 04:22:58.596[0;39m [32m INFO[0;39m [35m4968[0;39m [2m---[0;39m [2m[   main][0;39m [36ms.w.s.m.m.a.RequestMappingHandlerAdapter[0;39m [2m:[0;39m Looking for @ControllerAdvice: org.springframework.boot[email protected]33d512c1: startup date [Thu Jan 12 04:22:49 IST 2017]; root of context hierarchy 
[2m2017-01-12 04:23:00.111[0;39m [32m INFO[0;39m [35m4968[0;39m [2m---[0;39m [2m[   main][0;39m [36mo.s.j.e.a.AnnotationMBeanExporter  [0;39m [2m:[0;39m Registering beans for JMX exposure on startup 
[2m2017-01-12 04:23:00.265[0;39m [32m INFO[0;39m [35m4968[0;39m [2m---[0;39m [2m[   main][0;39m [36ms.b.c.e.t.TomcatEmbeddedServletContainer[0;39m [2m:[0;39m Tomcat started on port(s): 8080 (http) 
[2m2017-01-12 04:23:00.276[0;39m [32m INFO[0;39m [35m4968[0;39m [2m---[0;39m [2m[   main][0;39m [36mcom.tms.config.App      [0;39m [2m:[0;39m Started App in 12.241 seconds (JVM running for 13.221) 
[2m2017-01-12 04:23:01.999[0;39m [32m INFO[0;39m [35m4968[0;39m [2m---[0;39m [2m[nio-8080-exec-1][0;39m [36mo.a.c.c.C.[Tomcat].[localhost].[/]  [0;39m [2m:[0;39m Initializing Spring FrameworkServlet 'dispatcherServlet' 
[2m2017-01-12 04:23:02.000[0;39m [32m INFO[0;39m [35m4968[0;39m [2m---[0;39m [2m[nio-8080-exec-1][0;39m [36mo.s.web.servlet.DispatcherServlet  [0;39m [2m:[0;39m FrameworkServlet 'dispatcherServlet': initialization started 
[2m2017-01-12 04:23:02.040[0;39m [32m INFO[0;39m [35m4968[0;39m [2m---[0;39m [2m[nio-8080-exec-1][0;39m [36mo.s.web.servlet.DispatcherServlet  [0;39m [2m:[0;39m FrameworkServlet 'dispatcherServlet': initialization completed in 40 ms 

Когда я тип URL http://localhost:8080/ в браузере будет Приводит сообщение:

Whitelabel Error Page 
This application has no explicit mapping for /error, so you are seeing this as a fallback. 
Thu Jan 12 04:24:27 IST 2017 
There was an unexpected error (type=Not Found, status=404). 

Также я попытался http://localhost:8080/SpringBootApp/ URL в browserit будет показан ниже сообщения :

Whitelabel Error Page 
This application has no explicit mapping for /error, so you are seeing this as a fallback. 
Thu Jan 12 04:33:26 IST 2017 
There was an unexpected error (type=Not Found, status=404). 
/SpringBootApp/ 

Отсутствует какое-либо сообщение об ошибке, напечатанное в консоль STS.

I would be thankful if anybody have solution/ to suggest other approach for the same. 
+1

Удалить 'SpringWebConfig', удалить' WebAppInitializer' ... Вы используете Spring Ботинок, который уже берет на себя все это. Вероятно, вы также можете удалить «DBConfig», добавив соответствующую конфигурацию в 'application.properties' ...Spring Boot уже выполняет всю автоматическую настройку для вас, не нужно делать это снова (и влиять/бороться с Spring Boot). –

+0

Ссылаясь на ссылку «http://websystique.com/spring-boot/spring-boot-angularjs-spring-data-jpa-crud-app-example/», наконец, я достигаю. – datta

ответ

0

Ваши взгляды находятся в/view/jsp /, но ваш view resolver говорит только/view /. Также кажется неправильным иметь конфигурацию как в application.properties, так и в коде.

И лично я бы использовал Thymeleaf для рендеринга на стороне сервера в эти дни.

+0

Благодарим за ваши комментарии. Я также делаю те же изменения, что и структура проекта/WEB-INF/view /, а также в файле конфигурации, а файл .properties все еще jsp не загружается и все еще остается тем же сообщением об ошибке, отображаемым в браузере. – datta

0

Изменить

viewResolver.setPrefix("/WEB-INF/view/");

в

viewResolver.setPrefix("/WEB-INF/view/jsp/");

+0

Я также сохраняю те же изменения в структуре проекта, файле конфигурации и файле application.properties для префикса и суффикса для страницы jsp, но все же такая же проблема появляется в браузере. Если какая-то дополнительная конфигурация, которую я пропустил, скажите мне. – datta

+0

Ссылаясь на ссылку «http://websystique.com/spring-boot/spring-boot-angularjs-spring-data-jpa-crud-app-example/», наконец, я достигаю. – datta

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