#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. Контроллеры не должны использоваться для статического содержимого, но вы можете создать контроллер, который считывает файл вручную из ресурсов.