SpringMVC 集成velocity
前言
没有美工的时代自然少不了对应的模板视图开发,jsp时代我们用起来也很爽,物极必反,项目大了,数据模型复杂了jsp则无法胜任。
开发环境
idea2016、jdk1.8、tomcat8.0.35
spring 4.3.6、velocity1.6、velocity-tools 2.0
SpringMVC集成velocity
1、VelocityViewResolver。
<!--VelocityViewResolver视图配置--> <!--<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">--> <!--<property name="suffix" value=".vm"/>--> <!--<property name="prefix" value=""/>--> <!--<property name="contentType" value="text/html;charset=UTF-8"/>--> <!--</bean>-->
2、VelocityLayoutViewResolver。也就是可以自定义模板布局。和VelocityViewResolver相比较的话多了一个layout.vm,在WEB-INF/views/layout/layout.vm配置。
<!--VelocityLayoutViewResolver--> <bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver"> <property name="suffix" value=".vm"/> <property name="prefix" value=""/> <property name="contentType" value="text/html;charset=UTF-8"/> <property name="layoutUrl" value="layout/layout.vm"/> </bean>
3、完整的springmvc-servlet.xml
<context:component-scan base-package="com.autohome.controller" /> <!-- 注解驱动 --> <mvc:annotation-driven /> <!--velocity模板配置--> <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="resourceLoaderPath" value="/WEB-INF/views/"/> <property name="configLocation" value="classpath:velocity.properties"/> <property name="velocityProperties"> <props> <prop key="input.encoding">UTF-8</prop> <prop key="output.encoding">UTF-8</prop> </props> </property> </bean> <!--VelocityViewResolver视图配置--> <!--<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">--> <!--<property name="suffix" value=".vm"/>--> <!--<property name="prefix" value=""/>--> <!--<property name="contentType" value="text/html;charset=UTF-8"/>--> <!--</bean>--> <!--VelocityLayoutViewResolver--> <bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver"> <property name="suffix" value=".vm"/> <property name="prefix" value=""/> <property name="contentType" value="text/html;charset=UTF-8"/> <property name="layoutUrl" value="layout/layout.vm"/> </bean>
4、pom.xml
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.3.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.3.6.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.6.RELEASE</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-tools</artifactId> <version>2.0</version> </dependency> </dependencies>
我的layout.vm. 视图页嵌套的内容就在$screen_content中渲染
<html xmlns="http://www.w3.org/1999/xhtml"> <head> </head> <body> <div>header</div> <div> $screen_content </div> <div>footer</div> </body> </html>
index.vm
<h2>${msg}</h2>
layout.vm的渲染结果
总结
1、pom下载spring-context.jar包时并没有自动加载spring-context-support.jar 然后我在springmvc-servlet编写velocityconfig VelocityConfigurer类时找不到configLocation属性。后加上spring-context jar包后OK。
2、既然在velocity.properties文件中已经配置了编码格式,还要在velocityconfig中继续配置编码方式,如果不配置的话则抛一个spring.vm相关的异常, 不知道这个设计何为。
参考资料
http://shishi11.iteye.com/blog/869290
作者:sword-successful
出处:https://www.cnblogs.com/sword-successful/p/6479625.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
博客地址: | http://www.cnblogs.com/sword-successful/ |
博客版权: | 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。 如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构