Velocity在spring中的配置和使用初探

本文详细介绍如何在Spring MVC项目中集成Velocity模板引擎,包括添加依赖、配置DispatcherServlet及VelocityConfigurer,并介绍了如何自定义Velocity配置及工具箱配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.toutiao.com/i6353194583446258178/

项目中使用velocity

1.添加velocity依赖的jar包,这里使用maven管理依赖,所以只需要在pom.xml中添加:

<dependency> 
<groupId>org.apache.velocity</groupId> 
<artifactId>velocity</artifactId> 
<version>1.7</version> 
</dependency> 
<dependency> 
<groupId>org.apache.velocity</groupId> 
<artifactId>velocity-tools</artifactId> 
<version>2.0</version> 
</dependency>

2.因为项目使用到springmvc,所以项目中的web.xml需要配置一下DispatcherServlet,如下:

<!--配置springmvc的前端控制器 -->

<servlet> 
	<servlet-name>Spring web</servlet-name> 
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
	<init-param> 	
		<param-name>contextConfigLocation</param-name> 	
		<param-value>classpath:spring/web-context.xml</param-value> 
	</init-param> 
	<load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
	<servlet-name>Spring web</servlet-name> 
	<url-pattern>/*</url-pattern> 
</servlet-mapping>

3.注意这里的contextConfigLocation参数,它指向了classpath路径下的spring目录下的web-context.xml文件,这里就是我们的spring的配置文件,我们将在这里配置Velocity的bean.
<!-- 配置VelocityConfigurer,负责在spring中设置Velocity引擎。通过属性resourceLoaderPath告诉Velocity到哪里寻找它的模板。 
通常将模板放到WEB-INF下的某个子目录下,可以保证这些模板不能被直接访问。-->
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> 
<property name="resourceLoaderPath" value="/WEB-INF/velocity/templates"/> 
<property name="configLocation" value="classpath:velocity/velocity.properties"/> 
</bean> 
<!--配置试图解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> 
<property name="cache" value="false"/> 
<property name="prefix" value=""/> 
<property name="suffix" value=".vm"/> 
<property name="contentType" value="text/html;charset=utf-8"/> 
<property name="toolboxConfigLocation" value="/WEB-INF/toolbox.xml"/> 
<property name="exposeSpringMacroHelpers" value="true"/> 
<property name="exposeRequestAttributes" value="true"/> 
<property name="exposeSessionAttributes" value="true"/> 
<property name="allowSessionOverride" value="true"/> 
<property name="allowRequestOverride" value="true"/> 
</bean>

在类路径的velocity目录中添加velocity.properties文件,在这个配置文件中可以自定义一些velocity默认配置:

input.encoding=UTF-8 output.encoding=UTF-8

在web-context.xml文件中,还可以看到

<property name="toolboxConfigLocation" value="/WEB-INF/toolbox.xml"/>,

在web-inf路径下,建一个toolbox.xml文件,如下:

<?xml version="1.0" encoding="UTF-8" ?> 
	<toolbox> 
		<tool> 
			<key>UrlUtil</key> 
			<class>com.nali.common.util.UrlUtil</class> 
			<scope>application</scope> 
		</tool> 
		<tool> 
			<key>VersionUtil</key> 
			<class>com.ximalaya.shop.api.domain.util.VersionUtil</class> 
			<scope>application</scope> 
		</tool> 
	</toolbox>

这个配置文件可以让我们在vm中使用后台java类中定义的方法.

以上就完成了一个完整的ssm项目中使用velocity的流程,我们可以在"/WEB-INF/velocity/templates"下新建一些.vm的文件用于展示数。

对于velocity的语法使用,可以参考这篇网友翻译的官方文档:http://ifeve.com/apache-velocity-dev/



Spring框架中配置使用UReport(Unico Report),首先你需要做的是添加依赖。如果你的项目使用Maven,可以在pom.xml文件中添加以下UReport相关的依赖: ```xml <dependency> <groupId>com.unicon.reportengine</groupId> <artifactId>reportengine-spring-boot-starter</artifactId> <version>latest-version-here</version> </dependency> ``` 替换`latest-version-here`为实际的UReport版本号。 然后,在Spring Boot应用中,你可以创建一个Bean来初始化管理报告引擎。这里是一个简单的例子: ```java @Configuration public class UReportConfig { @Value("${ureport.template-path}") private String templatePath; @Bean public ReportEngine reportEngine() { Map<String, Object> config = new HashMap<>(); config.put(ReportEngine.PATH, templatePath); config.put(ReportEngine.TEMPLATE_ENGINE, "freemarker"); // 或者其他的模板引擎如velocity return new ReportEngine(config); } } ``` 在上述配置中,`templatePath`是你存储报表模板的位置。你可以通过环境变量或者application.properties文件设置它。 接下来,你就可以在需要的地方注入并使用`ReportEngine`了,例如生成报表: ```java @Service public class ReportingService { @Autowired private ReportEngine reportEngine; public void generateReport() { // 使用reportEngine生成报表 InputStream inputStream = reportEngine.runReport("your-report-template-name", parametersMap); // ...处理生成的流 } // 这里parametersMap是你要传入的报表参数 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值