Kurzanleitung zu Spring MVC mit Geschwindigkeit

1. Einleitung

Velocity ist eine Vorlagen-Engine der Apache Software Foundation, die mit normalen Textdateien, SQL, XML, Java-Code und vielen anderen Typen arbeiten kann.

In diesem Artikel konzentrieren wir uns auf die Verwendung von Velocity mit einer typischen Spring MVC-Webanwendung.

2. Maven-Abhängigkeiten

Beginnen wir mit der Aktivierung der Velocity-Unterstützung - mit den folgenden Abhängigkeiten:

 org.apache.velocity velocity 1.7   org.apache.velocity velocity-tools 2.0 

Die neuesten Versionen von beiden finden Sie hier: Geschwindigkeits- und Geschwindigkeitswerkzeuge.

3. Konfiguration

3.1. Webkonfiguration

Wenn wir keine web.xml verwenden möchten, konfigurieren wir unser Webprojekt mit Java und einem Initialisierer :

public class MainWebAppInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext sc) throws ServletException { AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); root.register(WebConfig.class); sc.addListener(new ContextLoaderListener(root)); ServletRegistration.Dynamic appServlet = sc.addServlet("mvc", new DispatcherServlet(new GenericWebApplicationContext())); appServlet.setLoadOnStartup(1); } }

Alternativ können wir natürlich auch die traditionelle Datei web.xml verwenden :

 Spring MVC Velocity  mvc org.springframework.web.servlet.DispatcherServlet  contextConfigLocation /WEB-INF/mvc-servlet.xml  1   mvc /*   contextConfigLocation /WEB-INF/spring-context.xml   org.springframework.web.context.ContextLoaderListener  

Beachten Sie, dass wir unser Servlet auf den Pfad "/ *" abgebildet haben.

3.2. Frühlingskonfiguration

Lassen Sie uns nun eine einfache Spring-Konfiguration durchgehen - wieder beginnend mit Java:

@Configuration @EnableWebMvc @ComponentScan(basePackages= { "com.baeldung.mvc.velocity.controller", "com.baeldung.mvc.velocity.service" }) public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry .addResourceHandler("/resources/**") .addResourceLocations("/resources/"); } @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } @Bean public ViewResolver viewResolver() { VelocityLayoutViewResolver bean = new VelocityLayoutViewResolver(); bean.setCache(true); bean.setPrefix("/WEB-INF/views/"); bean.setLayoutUrl("/WEB-INF/layouts/layout.vm"); bean.setSuffix(".vm"); return bean; } @Bean public VelocityConfigurer velocityConfig() { VelocityConfigurer velocityConfigurer = new VelocityConfigurer(); velocityConfigurer.setResourceLoaderPath("/"); return velocityConfigurer; } }

Und werfen wir einen kurzen Blick auf die XML-Version der Konfiguration:

     /         

Hier sagen wir Spring, wo nach kommentierten Bean-Definitionen gesucht werden soll:

Wir geben an, dass wir in unserem Projekt eine annotationsgesteuerte Konfiguration mit der folgenden Zeile verwenden werden:

Durch das Erstellen der Beans " VelocityConfig " und " ViewResolver " teilen wir VelocityConfigurer mit, wo nach Vorlagen gesucht werden soll , und VelocityLayoutViewResolver, wo Ansichten und Layouts zu finden sind.

4. Geschwindigkeitsvorlagen

Zum Schluss erstellen wir unsere Vorlagen - beginnend mit einem gemeinsamen Header:

und Fußzeile:

 @Copyright baeldung.com 

Und lassen Sie uns ein gemeinsames Layout für unsere Site definieren, in dem wir die obigen Fragmente mit Analyse im folgenden Code verwenden werden:

  Spring & Velocity #parse("/WEB-INF/fragments/header.vm") $screen_content #parse("/WEB-INF/fragments/footer.vm") 

Sie können überprüfen, ob die Variable $ screen_content den Inhalt der Seiten enthält.

Schließlich erstellen wir eine Vorlage für den Hauptinhalt:

Tutorials list

#foreach($tut in $tutorials) #end
Tutorial Id Tutorial Title Tutorial Description Tutorial Author
$tut.tutId $tut.title $tut.description $tut.author

5. Controller-Seite

Wir haben einen einfachen Controller erstellt, der eine Liste von Tutorials als Inhalt für unser Layout zurückgibt, mit dem Folgendes gefüllt werden soll:

@Controller @RequestMapping("/") public class MainController { @Autowired private ITutorialsService tutService; @RequestMapping(value, method = RequestMethod.GET) public String defaultPage() { return "index"; } @RequestMapping(value, method = RequestMethod.GET) public String listTutorialsPage(Model model) { List list = tutService.listTutorials(); model.addAttribute("tutorials", list); return "index"; } } 

Schließlich können wir lokal auf dieses einfache Beispiel zugreifen - zum Beispiel unter: localhost: 8080 / spring-mvc-speed /

6. Fazit

In diesem einfachen Tutorial haben wir die Spring MVC- Webanwendung mit der Velocity Template Engine konfiguriert .

Den vollständigen Beispielcode für dieses Tutorial finden Sie in unserem GitHub-Repository.