FreeMarker与SSH项目整合流程

学习了SSH之后,一般为了减少数据库的压力,会使用FreeMarker来生成静态HTML页面。下面简单说一下FreeMarker与SSH项目的整合全过程~

前提:已构建好SSH项目结构。

Step 1. 从网上下载freeMarker.jar,然后复制到项目中的/WEB-INF/lib目录下。

Step 2. 在web.xml加入以下配置信息:

<servlet>

<servlet-name>freemarker</servlet-name>

<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>

<init-param>

<param-name>TemplatePath</param-name>

<param-value>/WEB-INF/</param-value><!-- 此处表示ftl文件的存放路径,这里表示ftl文件放在了/WEB-INF/目录下 -->

</init-param>

<init-param>

<param-name>NoCache</param-name>

<param-value>true</param-value>

</init-param>

<!-- 强制使用 UTF-8作为输出编码格式! -->

<init-param>

<param-name>ContentType</param-name>

<param-value>text/html; charset=UTF-8</param-value>

</init-param>

<!-- FreeMarker 设置: -->

<!-- 在开发时设置为0,实际使用的时候需设置为较大的值 -->

<init-param>

<param-name>template_update_delay</param-name>

<param-value>0</param-value>

</init-param>

<!-- 模板文件的编码方式. -->

<init-param>

<param-name>default_encoding</param-name>

<param-value>utf-8</param-value>

</init-param>

<init-param>

<param-name>number_format</param-name>

<param-value>0.##########</param-value>

</init-param>

<!-- datetime-format指定DateTime类型数据显示的格式 -->

<init-param>

<param-name>datetime_format</param-name>

<param-value>yyyy-MM-dd HH:mm:ss</param-value>

</init-param>

<!-- date-format指定Date类型数据显示的格式 -->

<init-param>

<param-name>date_format</param-name>

<param-value>yyyy-MM-dd</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>freemarker</servlet-name>

<url-pattern>*.ftl</url-pattern>

</servlet-mapping>

Step 3. 在Step2已经说了,模板文件.ftl都会放在/WEB-INF/目录下,我们需要将.ftl文件创建在自己所设置的路径下,比如本人是test.ftl

Step 4. 编辑test.ftl,本人给出的示例代码如下:

 test.ftl :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">

<HTML xmlns="http://www.w3.org/1999/xhtml">

<HEAD>

<TITLE></TITLE>

<META http-equiv=Content-Type content="text/html; charset=utf-8">

</HEAD>

<BODY>

<H1>${firstTest}</H1>

</BODY>

</HTML>

Step 5. 创建一个TestAction.java文件,作为控制层,内容如下:

注意:此处使用注解@Controller,需要在spring的xml文件中加入注解扫描!

如:<context:component-scan base-package="com.test.action"></context:component-scan>

TestAction.java:

@Controller

public class TestAction extends ActionSupport{

private static final long serialVersionUID = -3771504149261841628L;

public String firstTest;

public String getFirstTest() {

return firstTest;

}

public void setFirstTest(String firstTest) {

this.firstTest = firstTest;

}

@Override

public String execute() throws Exception {

firstTest = "hello , this is my first test!";

return SUCCESS;

}

}

Step 6. 在struts.xml文件中加入以下配置信息(注意result的type值为freemarker,后面的路径文件类型是.ftl):

Step 7. 在tomcat运行,在浏览器地址栏输入:

http://localhost:8080/crm-freemaker-ssh/test.action,运行效果如下:

可以看到在TestAction.java文件中为firstTest变量赋的值成功显示在页面~说明配置成功啦~

注:关于FreeMarker的详细介绍,请参见文档http://freemarker.foofun.cn/index.html

