• 【转载】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

        <!--  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>

    接着在内容中添加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>

    五、添加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>
     

    接着在内容中添加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>

    六、创建控制器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;
        }
    }

    代码中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}</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>

    以上步骤处理好,我们就可以运行了

    访问地址:http://localhost:8088/springMVCAndFreemarker/hello
    页面输出:
    Hello world , test my first spring mvc !
    就此,我们的第一个Spring MVC + Freemarker的示例结束了!

    附上项目结构图:

  • 相关阅读:
    python三大神器
    centos安装fish shell
    linux查看日志
    web攻击
    web安全之XSS
    JSONP && CORS
    css 定位
    MIT-线性代数笔记(1-6)
    es6 Object.assign
    ECMAScript 6 笔记(六)
  • 原文地址:https://www.cnblogs.com/shudonghe/p/3728149.html
Copyright © 2020-2023  润新知