最近要做spring MVC的项目,之前一直用的是struts2 + Spring + Mybats 与 struts2 + Spring + Hibernat 所以就查资料开始写一个Spring MVC + freamarker 的小程序,也算是helloWorld吧,初次试验,有不足的地方还是请大家指点出来,欢迎来提意见,废话不多说了,直接来主题吧。
首先大家需要的jar包有如下图:
第二步是配置web.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> // Spring MVC的拦截器
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/</url-pattern> // 拦截所有的URL
</servlet-mapping>
</web-app>
第三步新建hello-servlet.xml文件(这里文件的命名是和web.xml中的<servlet-name>中的名字相关,在这个名字的基础上再加上-servlet)配置如下:
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
<context:component-scan base-package="com.springmvc.controler"></context:component-scan>
<mvc:annotation-driven/>
<!-- 设置freeMarker的配置文件路径 -->
<bean id="freemarkerConfiguration" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location" value="classpath:freamarker.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>
第四步:在src下添加两个文件(applicationContext-beans.xml / freamarker.properties) ,配置分别如下:
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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
</beans>
freamarker.properties
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
第五步在WEB-INF下新建ftl文件夹并新建hello.ftl文件
<html>
<body>
<h1>say hello ${name}</h1><br/>
${(1 == 1)?string("yes", "no")}
</body>
</html>
第六步,新建控制类 HelloWorldController.java
package com.springmvc.controler;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
@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";
}
}
上述如果没有错误的话,那么启动后直接访问:http://localhost:8080/项目名/freeMarker/hello 就可以到hello.ftl页面