Beknopte handleiding voor Spring MVC met Velocity

1. Inleiding

Velocity is een sjabloonengine van de Apache Software Foundation die kan werken met normale tekstbestanden, SQL, XML, Java-code en vele andere typen.

In dit artikel gaan we ons concentreren op het gebruik van Velocity met een typische Spring MVC-webapplicatie.

2. Maven afhankelijkheden

Laten we beginnen met het inschakelen van Velocity-ondersteuning - met de volgende afhankelijkheden:

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

De nieuwste versies van beide zijn hier te vinden: velocity en velocity-tools.

3. Configuratie

3.1. Web Config

Als we geen web.xml, laten we ons webproject configureren met Java en een initialisatieprogramma:

openbare klasse MainWebAppInitializer implementeert WebApplicationInitializer {@Override public void onStartup (ServletContext sc) gooit ServletException {AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext (); root.register (Webconfiguratie.class); sc.addListener (nieuwe ContextLoaderListener (root)); ServletRegistration.Dynamic appServlet = sc.addServlet ("mvc", nieuwe DispatcherServlet (nieuwe GenericWebApplicationContext ())); appServlet.setLoadOnStartup (1); }}

Als alternatief kunnen we natuurlijk de traditionele gebruiken web.xml:

 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 

Merk op dat we onze servlet in kaart hebben gebracht op het "/ *" pad.

3.2. Spring Config

Laten we nu een eenvoudige Spring-configuratie bekijken - nogmaals, te beginnen met Java:

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

En laten we ook even kijken naar de XML-versie van de configuratie:

     /         

Hier vertellen we Spring waar te zoeken naar geannoteerde bean-definities:

We geven aan dat we annotatiegestuurde configuratie gaan gebruiken in ons project met de volgende regel:

Door te maken "velocityConfig"En"viewResolverā€¯Bonen vertellen we VelocityConfigurer waar te zoeken naar sjablonen, en VelocityLayoutViewResolver waar u weergaven en lay-outs kunt vinden.

4. Velocity-sjablonen

Laten we tot slot onze sjablonen maken - te beginnen met een gemeenschappelijke koptekst:

en voettekst:

 @Copyright baeldung.com 

En laten we een gemeenschappelijke lay-out voor onze site definiëren waar we bovenstaande fragmenten mee gaan gebruiken ontleden in de volgende code:

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

U kunt dat controleren $ screen_content variabele heeft de inhoud van de pagina's.

Ten slotte maken we een sjabloon voor de hoofdinhoud:

Tutorials lijst

#foreach ($ tut in $ tutorials) #einde
Zelfstudie-idTutorial titelTutorial BeschrijvingTutorial Auteur
$ tut.tutId$ tut.title$ tut.description$ tut.author

5. Controllerzijde

We hebben een eenvoudige controller gemaakt die een lijst met tutorials retourneert als inhoud voor onze lay-out die moet worden gevuld met:

@Controller @RequestMapping ("/") openbare klasse MainController {@Autowired privé ITutorialsService tutService; @RequestMapping (waarde, methode = RequestMethod.GET) public String defaultPage () {retourneer "index"; } @RequestMapping (waarde, methode = RequestMethod.GET) openbare String listTutorialsPage (Modelmodel) {Lijstlijst = tutService.listTutorials (); model.addAttribute ("tutorials", lijst); retourneer "index"; }} 

Ten slotte hebben we lokaal toegang tot dit eenvoudige voorbeeld - bijvoorbeeld op: localhost: 8080 / spring-mvc-velocity /

6. Conclusie

In deze eenvoudige tutorial hebben we Lente MVC webapplicatie met Snelheid sjabloon-engine.

De volledige voorbeeldcode voor deze tutorial is te vinden in onze GitHub-repository.


$config[zx-auto] not found$config[zx-overlay] not found