zoukankan      html  css  js  c++  java
  • FreeMarker整合Spring 3

    开发环境:

    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

    http://hoojo.cnblogs.com/

     

    1、 新建WebProject,工程名称是SpringFreemarker;然后手动添加jar包,需要的jar包如下:

    clip_image002

    SpringFramework jar包下载地址:

    http://ebr.springsource.com/repository/app/library/version/detail?name=org.springframework.spring&version=3.0.5.RELEASE

    FreeMarker library下载地址:

    http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.freemarker&version=2.3.15

    当然你也可以去官方下载

    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>

    如果运行无错误,并输出正确的结果就整合成功!~.~

  • 相关阅读:
    笨方法学python中执行argv提示ValueError: not enough values to unpack (expected 4, got 1)
    VMware workstation安装
    Redis bigkey分析
    MySQL drop table 影响及过程
    MySQL 大表硬连接删除
    ES elasticsearch 各种查询
    ES elasticsearch 各种聚合
    ES elasticsearch 聚合统计
    ES elasticsearch 实现 count单字段,分组取前多少位,以地理位置中心进行统计
    MySQL行溢出、varchar最多能存多少字符
  • 原文地址:https://www.cnblogs.com/zhaofei/p/3322646.html
Copyright © 2011-2022 走看看