很轻的,Servlet + Freemarker 组合体,没有那么硬~
来源:互联网 发布:手机淘宝怎么取消售后 编辑:程序博客网 时间:2024/04/29 03:11
老调重弹。对SSH经典组合有些腻,不再那么轻,重返到若干年前的原始。
Servlet的轻巧高效,Freemarker的强大简便,两者结合将是超轻的组合,即可避免丑陋的Java代码和HTML代码杂揉,又可高效基于模板的站点开发。
闲话少说,项目需要:
freemarker-2.3.13.jar
servlet.jar
定义两个Servlet:
HelloAction.java 对应 /hello,借助Freemarker硬编码输出
public class HelloAction extends HttpServlet {
private static final long serialVersionUID = -6082007726831320176L;
private Configuration configuration;
public void init() throws ServletException {
configuration = new Configuration();
configuration.setServletContextForTemplateLoading(getServletContext(), "WEB-INF/pages");
configuration.setEncoding(Locale.CHINA, "UTF-8");
}
@SuppressWarnings("unchecked")
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 填充数据类型
Map map = new HashMap();
map.put("userName", "小敏");
Template template = configuration.getTemplate("hello.html");
response.setContentType("text/html; charset=" + template.getEncoding());
Writer out = response.getWriter();
try{
template.process(map, out);
}catch (TemplateException e) {
e.printStackTrace();
}
}
public void destroy() {
super.destroy();
if(configuration != null){
configuration = null;
}
}
}
对应模板:
你好, ${userName!} !
HiAction.java 对应 /hi ,借助Freemrker Servlet的拦截功能,如以往写代码方式,感觉不到Freemarker的存在。
public class HiAction extends HttpServlet {
private static final long serialVersionUID = 518767483952153077L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setAttribute("thename", "小敏");
request.getRequestDispatcher("/WEB-INF/pages/hi.html").forward(request, response);
}
}
对应的模板:
hi ${thename!}~
但需要在web.xml 配置文件中定义如下:
freemarker.ext.servlet.FreemarkerServlet
使用哪一种组合方式,看您喜好了。
借助于Freemarker自身的Servlet工具,只是用于拦截Servlet中forward转向使用到的HTML资源文件。
很简陋,但凑合着能看。
项目源代码已经打包如下:
下载源文件
- 很轻的,Servlet + Freemarker 组合体,没有那么硬~
- freemarker的Servlet配置
- 没有那么聪明的毛驴
- 拒用freemarker,这玩艺真的害人不轻
- 基于servlet的 Freemarker Demo
- 一篇很详细的Freemarker讲解(小demo、Servlet中运用、freemarker语言的各种)
- 中国的假货没有那么简单
- 保研推免路上没有想的那么简单
- Python lambda没有你想的那么简单
- 【转】传说最快最轻的Servlet容器Jetty
- FreeMarker Servlet 的配置 (web.xml)
- FreeMarker Servlet 的配置 (web.xml)
- 灵魂很轻的日子
- 如果用Servlet做文件下载的话,当用户中途取消了下载那么Servlet是会继续向用户传送没有传送完的文件还是Servlet会自动关闭当前线程?
- 有没有那么一首歌
- 人生,没有那么简单
- 成长没有那么急迫
- 人生,没有那么简单
- 删除有外键约束的程序
- Commons-logging + Log4j 入门指南
- 关于正则表达式(Regular Expression)
- SqlParameter 在什么时候需要用到它呢
- 私房菜 第二讲 数据库封装扩展
- 很轻的,Servlet + Freemarker 组合体,没有那么硬~
- new与delete函数使用方法以及注意事项
- 真正有效的解决VMware时钟/时间过快或过慢问题或者运行很慢的方法
- 关于Moodle
- 关于iis错误的解决方法
- js 的几个常用的字符串函数
- dxDBGrid使用集锦
- Struts之验证框架Commons-Validator
- Getting device phone number using extended TAPI