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
Zelfstudie-id Tutorial titel Tutorial Beschrijving Tutorial Auteur #foreach ($ tut in $ tutorials) $ tut.tutId $ tut.title $ tut.description $ tut.author #einde
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.