`

Spring MVC整合FreeMarker

阅读更多

一.工程结构

二.web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee    
   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
   
	<display-name>SpringMVC</display-name>
	
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/springMVC-servlet.xml</param-value>
	</context-param>
	
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<servlet>
		<servlet-name>springMVC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springMVC</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
</web-app> 

 

三.springMVC-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:mvc="http://www.springframework.org/schema/mvc" 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/context
                    http://www.springframework.org/schema/context/spring-context-3.0.xsd
                    http://www.springframework.org/schema/mvc
                    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
                    ">
    <!-- 自动扫描包 --> 
	<context:component-scan base-package="com.bijian.study.controller"></context:component-scan>   
    
    <!-- 默认注解映射支持 --> 
    <mvc:annotation-driven></mvc:annotation-driven>
	
	<!--JSP视图解析器-->
    <bean id="viewResolverJsp" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
        <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView"/>
        <property name="order" value="1"/>
    </bean>
    
	<!-- 配置freeMarker视图解析器 -->
    <bean id="viewResolverFtl" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
        <property name="contentType" value="text/html; charset=UTF-8"/>
        <property name="exposeRequestAttributes" value="true" />
        <property name="exposeSessionAttributes" value="true" />
        <property name="exposeSpringMacroHelpers" value="true" />
        <property name="cache" value="true" />
        <property name="suffix" value=".ftl" />
        <property name="order" value="0"/>
    </bean>

    <!-- 配置freeMarker的模板路径 -->
    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath" value="/WEB-INF/ftl/"/>
        <property name="freemarkerVariables">
            <map>
                <entry key="xml_escape" value-ref="fmXmlEscape" />
            </map>
        </property>
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="freemarkerSettings">
            <props>
                <prop key="template_update_delay">3600</prop>
                <prop key="locale">zh_CN</prop>
                <prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
                <prop key="date_format">yyyy-MM-dd</prop>
                <prop key="number_format">#.##</prop>
            </props>
        </property>
    </bean>

    <bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>
</beans>

        在JSP和Freemarker的配置项中都有一个order property,上面例子是把freemarker的order设置为0,jsp为1,意思是找view时,先找ftl文件,再找jsp文件做为视图。这样Freemarker视图解析器就能与JSP视图解析器并存。

 

四.FreeMarkerController.java

package com.bijian.study.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.alibaba.fastjson.JSON;
import com.bijian.study.utils.JsonUtil;
import com.bijian.study.vo.User;
  
@Controller 
public class FreeMarkerController {   
  
    @RequestMapping("/get/usersInfo")   
    public ModelAndView Add(HttpServletRequest request, HttpServletResponse response) {   
  
        User user = new User();   
        user.setUsername("zhangsan");   
        user.setPassword("1234");
        
        User user2 = new User();   
        user2.setUsername("lisi");   
        user2.setPassword("123"); 
        
        List<User> users = new ArrayList<User>();   
        users.add(user);
        users.add(user2);
        return new ModelAndView("usersInfo", "users", users);   
    }
    
    @RequestMapping("/get/allUsers")   
    public ModelAndView test(HttpServletRequest request, HttpServletResponse response) {
        
        List<User> users = new ArrayList<User>();   
        User u1 = new User();   
        u1.setUsername("王五");
        u1.setPassword("123");
        users.add(u1);
        
        User u2 = new User();   
        u2.setUsername("张三");
        u2.setPassword("2345");
        users.add(u2);
        
        User u3 = new User();   
        u3.setPassword("fgh");   
        u3.setUsername("李四");
        users.add(u3);   
        
        Map<String, Object> rootMap = new HashMap<String, Object>();
        rootMap.put("userList", users);
        Map<String, String> product = new HashMap<String, String>();
        rootMap.put("lastProduct", product);
        product.put("url", "http://www.baidu.com");   
        product.put("name", "green hose");
        
        String result = JSON.toJSONString(rootMap);
        
        Map<String, Object> resultMap = new HashMap<String, Object>();
        resultMap = JsonUtil.getMapFromJson(result);
        
        return new ModelAndView("allUsers", "resultMap", resultMap);   
    }
}

 

五.JsonUtil.java

package com.bijian.study.utils;

import java.util.Map;

import com.alibaba.fastjson.JSON;

public class JsonUtil {

    public static Map<String, Object> getMapFromJson(String jsonString) {
        if (checkStringIsEmpty(jsonString)) {
            return null;
        }
        return JSON.parseObject(jsonString);
    }
    
    /**
     * 检查字符串是否为空
     * @param str
     * @return
     */
    private static boolean checkStringIsEmpty(String str) {
        if (str == null || str.trim().equals("") || str.equalsIgnoreCase("null")) {
            return true;
        }
        return false;
    }
}

 

六.User.java

package com.bijian.study.vo;

public class User {

	private String username;
	private String password;

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
}

 

七.usersInfo.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>usersInfo</title>   
</head>   
<body>   
<#list users as user>
	<div>
		username : ${user.username}, 
		password : ${user.password}
	</div>
</#list>   
</body>   
</html>

 

八.allUsers.ftl

<html>   
 <head>   
   <title>allUsers</title>   
 </head>   
 <body>   
   <#list resultMap.userList as user>   
       Welcome ${user.username}!&nbsp;&nbsp;id:${user.password}<br/>   
   </#list>   
   <p>Our latest product:   
    <a href="${resultMap.lastProduct.url}">${resultMap.lastProduct.name}  </a>!   
  </body>   
</html>

 

九.运行效果


        再输入http://localhost:8088/SpringMVC/greeting?name=zhangshan,JSP视图解析器运行依然正常。

  • 大小: 22 KB
  • 大小: 30.3 KB
  • 大小: 41.4 KB
  • 大小: 33.2 KB
分享到:
评论

相关推荐

    Spring MVC整合 freemarker及使用方法

    Spring MVC整合Freemarker及使用方法 Spring MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,主要用于开发Web应用程序。它实现了MVC架构模式的思想,将Web层进行职责解耦,基于请求驱动...

    spring mvc整合freemarker基于注解方式

    Spring MVC整合FreeMarker基于注解方式的实现涉及到Spring框架和FreeMarker模板引擎的配置以及控制器层的注解使用。在这个过程中,需要配置Spring MVC的DispatcherServlet以及相应的视图解析器,然后通过注解@...

    Spring MVC and FreeMarker Sample

    **Spring MVC与FreeMarker整合应用详解** Spring MVC是Spring框架的一部分,它是一个强大的Web应用程序开发模型,用于构建灵活、可维护的Java Web应用。而FreeMarker则是一个模板引擎,允许开发者将逻辑代码与呈现...

    Spring3.1整合FreeMarker2.3.19

    综上所述,"Spring3.1整合FreeMarker2.3.19"涉及的关键技术点包括Spring MVC的配置、FreeMarker模板的编写和使用,以及两者之间的数据绑定和交互。在实际开发中,结合标签和源码分析,能更好地理解和应用这一整合。

    spring mvc mybatis freemarker 开发CMS代码

    通过学习和研究这个项目,开发者可以深入了解如何在实际项目中整合Spring MVC、MyBatis和Freemarker,以及如何设计和实现一个功能完善的CMS系统。同时,这也是对小伍讲师教学内容的实践验证,有助于提升开发者在企业...

    整合 freemarker +spring security + spring MVC + spring DATA jpa 前端jtable 简单的crud

    本项目结合了Freemarker、Spring Security、Spring MVC和Spring Data JPA,旨在实现前端JTable的简单CRUD(创建、读取、更新、删除)功能。以下是这些技术的详细介绍及其在项目中的应用。 **Freemarker** 是一个...

    spring mvc 3.0-mybatis-freemarker整合

    在本项目中,我们主要探讨的是如何将Spring MVC 3.0、MyBatis 3 和 Freemarker 2.3 这三个强大的技术框架整合在一起,以构建一个高效且灵活的Web应用程序。以下是对这些技术及其整合过程的详细说明: **Spring MVC ...

    spring与freemarker整合 示例源码

    整合Freemarker主要是为了让Spring能够理解并处理Freemarker模板文件,从而动态生成HTML内容。 1. **集成步骤**: - 添加依赖:在项目的`pom.xml`或`build.gradle`文件中,添加Freemarker的依赖库。 - 配置Spring...

    Spring MVC + Tiles + FreeMarker 的整合

    在本文中,我们将深入探讨如何将Spring MVC、Tiles和FreeMarker三个强大的技术框架整合到一个Web应用程序中。Spring MVC作为Spring框架的一部分,提供了一个模型-视图-控制器(MVC)架构,使得开发者能够轻松地处理...

    spring mvc整合hibernate

    整合 Spring MVC 和 Hibernate,我们需要以下几个步骤: 1. **配置 Spring MVC**:在 `web.xml` 文件中配置 DispatcherServlet,并设置 Spring MVC 配置文件的位置。 2. **配置 Hibernate**:创建 Hibernate 的配置...

    spring3 mvc restful freemarker jquery json

    综上所述,这个整合架构提供了一种高效的Web开发模式,Spring3 MVC处理后端逻辑,RESTful设计优化了接口,FreeMarker生成动态页面,jQuery简化了前端交互,而JSON则作为数据交换的桥梁。这样的组合能够帮助开发者...

    Spring mvc、 Spring、 Spring jdbc 整合实例源码

    在整合Spring MVC、Spring和Spring JDBC的实例中,你可能会看到以下几个关键部分: 1. **配置文件**:包括Spring的主配置文件(如`applicationContext.xml`),其中定义了Bean的配置,包括DataSource、JdbcTemplate...

    spring mvc, tiles, freemarker集成

    标题中的“Spring MVC, Tiles, Freemarker集成”指的是在Java Web开发中,将Spring MVC作为控制器框架,Tiles作为页面布局工具,而Freemarker作为视图模板引擎进行整合使用的技术方案。这种集成可以帮助开发者构建...

    spring mvc 4.0

    7. **视图解析**:Spring MVC 4.0支持多种视图技术,如JSP、FreeMarker、Thymeleaf等,视图解析器可以根据配置自动选择合适的视图技术。 8. **异步处理**:Spring MVC 4.0引入了异步请求处理,通过@...

    spring mvc整合mybatis例子

    通过以上步骤,你可以实现Spring MVC与MyBatis的整合,构建出一个既能优雅处理Web请求,又能高效访问数据库的应用程序。在实际开发中,还可以结合Spring Boot和Spring Data JPA等技术进一步简化配置和提升开发效率。

    SpringDataJpa整合FreeMarker源码样例

    《SpringDataJpa整合FreeMarker源码解析》 在当今的软件开发中,Spring Boot、Spring Data JPA和FreeMarker的整合已经成为了构建高效、简洁Web应用的常见选择。本篇将深入探讨如何将这三个强大的工具结合在一起,...

    最新ssm:Spring + SpringMVC + Mybatis + FreeMarker 整合示例

    Spring + SpringMVC + Mybatis + FreeMarker 整合示例。所用jar包均是目前位置最新版本:201710最新版: spring mvc4.3.12 , mybatis: 3.4.5 , FreeMarker : 2.3.26。 有mysql数据库脚本。导入即可使用。有个简单的...

    springmvc spring hibernate整合Demo

    在整合Spring MVC、Spring和Hibernate时,通常步骤如下: 1. 配置Spring:首先,我们需要配置Spring的ApplicationContext,定义Bean并管理它们的生命周期。这通常通过XML或Java配置完成,包括Spring MVC的...

Global site tag (gtag.js) - Google Analytics