参考自 http://www.cnblogs.com/hoojo/archive/2011/04/19/2020551.html
开发环境:
System:Windows 7
WebBrowser:IE8+、Firefox+
JavaEE Server:tomcat7.0.2.8、tomcat6
IDE:eclipse、MyEclipse 8
开发依赖库:
JavaEE6、Spring 3.0.5、FreeMarker 2.3.15
1、 新建WebProject,工程名称是SpringFreemarker;然后手动添加jar包,需要的jar包如下:
2、 在web.xml中添加如下配置:
<!-- 加载Spring容器配置 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 设置Spring容器加载配置文件路径 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext-*.xml</param-value>
</context-param>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- beans 文件配置 -->
<param-value>/WEB-INF/chapter6-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
上面分别是添加Spring的监听器、以及配置Spring的配置文件、还有SpringMVC的控制器;
3、 在WEB-INF中添加文件chapter6-servlet.xml.xml,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--开启Spring MVC注解 -->
<!--Spring3.1之前的注解 HandlerMapping -->
<!-- <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> -->
<!--Spring3.1之前的注解 HandlerAdapter -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<!--线程安全的访问session -->
<!-- <property name="synchronizeOnSession" value="true"/> -->
<!-- </bean> -->
<!--线程安全的访问session -->
<property name="synchronizeOnSession" value="true" />
</bean>
<!--Spring3.1开始的注解 HandlerMapping -->
<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> -->
<!--Spring3.1开始的注解 HandlerAdapter -->
<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> -->
<!--</bean>-->
<!--视图配置 -->
<!--通用视图解析 -->
<!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
<property name="order" value="2" />
</bean> -->
<!-- 配置freeMarker的模板路径 -->
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!--property name="freemarkerSettings" ref="freemarkerConfiguration"/ -->
<property name="templateLoaderPath" value="/WEB-INF/ftl/" />
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">0</prop>
<prop key="default_encoding">UTF-8</prop>
<prop key="number_format">0.##########</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="classic_compatible">true</prop>
<prop key="template_exception_handler">ignore</prop>
</props>
</property>
</bean>
<!-- 配置freeMarker视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<!---->
<property name="viewClass"
value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
<!--<property name="viewNames" value="*.ftl" /> -->
<property name="contentType" value="text/html; charset=utf-8" />
<property name="cache" value="true" />
<property name="prefix" value="" />
<property name="suffix" value=".ftl" />
<property name="order" value="1" />
</bean>
<!-- 处理器 -->
<bean class="cn.javass.chapter6.web.controller.HelloWorldController" />
<bean class="cn.javass.chapter6.web.controller.HelloWorldController2" />
</beans>
上面是SpringMVC的基本配置+freemark视图的配置
上面最关键的就是freeMarker的视图解析器viewResolver的配置,viewClass是使用哪个视图解析器,这里是类路径;其他的和jsp的视图解析器都很类似。
7、 下面在WEB-INF中添加2个ftl模板,在WEB-INF添加ftl,然后添加hello.ftl/hi.ftl,内容分别是:
hello.ftl
<html>
<body>
<h1>say hello </h1><br/>
${message }
</body>
</html>
hi.ftl
<html>
<body>
<h1>say hello ${message }</h1><br/>
</body>
</html>
8、 添加Controller控制器,代码如下:
package cn.javass.chapter6.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
//@RequestMapping
@Controller
public class HelloWorldController {
@RequestMapping(value = "/hello")
public ModelAndView helloWorld() {
//1、收集参数
//2、绑定参数到命令对象
//3、调用业务对象
//4、选择下一个页面
ModelAndView mv = new ModelAndView();
//添加模型数据 可以是任意的POJO对象
mv.addObject("message", "Hello World!");
//设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面
mv.setViewName("hello");
return mv;
}
}
package cn.javass.chapter6.web.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.support.RequestContextUtils;
@Controller
public class HelloWorldController2 {
@RequestMapping(value = "/hi") //②相对于①处的映射进行窄化
public ModelAndView helloWorld() {
//1、收集参数
//2、绑定参数到命令对象
//3、调用业务对象
//4、选择下一个页面
ModelAndView mv = new ModelAndView();
//添加模型数据 可以是任意的POJO对象
mv.addObject("message", "Hello World2!");
//设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面
mv.setViewName("hi");
return mv;
}
}
如果运行无错误,并输出正确的结果就整合成功!~.~
如图: