今天的任务就是在spring+mybatis+springmvc的基础上,将freemarker整合进来。

freemarker是什么?

freemarker是一种模板引擎。它的目的是基于模板和数据,生成目标静态文件(例如html)。所以freemarker不只是用于web开发。

对于web开发,关键在于有了这个模板引擎,便可以不断的依据模板和数据生成html页面,这便实现了动态(随着用户操作而更新数据),虽然生成的都是静态的html。

例如,一个页面中包含${usr.usrname}的内容,显示用户名,用户点击下一页按钮,后台查询数据库,获取下一页用户名,将此作为数据,用freemarker从新生成html,发送给浏览器。新的数据就会替换${..}里的内容。

freemarker相对于jsp

这样做主要是因为freemarker相对于jsp的优势:真正的体现了mvc的设计思维。

因为,jsp是可以插入java代码的,虽然你也可以不那么做,但总是有人会那样做,而那样做,就是没有真正地体现mvc的思想,没有真正地实现分层。只有更好地实现分层,才能更好实现前端开发和后台开发的分工。

上面说过,freemarker就是套用模板,模板+数据生成html页面。

而运行机制上,jsp则是通过引擎转化为servlert,再编译为.class文件。运行这个servlet实例来返回对浏览器的响应。

所以说从运行机制上来看,二者还是有很大不同的。

spring-mvc+freemarker整合

之前已经搭好了spring+mybatis+spring-mvc框架了,所以今天要做的只能在之前的基础上继续。http://www.cnblogs.com/rixiang/p/6260433.html

加入freemarker的jar包。

在spring配置文件里,加入freemarker的配置:

   <bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="WEB-INF/ftl/" />
<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>

千万不要忘记,将ViewResolver换成freemarker的视图解析器:

     <!-- freemarker's view resolver -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="contentType" value="text/html; charset=UTF-8" />
<property name="suffix" value=".ftl" />
</bean>

ViewResolver是spring-mvc的概念,不理解的就要额外去学习下。

依据目前的Controller类:

package sonn.web.controller;

import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import sonn.web.entity.User;
import sonn.web.mapper.UserMapper; /**
* @ClassName: GameController
* @Description: the controller of game
* @author sonne
* @date 2017-1-7 16:20:16
* @version 1.0
*/
@Controller
@RequestMapping("/game")
public class GameController { @Resource(name = "userMapper")
private UserMapper userMapper; @RequestMapping(value = "/lst", method = RequestMethod.GET)
public String submit(HttpServletRequest request,Model model) throws Exception {
List<User> usr_lst = userMapper.findAll();
model.addAttribute("lst", usr_lst);
return "game_lst";
}
}

写一个对应的freemarker模板:

<!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>sonne_game</title>
</head>
<body>
<p>Hello, here is sonne's game world.
<#list lst as usr>
<p>The usr's usrname is ${usr.usrname}</p>
<p>The usr's passwd is ${usr.passwd}</p>
</#list>
</body>
</html>

启动项目,输入地址http://localhost:8888/Sonne_game/game/lst.form

相关代码请查阅我的github:https://github.com/SonnAdolf/sonne_game

spring-mvc+freemarker整合(sonne_game网站开发03)的更多相关文章

  1. sonne_game网站开发03 spring-mvc+freemarker整合

    今天的任务就是在spring+mybatis+springmvc的基础上,将freemarker整合进来. freemarker是什么? freemarker是一种模板引擎.它的目的是基于模板和数据, ...

  2. spring-mvc + shiro框架整合(sonne_game网站开发04)

    这篇文章讲的内容是在之前spring + mybatis + spring-mvc + freemarker框架整合的代码的基础上.有需要的可以看看我博客的前两篇文章. 另外,本文章所讲相关所有代码都 ...

  3. spring mvc + freemarker 整合

    <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.s ...

  4. 整合Spring.net到asp.net网站开发中初探

    整合Spring.net到asp.net网站开发中初探 http://www.veryhuo.com 2009-10-21 烈火网 投递稿件 我有话说   Spring提供了一个轻量级的用于构建企业级 ...

  5. Thymeleaf 3与Spring MVC 4 整合配置

    Thymeleaf 3与Spring MVC 4 整合配置 Maven 依赖配置 Spring 相关依赖就不说了 <dependency> <groupId>org.thyme ...

  6. 玩转spring mvc(四)---在spring MVC中整合JPA

    关于在Spring MVC中整合JPA是在我的上一篇关于spring mvc基本配置基础上进行的,所以大家先参考一下我的上一篇文章:http://blog.csdn.net/u012116457/ar ...

  7. MVC 6 电商网站开发实战

    [原创] ASP.NET 5系列教程 (六): 在 MVC6 中创建 Web API 标签: Web API MVC6 创建web API | 博主:powertoolsteam     ASP.NE ...

  8. ssm整合说明与模板-Spring Spring MVC Mybatis整合开发

    ssm整合说明 spring+spring mvc+mybatis 说明 源码下载 由于之前存在ssh框架,spring+struts+hibernate,其中spring负责aop与ioc,所以一般 ...

  9. sonne_game网站开发02spring+mybatis框架搭建

    从最开始搭框架谈起,而且,我不仅仅会讲how,还会努力讲why.因为对于web开发,由于有太多好的框架.组件.工具,使得how往往不是那么深刻,背后的why更值得专研.如果有初学者关注我这个系列,也一 ...

随机推荐

  1. 新技能 get —— 使用 python 生成词云

    什么是词云(word cloud)呢?词云又叫文字云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据 ...

  2. JQuery 多个checkbox 只选中一个

    <form id="common-form"> <input name="check1" type="checkbox"/ ...

  3. iOS CALayer使用

    CALayer使用 iOS的设备中,我们之所以能看到各种各样的控件.文字.图片,都是Core Animation框架的功劳.它通过图层的合成,最终显示在屏幕上.而今天这篇文章讲的就是Core Anim ...

  4. 【非常高%】【codeforces 733B】Parade

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  5. 源码分析之Dictionary笔记

    接下来我们一步步来熟悉 Dictionary的底层结构实现,下面的MyDictionary等同于源码中的Dictionary看待. 首先我们定义一个类 MyDictionary,类中定义一个结构Ent ...

  6. 【Codeforces Round #438 A】Bark to Unlock

    [链接]h在这里写链接 [题意] 在这里写题意 [题解] 枚举它是在连接处,还是就是整个字符串就好. [错的次数] 0 [反思] 在这了写反思 [代码] #include <bits/stdc+ ...

  7. 使用 jquery 的 上传文件插件 uploadify 3.1 配合 java 来做一个简单的文件上次功能。并且在界面上有radio 的选择内容也要上传

    使用 jquery 的 上传文件插件 uploadify 3.1 配合 java 来做一个简单的文件上次功能.并且在界面上有radio 的选择内容也要上传 uploadify 插件的 下载和文档地址  ...

  8. WPF--动态添加控件、访问控件

    //WPF窗口采用默认的Grid布局控件,其“Name”值为“grid1”,在“grid1”中添加三个Button按钮.动态添加控件并访问这些控件的代码如下: private void button1 ...

  9. OpenGL+VS2012编译环境配置

    OpenGL库主体分为三部分,分别是 gl(OpenGL核心库) glu(Utility Library,OpenGL实用库) glut(Utility Toolkit,OpenGL实用工具库) gl ...

  10. matlab 矢量化编程(三) —— 软阈值函数

    dj,k^=⎧⎩⎨⎪⎪dj,k−λ,dj,k≥λ0,otherwisedj,k+λ,dj,k≤−λ function y = soft(x, T) y = (x - abs(T) > 0) .* ...