一直想折腾下spring mvc,今天下午的酱油时间对这个做了一些接触,主要是springMVC和velocity的配置
1、首先在web.xml中加入MVC的整合:
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
这里如果没有contextConfigLocation初始化参数,将会在classpath下寻找{servlet-name}-servlet.xml的配置文件:
public String getNamespace() {
return (this.namespace != null ? this.namespace : getServletName() + DEFAULT_NAMESPACE_SUFFIX);
}
2、这里在spring-mvc.xml配置对velocity配置属性和视图解析
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/WEB-INF/vm"/>
<property name="configLocation" value="classpath:velocity.properties"/>
</bean>
在velocity.properties中配置velocity的属性:
#encoding
input.encoding =UTF-8
output.encoding=UTF-8
contentType=text/html;charset=UTF-8
#autoreload when vm changed
file.resource.loader.cache=false
file.resource.loader.modificationCheckInterval =1
velocimacro.library.autoreload=true
#macro
velocimacro.library=macro.vm
#velocimacro.library =/WEB-INF/vm/macro.vm
#layout
#tools.view.servlet.layout.directory =/WEB-INF/vm/layout/
#tools.view.servlet.error.template=/WEB-INF/vm/error.vm
#tools.view.servlet.layout.default.template=default.vm
runtime.log.logsystem.class=org.springframework.ui.velocity.CommonsLoggingLogSystem
runtime.log=com.sa
runtime.log.error.stacktrace=true
runtime.log.warn.stacktrace=true
runtime.log.info.stacktrace=false
runtime.log.invalid.reference=true
上面的velocimacro.library设置macro是放在classpath,如果其他路径就会抛出异常,如velocimacro.library =/WEB-INF/vm/macro.vm。这是否我配置有问题,求路过达人求解
VelocityException: Velocimacro : Error using VM library : /WEB-INF/vm/macro.vm
当然,这些属性也可以在spring-mvc.xml中配置:
<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/WEB-INF/vm"/>
<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>
<prop key="contentType">text/html;charset=UTF-8</prop>
<prop key="file.resource.loader.cache">false</prop>
<prop key="file.resource.loader.modificationCheckInterval">1</prop>
<prop key="velocimacro.library.autoreload">true</prop>
<prop key="velocimacro.library">macro.vm</prop>
<prop key="runtime.log.logsystem.class">org.apache.velocity.runtime.log.SimpleLog4JLogSystem</prop>
<prop key="runtime.log">com.sa</prop>
<prop key="runtime.log.error.stacktrace">true</prop>
<prop key="runtime.log.warn.stacktrace">true</prop>
<prop key="runtime.log.info.stacktrace">false</prop>
<prop key="runtime.log.invalid.reference">true</prop>
</props>
</property>
-->
</bean>
当然也支持layout:上面的解析器需要修改:
org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver
和增加属性:
<property name="layoutUrl" value="layout.vm"/>
这里需要注意:layout.vm以及layout.vm中涉及的模板文件如head.vm、bottom.vm等需要一起放在classpath路径下。否则就会抛出找不到相应模板的异常
3、velocity的视图解析器
<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
<property name="suffix" value=".vm"/>
<!-- 使用springMacro、使用servlet的对象 -->
<property name="exposeSpringMacroHelpers" value="true"/>
<property name="exposeRequestAttributes" value="true"/>
<property name="exposeSessionAttributes" value="true"/>
<property name="contentType" value="text/html;charset=UTF-8" />
<!-- spring的日期格式化 -->
<property name="dateToolAttribute" value="dateTool"/>
<!-- velocity toolbox -->
<property name="toolboxConfigLocation" value="/WEB-INF/vm/toolbox.xml"/>
</bean>
上面的velocity toolbox配置中toolbox.xml放在其他位置为报NullPointerException,见
http://forum.springsource.org/showthread.php?30783-Exposing-Velocity-generic-tool-results-in-NullPointer
下面是一个自定义的toolbox.xml:
<?xml version="1.0" encoding="UTF-8"?>
<toolbox>
<tool>
<key>dateUtil</key>
<scope>application</scope>
<class>com.sa.common.util.DateUtil</class>
</tool>
</toolbox>
4、测试:
这里主要对自定义的macro和toolbox进行了测试
macro中写了一个简单的测试:
#macro(test)
nnnnnnnnnnnn
#end
在com.sa.common.util.DateUtil中有一个简单的测试方法:
public static String test(String str){
return "this is a test. hello "+str;
}
在测试vm中:index.vm
#test()
<br>
$!dateUtil.test("velocity")
结果:
写道
nnnnnnnnnnnn
this is a test. hello velocity
5、遇到的一些异常:
当然上面已经说了一些,下面还有:
java.lang.NoSuchMethodError: org.springframework.core.GenericTypeResolver.resolveTypeA
这个是放入了不同版本的spring jar包。见:
http://fedora-commons.1317035.n2.nabble.com/fcrepo-user-java-lang-NoSuchMethodError-org-springframework-core-GenericTypeResolver-resolveTypeArguh-td7002643.html
在引入toolbox时编译报错:
/java.lang.NoClassDefFoundError: org/apache/commons/digester/RuleSet
这个很简单嘛,加入digester依赖,但是开始加入的是3.2版本,老是报错,后来发现该版本包结构发生变化,还是改为
<dependency>
<groupId>commons-digester</groupId>
<artifactId>commons-digester</artifactId>
<version>2.0</version>
</dependency>
好了,目前就这些,等进一步学习再记录吧
分享到:
相关推荐
Spring MVC 3.1 整合 Hibernate 是一个常见的企业级应用开发模式,它结合了Spring框架的MVC模块和Hibernate持久化框架,以实现高效、灵活的后端数据处理。这个整合过程涉及到多个方面,包括依赖管理、配置、实体映射...
SpringMVC 3.1是该框架的一个重要版本,引入了许多增强特性和性能优化,旨在提高开发效率和应用性能。在这个实例中,我们将深入探讨SpringMVC 3.1的关键特性及其在实际开发中的应用。 首先,SpringMVC 3.1引入了...
**SpringMVC 3.1 实例源码详解** SpringMVC是Spring框架的一个核心模块,专注于处理Web应用的请求和响应。在这个基于SpringMVC 3.1的实例中,我们将深入探讨其主要功能、架构和配置。Spring 3.1引入了一些重要的...
1. **注解驱动**:SpringMVC3.1广泛支持注解,如@Controller、@RequestMapping、@RequestParam等,使得配置更加简洁。 2. **ModelAndView对象**:用于将模型数据和视图路由结合在一起,方便地将数据传递到视图。 3...
### SpringMVC3.1中文文档精要解析 #### WebMVC简介与请求-响应模型 WebMVC,即Web模型-视图-控制器(Model-View-Controller),是基于传统MVC架构的一种应用模式,特别适用于Web应用程序。在Web开发环境中,请求-...
【标题】"myeclipse2013+springmvc3.1+hibernate4实例"涉及的关键技术点包括MyEclipse开发环境、SpringMVC框架以及Hibernate对象关系映射工具,它们是Java Web开发中的核心组件。MyEclipse是集成开发环境(IDE)的一...
在Spring MVC 3.1版本中,它引入了多项增强功能和改进,以提升性能和开发效率。多视图是指在同一个应用中支持多种不同的展现方式,如JSP和FreeMarker,这为开发者提供了更大的灵活性。 **1. 视图解析器(View ...
在本环境中,我们将会探讨如何利用Spring MVC 3.1和Hibernate 3搭建一个完整的开发环境。 Spring MVC是Spring框架的一部分,它提供了一种优雅的方式来组织和处理Web应用程序的请求。3.1版本引入了一些增强的功能,...
在这个"SpringMVC+Velocity+iBATIS的整合小demo"中,可能包含了这些配置文件、Controller类、Service接口及其实现、Mapper接口及其XML配置、Velocity模板文件等。通过这些文件,我们可以看到一个完整的Java Web应用...
springMVC3.0 + MyBatis3.1 花了2天整合成功的DEMO Spring 用的是基于注解的 MyBatis 用的是基于XML的 带表结构 有增删改查的小例子(含事务) 个人认为这套小框架有有兴趣的人 完全可以自己修改修改, 作为自己以后...
通过以上步骤,你可以构建一个基本的SpringMVC3和Velocity整合的应用。这只是一个基础的配置示例,实际项目中可能需要考虑更多高级特性,如国际化、缓存、模板继承等。不断学习和实践,可以让你更深入地掌握...
在“springmvc3.1 hibernate”示例中,你可能会看到如何配置Spring MVC和Hibernate的XML配置文件,如何定义Controller和Service,以及如何创建DAO来操作数据库。同时,IBS-WebServer可能是一个包含示例应用的Web...
SpringMVC 3.1是在2011年发布的一个版本,它带来了许多改进和新特性,提升了开发效率和应用性能。 首先,SpringMVC的核心设计模式是模型-视图-控制器(Model-View-Controller)。在SpringMVC框架中,控制器接收HTTP...
SpringMVC 和 Velocity 的整合是将 Velocity 作为模板引擎与 SpringMVC 框架结合,以实现更高效、灵活的视图层渲染。Velocity 是一个开源的 Java 模板引擎,它允许开发者将业务逻辑与表现层内容分离,使得前端开发...
《跟开涛学SpringMVC(6.3)SpringMVC3》是针对SpringMVC框架的一个学习资源,尤其关注其3.1版本的新特性。SpringMVC是Spring框架的重要组成部分,专门用于处理Web应用程序的请求和响应。在这个版本中,SpringMVC...
整合Spring、SpringMVC、Mybatis、Velocity和Maven可以创建出高效、可维护的Java Web应用。这个压缩包提供的示例项目是学习和理解这些技术如何协同工作的绝佳资源。开发者可以通过分析和运行这个项目,深入理解这些...
标题 "mybatis3+spring+springMVC4整合jar包.rar" 描述的是一个整合了MyBatis 3、Spring 4 和 Spring MVC 4 的项目压缩包。这个压缩包通常用于快速搭建一个基于Java的Web开发环境,尤其是用于处理数据库操作和前端...
整合SpringMVC、Spring和iBatis进行CRUD操作,通常需要以下步骤: 1. **配置SpringMVC**:创建`web.xml`配置文件,设置DispatcherServlet,并配置相应的SpringMVC配置文件。 2. **配置Spring**:在Spring配置文件...
在SpringMVC和Velocity的整合项目中,Maven可以帮助我们管理Spring、Velocity以及其它依赖库的版本,确保项目的可重复构建。 将SpringMVC、Velocity和Maven整合在一起,可以按照以下步骤进行: 1. **配置POM.xml**...
在JavaEE开发中,Spring、SpringMVC和JPA是三个非常重要的框架,它们的整合应用可以极大地提高开发效率和代码质量。这个"Spring SpringMVC Jpa整合Demo"就是一个典型的例子,它展示了如何将这三个框架协同工作,构建...