前言
1.爲什麼要使用spring MVC呢?
2.爲什麼要使用Freemarker呢?
3.爲什麼不使用Struts2呢?
此示例出現的原因就是發現了struts2的性能太差,所以學習Spring MVC。又由於前一個項目使用的是Struts2+Freemarker寫的,所以要替換Struts2就需要讓Spring MVC也要支持Freemarker。
項目準備
1.Spring 包
spring2.5.6.jar
spring-aop.jar
spring-beans.jar
spring-context.jar
spring-context-support.jar
spring-core.jar
spring-jdbc.jar
spring-jms.jar
spring-orm.jar
spring-test.jar
spring-tx.jar
spring-web.jar
spring-webmvc.jar
spring-webmvc-portlet.jar
spring-webmvc-struts.jar
2.Freemarker包
freemarker-2.3.19.jar
加粗的部分爲項目需要引入的包。
開始我們的整合之旅吧!
開發工具:NetBeans IDE 7.3.1
一、新建web項目springMVCAndFreemarker
二、將jar包引入項目
spring.jar
spring-webmvc.jar
freemarker.jar
依賴包
commons-logging.jar
三、配置web.xml
WEB-INF/web.xml
- <!– Spring 上下文參數 –>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:applicationContext.xml</param-value>
- </context-param>
- <!– Spring 容器啓動器 –>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <servlet>
- <servlet-name>springmvc</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <!–爲DispatcherServlet建樹映射 –>
- <servlet-mapping>
- <servlet-name>springmvc</servlet-name>
- <url-pattern>/*</url-pattern>
- </servlet-mapping>
<!-- Spring 上下文參數 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- Spring 容器啓動器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!--爲DispatcherServlet建樹映射 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
四、添加applicationContext.xml文件
src/applicationContext.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-2.5.xsd”>
- </beans>
<?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-2.5.xsd">
</beans>
接着在內容中添加Freemarker的支持配置
- <!– Freemarker配置 –>
- <bean id=“freemarkerConfig”
- class=“org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer”>
- <property name=“templateLoaderPath” value=“/WEB-INF/view/” />
- <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="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/view/" />
<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>
五、添加spring MVC的servlet配置文件,命名規則(servlet-name+servlet.xml)
WEB-INF/springmvc-servlet.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-2.5.xsd”>
- </beans>
<?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-2.5.xsd">
</beans>
接着在內容中添加Spring MVC的配置
- <!–視圖解釋器 –>
- <bean id=“viewResolver”
- class=“org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver”>
- <property name=“suffix”>
- <value>.ftl</value>
- </property>
- <property name=“contentType” value=“text/html;charset=UTF-8”></property>
- </bean>
<!--視圖解釋器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="suffix">
<value>.ftl</value>
</property>
<property name="contentType" value="text/html;charset=UTF-8"></property>
</bean>
六、創建控制器Controller類
com.qisentech.springmvc.action.HelloWordController.Java
- /*
- * 文 件 名 : com.qisentech.springmvc.action.HelloWordController.java
- * 創建日期 : 2013-8-7 11:40:04
- * 創 建 者 : qsyang
- */
- package com.qisentech.springmvc.action;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.mvc.Controller;
- /**
- * <p>Title: </p>
- *
- * <p>Description: </p>
- *
- * @author qsyang
- * @version 1.0
- */
- public class HelloWordController implements Controller {
- @Override
- public ModelAndView handleRequest(HttpServletRequest hsr
- , HttpServletResponse hsr1) throws Exception {
- ModelAndView mv = new ModelAndView(“hello”);
- mv.addObject(”title”, “Spring MVC And Freemarker”);
- mv.addObject(”content”, “ Hello world , test my first spring mvc ! ”);
- return mv;
- }
- }
/*
* 文 件 名 : com.qisentech.springmvc.action.HelloWordController.java
* 創建日期 : 2013-8-7 11:40:04
* 創 建 者 : qsyang
*/
package com.qisentech.springmvc.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* @author qsyang
* @version 1.0
*/
public class HelloWordController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest hsr
, HttpServletResponse hsr1) throws Exception {
ModelAndView mv = new ModelAndView("hello");
mv.addObject("title", "Spring MVC And Freemarker");
mv.addObject("content", " Hello world , test my first spring mvc ! ");
return mv;
}
}
代碼中new ModelAndView(“hello”)中的hello就是模板文件的名稱由於我們的Freemarker的模板文件是配置在WEB-INF/view下,參考applicationContext.xml配置
<property name=”templateLoaderPath” value=”/WEB-INF/view/” />
所以我們需要在WEB-INF/view下新建模板文件,名稱(hello.ftl)
- <!DOCTYPE html PUBLIC ”-//W3C//DTD HTML 4.01 Transitional//EN”
- “http://www.w3.org/TR/html4/loose.dtd”>
- <html>
- <head>
- <meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”>
- <title>{title}</span><span class="tag"></</span><span class="tag-name">title</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"></</span><span class="tag-name">head</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">body</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> {content}
- </body>
- </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>${title}</title>
</head>
<body>
${content}
</body>
</html>
七、將控制器交給Spring MVC進行攔截
添加以下內容到springmvc-servlet.xml
- <!– 地址轉發器 –>
- <bean name=“HelloAction” class=“com.qisentech.springmvc.action.HelloWordController” />
- <bean id=“urlMapping”
- class=“org.springframework.web.servlet.handler.SimpleUrlHandlerMapping”>
- <property name=“mappings”>
- <props>
- <!– 映射URL地址 –>
- <prop key=“/hello”>HelloAction</prop>
- </props>
- </property>
- </bean>
<!-- 地址轉發器 -->
<bean name="HelloAction" class="com.qisentech.springmvc.action.HelloWordController" />
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<!-- 映射URL地址 -->
<prop key="/hello">HelloAction</prop>
</props>
</property>
</bean>
以上步驟處理好,我們就可以運行了
訪問地址:http://localhost:8088/springMVCAndFreemarker/hello頁面輸出:
Hello world , test my first spring mvc !
就此,我們的第一個Spring MVC + Freemarker的示例結束了!
需要源碼的,可以留言,留下郵箱,我看到了給你發過去!
附上項目結構圖: