在SpringMVC环境中要是使用Velocity模板引擎来解析View,首先想到是用JSP时,需要配置视图解析器,Velocity同样也需要配置解析器。先看一段简单的配置
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="resourceLoaderPath" value="/WEB-INF/vm" /> <property name="configLocation" value="classpath:properties/velocity.properties"/> </bean> <bean id="velocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> <property name="prefix" value="/WEB-INF/vm/"/> <property name="suffix" value=".html"/> <!--解决中文乱码--> <property name="contentType" value="text/html;charset=UTF-8" /> </bean>
在模板中输出一句简单的话
<body> Welcome to $name!!! </body>
在SpringMVC中又该如何给这个变量赋值?在SpringMVC中赋值其实很简单
@RequestMapping("velocity") @Controller public class VelocityController { @RequestMapping(value = "entry", method = RequestMethod.GET) public ModelAndView entry() { ModelAndView mv = new ModelAndView(); mv.addObject("name", "Velocity先生"); mv.setViewName("user"); return mv; } }
同样也是会遇到ContextPath路径问题,如果只是针对路径这一个单一问题SpringMVC有一种很简便的解决方案,通过两个简单配置,在Velocity中就可以使用Request对象。
<!-- 开放request属性 --> <property name="exposeRequestAttributes" value="true"/> <property name="requestContextAttribute" value="rc"/>
在HTML中通过下面的方式就可以拿到ContextPath
<img src="$rc.contextPath/resources/images/head.jpg" width="60" heigth="60"/>
使用Velocity-tool2.0同样也可以拿到ContextPath而且不仅如此可以使用Velocity其他的工具对象,但是似乎Spring4对Velocity-tool2.0支持不是太友好,需要费点周折。
首先需要创建一个ViewClass对象,以下代码从网上拷贝过来如下
import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.velocity.context.Context; import org.apache.velocity.tools.Scope; import org.apache.velocity.tools.ToolManager; import org.apache.velocity.tools.view.ViewToolContext; import org.springframework.web.servlet.view.velocity.VelocityToolboxView; public class VelocityToolbox2View extends VelocityToolboxView { @Override protected Context createVelocityContext(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { // Create a ChainedContext instance. ViewToolContext ctx; ctx = new ViewToolContext(getVelocityEngine(), request, response, getServletContext()); ctx.putAll(model); if (this.getToolboxConfigLocation() != null) { ToolManager tm = new ToolManager(); tm.setVelocityEngine(getVelocityEngine()); tm.configure(getServletContext().getRealPath(getToolboxConfigLocation())); if (tm.getToolboxFactory().hasTools(Scope.REQUEST)) { ctx.addToolbox(tm.getToolboxFactory().createToolbox(Scope.REQUEST)); } if (tm.getToolboxFactory().hasTools(Scope.APPLICATION)) { ctx.addToolbox(tm.getToolboxFactory().createToolbox(Scope.APPLICATION)); } if (tm.getToolboxFactory().hasTools(Scope.SESSION)) { ctx.addToolbox(tm.getToolboxFactory().createToolbox(Scope.SESSION)); } } return ctx; } }
自定义ViewClass对象,下面将配置到SpringMVC解析器中
<!-- 配置 velocity工具类 --> <property name="toolboxConfigLocation" value="/WEB-INF/toolbox.xml"/> <!-- Spring4 支持 velocity-tools2.0 --> <property name="viewClass" value="org.lian.util.VelocityToolbox2View"/>
toolbox.xml配置文件如下
<?xml version="1.0" encoding="UTF-8"?> <tools> <toolbox scope="request"> <tool key="link" class="org.apache.velocity.tools.view.LinkTool" forceRelative="true" includeRequestParams="true"/> </toolbox> </tools>
这时我们也可以通借助Velocity工具对象来拿到ContextPath
<img src="$link.contextPath/resources/images/head.jpg" width="60" heigth="60"/>
最后看一下完整配置
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="resourceLoaderPath" value="/WEB-INF/vm" /> <property name="configLocation" value="classpath:properties/velocity.properties"/> </bean> <bean id="velocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> <property name="prefix" value="/WEB-INF/vm/"/> <property name="suffix" value=".html"/> <!--解决中文乱码--> <property name="contentType" value="text/html;charset=UTF-8" /> <!-- 配置 velocity工具类 --> <property name="toolboxConfigLocation" value="/WEB-INF/toolbox.xml"/> <!-- Spring4 支持 velocity-tools2.0 --> <property name="viewClass" value="org.lian.util.VelocityToolbox2View"/> <!-- 开放request属性 --> <property name="exposeRequestAttributes" value="true"/> <property name="requestContextAttribute" value="rc"/> </bean>
相关推荐
在Java企业级开发中,SpringMVC、Velocity和iBATIS是常见的三个组件,它们各自承担着不同的职责。SpringMVC作为一个强大的MVC框架,负责处理请求和响应,提供松耦合的架构;Velocity则是一个高效的模板引擎,用于...
SpringMVC 和 Velocity 的整合是将 Velocity 作为模板引擎与 SpringMVC 框架结合,以实现更高效、灵活的视图层渲染。Velocity 是一个开源的 Java 模板引擎,它允许开发者将业务逻辑与表现层内容分离,使得前端开发...
Spring、SpringMVC、Mybatis、Velocity和Maven是Java Web开发中常用的一组技术栈,它们各自在软件开发的不同层面发挥着重要作用。这个压缩包文件的标题和描述表明,它提供了一个集成这些技术的演示项目,下面我们将...
综上所述,这套基于SpringMVC+Velocity的web应用利用了SpringMVC的注解驱动特性,简化了控制器和依赖管理;Velocity作为模板引擎,负责生成动态内容;Sitemesh则确保了页面的布局一致性。这种架构组合提供了高效、...
Velocity语法简洁,易于学习,且支持宏和逻辑控制,使得模板的编写更加灵活。 5. MySQL: MySQL是一种广泛使用的开源关系型数据库管理系统。它以其高性能、高可用性和易管理性而受到青睐。在本项目中,MySQL作为...
J2EE开发中velocity获取项目地址,使用框架springmvc+velocity视图器,velocity配置toolboxConfigLocation使.vm文件获取项目资源地址和设置静态资源地址。 此处demo实现效果为:test.vm模板通过调用${ctx.rootPath}...
SpringMVC、Velocity和Maven是Java开发中的三个重要组件,它们在Web应用程序开发中扮演着关键角色。本文将深入探讨这些技术的整合及其在实际项目中的应用。 首先,SpringMVC是Spring框架的一部分,是一个轻量级的、...
SpringMVC3与Velocity结合是常见的Java Web开发模式,用于构建高效、可维护的Web应用程序。这个最简单的配置例子提供了一...不断学习和实践,可以让你更深入地掌握SpringMVC和Velocity的使用,提高开发效率和产品质量。
velocity+springmvc+spring+mybaitsg整合案例 用户管理 带sql ,亲自整合调试,没有问题! /* SQLyog Ultimate v8.32 MySQL - 5.6.19 : Database - test ******************************************************...
本示例聚焦于“SpringMVC+ibatis+velocity”的整合应用,这是一套常用的Java Web开发组合,用于构建动态、数据驱动的网站。下面我们将深入探讨这三个组件的核心功能及其整合过程。 首先,SpringMVC是Spring框架的一...
总的来说,"springmvc+mybatis+velocity整合实例"提供了一个轻量级且功能齐全的Web开发基础,适合快速搭建项目。通过这个整合,开发者可以充分利用Spring MVC的控制层优势、MyBatis的数据访问便捷性,以及Velocity的...
本话题将详细讲解如何在Spring MVC框架中整合Velocity和JSP,实现多视图解析器的功能,从而根据需求返回不同的视图。 **1. Velocity模板引擎** Velocity是一个开源的Java模板引擎,它允许开发者将业务逻辑与展示...
在构建企业级Web应用时,"maven+springmvc+spring+ibatis+velocity+mysql"这个组合提供了高效且灵活的开发框架。让我们逐一解析这些技术及其在项目中的作用。 **Maven** 是一个项目管理和综合工具,它帮助开发者...
SpringMVC 学习指南 SpringMVC 是 Spring 框架中的一个 web 组件,它提供了丰富的功能来构建稳健的 web 应用。 SpringMVC 的核心思想是基于每个逻辑和功能是高可配置的架构和设计的。下面是 SpringMVC 的学习指南:...
2):采用spring3.2作为bean容器管理,springMVC处理请求转发,Velocity进行页面渲染,Mybatis作为数据持久层。CXF作为同步通信机制。 3):数据库进行加密访问。 4):注解的使用。 5):Vecity模板引擎页面渲染...
**Spring MVC + Velocity + REST Services (XML, JSON) 实例详解** ...通过学习这个项目,你可以了解到如何利用这些工具构建一个无数据库的Web应用,以及如何处理XML和JSON数据。这将对你的Web开发技能提升大有裨益。
此外,SpringMVC还支持视图解析,如JSP或Velocity模板,以及与服务层(如Hibernate)的集成。 【Hibernate】 Hibernate是一个强大的Java持久化框架,它简化了数据库操作。使用Hibernate,开发人员可以通过对象关系...
标题 "springmvc+velocity+hession+ibatis" 涉及到的是一个使用Spring MVC、Velocity、Hessian和iBatis构建的Web应用程序。这些技术是Java开发中的关键组件,让我们逐一深入理解它们: 1. **Spring MVC**:Spring ...
【SpringMVC】 ...这个实例适合初学者了解SpringMVC、MyBatis和Velocity的集成过程,通过实践掌握它们各自的功能以及协同工作的方式。随着对这三个框架理解的深入,可以逐步扩展功能,构建更复杂的Web应用程序。
Spring MVC 3、Velocity 1.7、Maven 和 MySQL 是构建现代Web应用程序的四个关键组件,它们共同为开发者提供了一套强大而灵活...开发者可以通过学习这个例子,了解如何配置和使用这些工具,从而提升自己的Web开发技能。