Spring MVC 整合 Freemarker

前言

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

  1. <!–  Spring 上下文參數 –>  
  2. <context-param>  
  3.     <param-name>contextConfigLocation</param-name>  
  4.     <param-value>classpath:applicationContext.xml</param-value>  
  5. </context-param>  
  6.   
  7. <!–  Spring 容器啓動器 –>  
  8. <listener>  
  9.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  10. </listener>  
  11. <servlet>  
  12.     <servlet-name>springmvc</servlet-name>  
  13.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  14.     <load-on-startup>1</load-on-startup>  
  15. </servlet>  
  16. <!–爲DispatcherServlet建樹映射 –>  
  17. <servlet-mapping>  
  18.     <servlet-name>springmvc</servlet-name>  
  19.     <url-pattern>/*</url-pattern>  
  20. </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

  1. <?xml version=“1.0” encoding=“UTF-8”?>  
  2. <beans xmlns=“http://www.springframework.org/schema/beans”  
  3.        xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”  
  4.        xsi:schemaLocation=”http://www.springframework.org/schema/beans   
  5.        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd”>  
  6.   
  7. </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的支持配置

  1. <!– Freemarker配置 –>  
  2. <bean id=“freemarkerConfig”  
  3.       class=“org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer”>  
  4.     <property name=“templateLoaderPath” value=“/WEB-INF/view/” />  
  5.     <property name=“freemarkerSettings”>  
  6.         <props>  
  7.             <prop key=“template_update_delay”>0</prop>  
  8.             <prop key=“default_encoding”>UTF-8</prop>  
  9.             <prop key=“number_format”>0.##########</prop>  
  10.             <prop key=“datetime_format”>yyyy-MM-dd HH:mm:ss</prop>  
  11.             <prop key=“classic_compatible”>true</prop>  
  12.             <prop key=“template_exception_handler”>ignore</prop>  
  13.         </props>  
  14.     </property>  
  15. </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

  1. <?xml version=“1.0” encoding=“UTF-8”?>  
  2. <beans xmlns=“http://www.springframework.org/schema/beans”  
  3.        xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”  
  4.        xsi:schemaLocation=”http://www.springframework.org/schema/beans   
  5.        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd”>  
  6.   
  7. </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的配置

  1. <!–視圖解釋器 –>  
  2. <bean id=“viewResolver”  
  3.       class=“org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver”>  
  4.     <property name=“suffix”>  
  5.         <value>.ftl</value>  
  6.     </property>  
  7.     <property name=“contentType” value=“text/html;charset=UTF-8”></property>  
  8. </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

  1. /* 
  2.  * 文 件 名 : com.qisentech.springmvc.action.HelloWordController.java 
  3.  * 創建日期 : 2013-8-7 11:40:04 
  4.  * 創 建 者 : qsyang 
  5.  */  
  6. package com.qisentech.springmvc.action;  
  7.   
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10. import org.springframework.web.servlet.ModelAndView;  
  11. import org.springframework.web.servlet.mvc.Controller;  
  12.   
  13. /** 
  14.  * <p>Title: </p> 
  15.  * 
  16.  * <p>Description: </p> 
  17.  * 
  18.  * @author qsyang 
  19.  * @version 1.0 
  20.  */  
  21. public class HelloWordController implements Controller {  
  22.   
  23.     @Override  
  24.     public ModelAndView handleRequest(HttpServletRequest hsr  
  25.             , HttpServletResponse hsr1) throws Exception {  
  26.         ModelAndView mv = new ModelAndView(“hello”);  
  27.         mv.addObject(”title”“Spring MVC And Freemarker”);  
  28.         mv.addObject(”content”“ Hello world , test my first spring mvc ! ”);  
  29.         return mv;  
  30.     }  
  31. }  
/*
 * 文 件 名 : 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)

  1. <!DOCTYPE html PUBLIC ”-//W3C//DTD HTML 4.01 Transitional//EN”   
  2.  “http://www.w3.org/TR/html4/loose.dtd”>  
  3. <html>  
  4.     <head>  
  5.         <meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”>  
  6.         <title>{title}</span><span class="tag">&lt;/</span><span class="tag-name">title</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">head</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">body</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {content}  
  7.     </body>  
  8. </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

  1. <!– 地址轉發器 –>  
  2. <bean name=“HelloAction” class=“com.qisentech.springmvc.action.HelloWordController” />  
  3. <bean id=“urlMapping”  
  4.       class=“org.springframework.web.servlet.handler.SimpleUrlHandlerMapping”>  
  5. <property name=“mappings”>  
  6.     <props>  
  7.         <!– 映射URL地址 –>  
  8.         <prop key=“/hello”>HelloAction</prop>  
  9.     </props>  
  10. </property>  
  11. </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的示例結束了!

需要源碼的,可以留言,留下郵箱,我看到了給你發過去!

附上項目結構圖:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章