неправильно отсканирован контроллер загрузки spring

#spring-boot

#spring-boot

Вопрос:

У меня определенно проблемы с отображением, я создал простое приложение в spring boot, но отображение неверно, вот мой код:

 package com.example.demo;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;


@SpringBootApplication
@ComponentScan(basePackages={"com.example"})
public class DemopApplication2 {

    public static void main(String[] args) {
        SpringApplication.run(DemopApplication2.class, args);
        System.out.println("erffffggggggggggggf");
    }

}


package com.example.demo.jjj;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Controller
@RequestMapping(value = "/hanoipp")
public class Omp {
    @RequestMapping("/smm")
    String welcome() {
        return "index";
    }
}
  

и у меня есть простой HTML-файл с именем index.html в шаблоне, но это не работает
, мой файл журнала:

   .   ____          _            __ _ _
 /\ / ___'_ __ _ _(_)_ __  __ _    
( ( )___ | '_ | '_| | '_ / _` |    
 \/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |___, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.4.RELEASE)

2020-10-05 10:53:07.911  INFO 6380 --- [  restartedMain] com.example.demo.DemopApplication2       : Starting DemopApplication2 on ACER-3DF47200 with PID 6380 (D:oneDrOneDrive - OFPPTDatatraining ITjeedemoptargetclasses started by user in D:oneDrOneDrive - OFPPTDatatraining ITjeedemop)
2020-10-05 10:53:07.916  INFO 6380 --- [  restartedMain] com.example.demo.DemopApplication2       : No active profile set, falling back to default profiles: default
2020-10-05 10:53:07.989  INFO 6380 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable
2020-10-05 10:53:07.990  INFO 6380 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'
2020-10-05 10:53:09.107  INFO 6380 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8090 (http)
2020-10-05 10:53:09.120  INFO 6380 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-10-05 10:53:09.120  INFO 6380 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.38]
2020-10-05 10:53:09.195  INFO 6380 --- [  restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2020-10-05 10:53:09.195  INFO 6380 --- [  restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1205 ms
2020-10-05 10:53:09.412  INFO 6380 --- [  restartedMain] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2020-10-05 10:53:09.597  INFO 6380 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2020-10-05 10:53:09.642  INFO 6380 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8090 (http) with context path ''
2020-10-05 10:53:09.660  INFO 6380 --- [  restartedMain] com.example.demo.DemopApplication2       : Started DemopApplication2 in 2.088 seconds (JVM running for 2.476)
erffffggggggggggggf
2020-10-05 10:53:11.645  INFO 6380 --- [nio-8090-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2020-10-05 10:53:11.646  INFO 6380 --- [nio-8090-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2020-10-05 10:53:11.653  INFO 6380 --- [nio-8090-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 7 ms
  

Комментарии:

1. когда я добавляю плагин thyeleaf, он работает нормально, когда я его удаляю, он не работает

Ответ №1:

Статические html-файлы идут в static , а не template .

Все, что входит static , напрямую передается клиенту.

Без thymeleaf у вас нет анализатора на стороне сервера для файлов html.

template Каталог представляет собой файлы шаблонов, которые анализируются и которые создают данные, которые получает клиент.

когда я добавляю плагин thyeleaf, он работает нормально, когда я его удаляю, он не работает, Thymeleaf работает с html файлами в template каталоге. Затем эти файлы анализируются на стороне сервера, и теги / атрибуты thymeleaf будут преобразованы в html.

Если у вас есть доступный файл thymeleaf и вы используете обычные HTML-файлы, они будут просто отправлены клиенту без изменений.

Комментарии:

1. даже когда я добавляю некоторые js в свой index.html , и все же проблема существует

2. К сожалению, у меня все еще есть проблема

3. Если у вас есть файл static/abc.js , вы можете просто сослаться abc.js на html-файл. Для этого вам не нужен контроллер.

4. У меня такая же проблема со сложным проектом загрузки spring с большим количеством просмотров, javascript и CSS, я хочу работать с контроллерами

5. Контроллеры не должны использоваться для статического содержимого, но вы можете создать контроллер, который считывает файл вручную из ресурсов.