`

SpringMVC系列之二、集成FreeMarker

阅读更多
SpringMVC系列之一、集成JSP
SpringMVC系列之二、集成FreeMarker
SpringMVC系列之三、集成Log4j

SpringMVC系列之一、集成JSP类似,改动的地方:

1. 在pom.xml文件中添加FreeMarker依赖:
  <properties>
    <freemarker.version>2.3.19</freemarker.version>
  </properties>
  <dependencies>
    <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>${freemarker.version}</version>
    </dependency>
  </dependencies>


2. web.xml文件,SpringMVC配置文件改为mvc-ftl.xml:
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/mvc-ftl.xml</param-value>
    </init-param>


mvc-ftl.xml,

①. 使用SpringMVC自带的FreeMarker视图解析器FreeMarkerViewResolver
②. 有且只有一个FreeMarkerConfig的bean定义,否则会抛异常。在SpringMVC中,FreeMarkerConfig的实现是FreeMarkerConfigurer
③. 和JSP在prefix属性中指定文件存放路径不同,FreeMarker在templateLoaderPaths属性中指定。

<!-- FreeMarker view resolver -->
<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="prefix" value="he" />
    <property name="cache" value="false"/>
    <property name="viewNames">
        <array>
            <value>*.ftl</value>
        </array>
    </property>
    <!--<property name="suffix" value=".ftl"/>-->
    <property name="order" value="0"/><!-- 优先级,数值越小优先级越高 -->
</bean>

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPaths">
        <list>
            <value>/WEB-INF/ftl/</value><!-- 模板加载路径 -->
        </list>
    </property>
</bean>

<bean name="/ftl.htm" class="com.john.chapter5.web.controller.WithFtlController" />


3. WithFtlController类
public class WithFtlController implements Controller {
	@Override
	public ModelAndView handleRequest(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		ModelAndView mv = new ModelAndView("llo.ftl");
		mv.addObject("msg", "Hello Freemarker!");
		return mv;
	}
}


4. 在/WEB-INF/ftl目录下新建hello.ftl文件
<html>
<head>
<title>Freemarker</title>
</head>
<body>
${msg}
</body>
</html>


5. 运行/调试工程,请求http://localhost:8080/chapter5/ftl.htm,页面输出:
Hello Freemarker!

附:
在FreeMarkerViewResolver的buildView方法中,组装视图的URL:



protected AbstractUrlBasedView buildView(String viewName) throws Exception {
    AbstractUrlBasedView view = (AbstractUrlBasedView) BeanUtils.instantiateClass(getViewClass());
    view.setUrl(getPrefix() + viewName + getSuffix()); // he + llo.ftl + "" => hello.ftl
    String contentType = getContentType();
    if (contentType != null) {
        view.setContentType(contentType);
    }
    view.setRequestContextAttribute(getRequestContextAttribute());
    view.setAttributesMap(getAttributesMap());
    if (this.exposePathVariables != null) {
        view.setExposePathVariables(exposePathVariables);
    }
    return view;
}
  • 大小: 12.5 KB
分享到:
评论

相关推荐

    springmvc项目源码、整合freemarker

    在本项目中,SpringMVC被用来处理HTTP请求并返回响应,与前端模板引擎Freemarker进行了集成,使得开发者能够方便地创建动态网页内容。 **SpringMVC核心组件** 1. **DispatcherServlet**: SpringMVC的前端控制器,...

    手动创建 SpringMvc +SpringDataJpa+Hibernate+ freemarker mavenProject+ 环境切换 webDemo

    在本项目中,我们主要探讨如何手动构建一个基于SpringMVC、Spring Data JPA、Hibernate以及FreeMarker模板引擎的Maven工程,同时实现环境切换功能。这个基础框架为日常开发工作提供了必要的支持。 首先,SpringMVC...

    springmvc+mybatis 和一个简单的freemarker代码生成工具

    FreeMarker的集成通常在SpringMVC的视图解析器配置中完成,设置FreeMarkerConfigurer,指定模板文件的路径。在Controller中,我们可以将处理后的数据模型传入到FreeMarker模板,FreeMarker会根据模板和模型数据生成...

    maven+springmvc+spring+hibernate+freemarker

    maven管理项目+springmvc+spring+hibernate+freemarker 集成框架。其中注解格式清晰,hibernate进行了代码封装,对开发效率有了提高,对异常进行了封装。freemarker也有优化,参考common包下。对日期工具类有各种...

    maven2项目集成springmvc、spring3、freemarker、ibatis和EasyUI实例

    在本项目中,我们主要关注的是一个基于Maven2构建的Web应用,它集成了多个流行的技术栈,包括Spring MVC、Spring3、Freemarker、iBatis和EasyUI。这个项目不仅是一个实际运行的应用,同时也非常适合初学者作为学习和...

    SpringMVC-Freemarker_Sitemesh3例子

    **SpringMVC、Freemarker与Sitemesh3详解** SpringMVC是Spring框架的一部分,它是一个用于构建Web应用程序的模型-视图-控制器(MVC)架构。SpringMVC提供了一个灵活的处理机制,包括处理器映射、视图解析、数据绑定...

    SpringMVC+Freemarker+Hibernate整合范例

    SpringMVC、Freemarker和Hibernate是Java Web开发中三个重要的技术组件,它们分别负责不同的职责:SpringMVC作为轻量级的MVC框架,负责处理请求和响应;Freemarker是一个模板引擎,用于生成动态HTML或其他格式的输出...

    Maven+SpringMVC+Freemarker Demo

    这个"Maven+SpringMVC+Freemarker Demo"是一个基础的Web应用示例,它展示了如何将这三个强大的工具集成到一起,实现一个简洁高效的开发环境。 **1. Maven** Maven是Apache软件基金会开发的一个项目管理和综合工具,...

    springMvc+freemarker

    在这个"springMvc+freemarker"的项目中,我们可以看到作者用Spring MVC与FreeMarker模板引擎集成创建了一个示例应用。 首先,Spring MVC框架的主要组件包括DispatcherServlet、Controller、Model、View和...

    spring+springMVC+Mybatis 项目集成

    此外,它还支持多种视图技术,如JSP、FreeMarker等,并提供数据绑定、表单验证和本地化等功能。 **Mybatis**: Mybatis是一个轻量级的持久层框架,它简化了SQL与Java对象之间的映射工作。通过XML或注解的方式,...

    dubbo+zookeeper+SpringMVC+Spring+Mybatis+Freemarker集成

    本项目“dubbo+zookeeper+SpringMVC+Spring+Mybatis+Freemarker集成”正是一个典型的分布式服务架构,它结合了多个核心技术,旨在提供高效、可扩展的业务处理能力。 首先,Dubbo是一个由阿里巴巴开源的高性能Java ...

    集成spring,datajpa,springmvc,shiro,freemarker,quartz

    说明:参考了公司的一些项目以及springside,集成了一些常用框架,特色功能如下: shiro: 1.支持shiro数据库配置权限。 2.支持在方法级别上控制权限。 quartz: 1.页面配置Trigger以及选择Job任务来开启定时器。 2...

    集成springmvc、hibernate、Mybatis和freemarker 的完整web系统架构

    基于springmvc、hibernate、Mybatis和freemarker 的完整web体统架构 数据持久层采用了hibernate和Mybatis技术集成。hibernate保存、修改方面优势明显,Mybatis查询方面更加优秀灵活。 只需要写Service、action等其他...

    springmvc+freemarker+shiro

    在这个"springmvc+freemarker+shiro"的小Demo中,开发者可能已经展示了如何将这三个组件集成到一个项目中。SpringMVC处理HTTP请求,调用业务逻辑,然后将数据传递给FreeMarker模板进行渲染。同时,Shiro负责用户的...

    springMVC+freemarker整合实例

    SpringMVC和FreeMarker是两种在Java Web开发中广泛使用的技术。SpringMVC是一个轻量级的、基于组件的Web应用框架,它负责处理HTTP请求并分发到对应的控制器进行处理。而FreeMarker则是一个模板引擎,用于动态生成...

    SpringMVC3AndHibernate3 & springMVC集成DWR

    **SpringMVC3与Hibernate3整合及DWR集成详解** SpringMVC3是Spring框架中的一个模块,专门用于处理Web应用程序的请求和响应。它是一个轻量级的、基于注解的 MVC 框架,提供了强大的视图层控制,支持多种视图技术如...

    springmvc+mybatis+ehcache+freemarker+sitemesh页面布局(注解)整合实例完美运行

    同时,FreeMarker和Sitemesh的配置也会集成到SpringMVC中,以便在处理请求时能够正确地渲染和装饰页面。 总的来说,这个实例提供了一个完整的Java Web开发解决方案,通过整合这些技术,可以构建出高性能、易维护且...

    springMVC + freemarker + apache tiles

    2. 集成Freemarker:配置FreemarkerViewResolver,指定模板目录,配置Freemarker的相关参数。 3. 引入Apache Tiles:添加Tiles依赖,配置TilesViewResolver,编写Tiles的定义文件,定义页面结构和Tiles。 4. 在...

    【ssm框架】 spring+springMVC+mySQL+myBatis+freemarker+Maven小示例1

    在本项目中,Spring将负责管理bean的生命周期,提供事务管理,以及集成其他组件如SpringMVC和MyBatis。 **SpringMVC**:SpringMVC是Spring框架的一部分,用于处理HTTP请求和响应。它提供了模型-视图-控制器(MVC)...

    SpringMVC-Spring-Mybatis-Freemarker整合

    【SpringMVC-Spring-Mybatis-Freemarker整合】是一个常见的Java Web开发技术栈,主要涉及了四个关键组件:Spring MVC(模型-视图-控制器)、Spring(核心框架)、Mybatis(持久层框架)以及Freemarker(模板引擎)。...

Global site tag (gtag.js) - Google Analytics