开发环境:
System:Windows
WebBrowser:IE6+、Firefox3+
JavaEE Server:tomcat5.0.2.8、tomcat6
IDE:eclipse、MyEclipse 8
开发依赖库:
JavaEE5、Spring 3.0.0.M4、FreeMarker 2.3.16
Email:hoojo_@126.com
Blog: http://blog.csdn.net/IBM_hoojo
1、 新建WebProject,工程名称是SpringFreemarker;然后手动添加jar包,需要的jar包如下:
SpringFramework jar包下载地址:
FreeMarker library下载地址:
当然你也可以去官方下载
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
>
<
param-value
>
/WEB-INF/dispatcher.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中添加文件dispatcher.xml,和web.xml中的对应。内容如下:
<?
xml
version
="1.0"
encoding
="UTF-8"
?
>
<
beans
xmlns
="http://www.springframework.org/schema/beans"
xmlns:mvc
="http://www.springframework.org/schema/mvc"
xmlns:context
="http://www.springframework.org/schema/context"
xmlns:util
="http://www.springframework.org/schema/util"
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-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd"
<
context:component-scan
base-package
="com.hoo"
/>
<!-- annotation的方法映射适配器
<bean id="handlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
-->
<!-- annotation默认的方法映射适配器 -->
<
bean
id
="handlerMapping"
class
="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"
/>
<
bean
class
="org.springframework.web.servlet.view.InternalResourceViewResolver"
>
<
property
name
="viewClass"
value
="org.springframework.web.servlet.view.JstlView"
/>
</
bean
>
</
beans
>
上面是SpringMVC的基本配置
4、 在src中添加applicationContext-beans.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"
xmlns:aop
="http://www.springframework.org/schema/aop"
xmlns:tx
="http://www.springframework.org/schema/tx"
xmlns:util
="http://www.springframework.org/schema/util"
xmlns:context
="http://www.springframework.org/schema/context"
xsi:schemaLocation
="http://www.springframework.org/schema/beans
>
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd"
</
beans
>
里面可以添加一些bean的配置
5、 在src目录添加freemarker.properties配置文件,这个文件是freemarker一些常用的转换,内容如下:
tag_syntax=auto_detect
template_update_delay=2
default_encoding=UTF-8
output_encoding=UTF-8
locale=zh_CN
date_format=yyyy-MM-dd
time_format=HH:mm:ss
datetime_format=yyyy-MM-dd HH:mm:ss
6、 在dispatcher.xml中添加freemarker的配置,配置如下:
<!-- 设置freeMarker的配置文件路径 -->
<
bean
id
="freemarkerConfiguration"
class
="org.springframework.beans.factory.config.PropertiesFactoryBean"
>
<
property
name
="location"
value
="classpath:freemarker.properties"
/>
</
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/
</
value
>
</
property
>
<
property
name
="freemarkerVariables"
>
<
map
>
<
entry
key
="xml_escape"
value-ref
="fmXmlEscape"
/>
</
map
>
</
property
>
</
bean
>
<
bean
id
="fmXmlEscape"
class
="freemarker.template.utility.XmlEscape"
/>
<!-- 配置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
=""
/>
<
property
name
="order"
value
="2"
/>
</
bean
>
上面最关键的就是freeMarker的视图解析器viewResolver的配置,viewClass是使用哪个视图解析器,这里是类路径;其他的和jsp的视图解析器都很类似。
7、 下面在WEB-INF中添加2个ftl模板,在WEB-INF添加ftl,然后添加hello.ftl/hi.ftl,内容分别是:
hello.ftl
<
html
>
<
body
>
<
h1
>
say hello ${name}
</
h1
><
br
/>
${(1 == 1)?string("yes", "no")}
</
body
>
</
html
>
hi.ftl
<
html
>
<
body
>
<
h1
>
say hello ${name}
</
h1
><
br
/>
${(1 != 1)?string("yes", "no")}
</
body
>
</
html
>
8、 添加Controller控制器,代码如下:
package
com.hoo.controller;
import
org.springframework.stereotype.Controller;
import
org.springframework.ui.ModelMap;
import
org.springframework.web.bind.annotation.RequestMapping;
/**
* <b>function:</b> FreeMarker示例控制器
* @author hoojo
* @createDate 2011-3-3 下午04:50:10
* @file HelloWorldController.java
* @package com.hoo.controller
* @project SpringFreemarker
* @version 1.0
*/
@Controller
@RequestMapping(
"/freeMarker"
)
public
class
HelloWorldController {
@RequestMapping(
"/hello"
)
public
String sayHello(ModelMap map) {
System.out.println(
"say Hello ……"
);
map.addAttribute(
"name"
,
" World!"
);
return
"/hello.ftl"
;
}
@RequestMapping(
"/hi"
)
public
String sayHi(ModelMap map) {
System.out.println(
"say hi ……"
);
map.put(
"name"
,
"jojo"
);
return
"/hi.ftl"
;
}
@RequestMapping(
"/jsp"
)
public
String jspRequest(ModelMap map) {
System.out.println(
"jspRequest ……"
);
map.put(
"name"
,
"jsp"
);
return
"/temp.jsp"
;
}
}
9、 添加index.jsp的测试链接或temp.jsp的内容:
index.jsp
<
body
>
<
a
href
="freeMarker/hello.do"
>
say hello
</
a
><
br
/>
<
a
href
="freeMarker/hi.do"
>
say hi
</
a
><
br
/>
<
a
href
="freeMarker/jsp.do"
>
jspRequest
</
a
>
</
body
>
temp.jsp
<
body
>
<
h3
>
${name }
</
h3
>
</
body
>
如果运行无错误,并输出正确的结果就整合成功!~.~