FreeMarker与SSH项目整合流程的更多相关文章

  1. SSH项目整合基本步骤

    SSH项目整合基本步骤 一.项目简介 该项目是由Spring4.Struts2 以及 Hibernate4 整合搭建的 web 项目,把Action分开编写,便于查看,使用JSTL.EL标签. 二.项 ...

  2. SSH项目整合教学Eclipse搭建SSH(Struts2+Spring3+Hibernate3)

    这篇博文的目的 尝试搭建一个完整的SSH框架项目. 给以后的自己,也给别人一个参考. 读博文前应该注意: 本文提纲:本文通过一个用户注册的实例讲解SSH的整合.创建Struts项目,整合Hiberna ...

  3. SSH 项目整合

    SSH整合:spring + springmvc + hibernate 1.1 生成Maven项目:ar_ssh 1.2 添加jar包:pom.xml 与ssm相比,主要添加了spring与hibe ...

  4. SSH项目整合

    其实框架的整合无非就是jar包和配置文件: struts2.spring.Hibernate这三个框架,分清楚什么作用就好配置了. jar包我们就不说了,这里看下配置文件吧: struts.xml: ...

  5. 使用eclipse整合ssh项目的例子--lljf(1)

    最近向自己单独做一个基于ssh的项目,来预习和巩固自己的Java基础.找了一个实际生活中的定做衣服的例子来做一做,放到博客上给大家一起分享学习,后边会持续更新项目编写时候遇到的困难和使用的技术等. 1 ...

  6. J2EE进阶(六)SSH框架工作流程项目整合实例讲解

    J2EE进阶(六)SSH框架工作流程项目整合实例讲解 请求流程 经过实际项目的进行,结合三大框架各自的运行机理可分析得出SSH整合框架的大致工作流程. 首先查看一下客户端的请求信息: 对于一个Web项 ...

  7. Maven项目整合SSH框架

    ---------------------siwuxie095                                         Maven 项目整合 SSH 框架         创建 ...

  8. 手动整合实现SSH项目开发01

    内容简介:本文主要介绍SSH项目开发的配置以及简单登录功能的实现. 1. 新建一个Dynamic Web Project. 2.导入需要 的Jar包,此项目是Struts.Hibernate.Spri ...

  9. SSH项目搭建(二)

    本章讲解SSH项目需要到哪些jar包,及各个jar包的作用 一.struts2 1.下载好struts2,struts2文件夹>>>>apps>>>>a ...

随机推荐

  1. bzoj 4975: [Lydsy1708月赛]区间翻转【博弈论】

    必败状态是倒序排列,也就是正序对为0 然后发现,每次翻转都是有奇数个数对(\( C_{4x+2}^{2} C_{4x+3}^{2} \) 都是奇数),所以每次翻转丢回改变正反数对的奇偶性 又因为偶数为 ...

  2. bzoj 5019: [Snoi2017]遗失的答案【dp+FWT】

    满足GL的组合一定包含GL每个质因数最大次幂个最小次幂,并且能做限制这些数不会超过600个 然后质因数最多8个,所以可以状压f[s1][s2]为选s1集合满足最大限制选s2集合满足最小限制 dfs一下 ...

  3. 第十篇 .NET高级技术之委托

    委托是一种可以指向方法的数据类型,可以声明委托类型变量. 声明委托的方式:delegate返回值类型   委托类型名(参数) 比如delegate void MyDel(int n) 注意这里的除了前 ...

  4. 浅谈字符串哈希 By cellur925

    前言 蒟蒻最近在复习字符串算法...但正如之前所说,我OI太菜被关起来了,本蒟蒻只能从最简单的哈希入手了TAT.而别的dalao都在学习AC自动机/后缀数组等高到不知哪里去的算法qwq. 基本思想 映 ...

  5. 决斗(Headshot )

    #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; char ...

  6. Udp实现省略编码

    class My_Socket(socket.socket): def __init__(self, encoding='utf-8'): self.encoding = encoding super ...

  7. scikit-learning教程(二)统计学习科学数据处理的教程

    统计学习:scikit学习中的设置和估计对象 数据集 Scikit学习处理来自以2D数组表示的一个或多个数据集的学习信息.它们可以被理解为多维观察的列表.我们说这些阵列的第一个轴是样本轴,而第二个轴是 ...

  8. 模拟+位运算 HDOJ 5491 The Next

    题目传送门 题意:意思很简单,找一个最接近D且比D大的数,满足它的二进制表示下的1的个数在[S1, S2]之间 分析:从D + 1开始,若个数小于S1,那么从低位向高位把0替换成1直到S1就是最小值, ...

  9. R语言中的并行处理

    网上有人说foreach包可以并行,我就去弄了,结果发现一个普通的二重循环什么事都不错都很卡!捣鼓了半天才发现是foreach的问题 为了提速,做了如下事宜: 直接利用矩阵列加减,不是一个个遍历加 把 ...

  10. hash 【模板】

    hash 功能: hash一般用于快速判断两个或多个字符串是否匹配. 实现 :    想一想,如果比较两个数子的话是很方便的很快,那么我们把整个字符串看成一个大数.  它是base进制的len位数.但 ...