一:freemarker编辑器的安装
freeM
a
rker模板IDE作为MyEclipse的插件用来编辑ftl文件,具有语法高亮的作用,安装的方式一是采用MyEclipse的help选项下的softWare update,指定url地址,来自动完成插件的下载和安装,安装后会提示重启,在测试的过程中myEclips6.6中提示报错,大致意思是说连接问题,但在eclipse在线安装过程中未出现任何状况,所以采用手动安装的方式,
二:freemarker-jar包的使用
hudson.freemarker_ide_0.9.14下修改配置以及导入指定的freemarkerjar包
,因为freemarker-ide下的第三方jar版本过低,这时需要下载新的版本,覆盖原先的jar,在freemar-ide ----C:\Users\Administrator\Desktop\freemarker-ide-0.9.14\plugins\hudson.freemarker_ide_0.9.14\META-INF\MANIFEST.MF文件进行修改。
=========================================================
MANIFEST.MF
org.eclipse.jdt.ui
Eclipse-AutoStart: true
Bundle-ClassPath: freemarker-2.3.6.jar,
Bunle-ClassPath:指定覆盖后的jar
三:freeMarker的一些问题
1.strut2对freeMarker支持,在struts2.0版本中,查看包结构
views\freemarker下即是struts2对freemarker支持的源文件,但strut2.0版本的还有个FreemarkerServlet.java文件,见附件。
freemarkerServlet继承(extends HttpServlet),也就是一个servlet,所以它会对ftl模板文件进行拦截做些处理,所以在web.xml文件中,会配置一下freemarkerServlet,
<servlet>
<servlet-name>FreemarkerServlet</servlet-name>
<servletclass>org.apache.struts2.views.freemarker.FreemarkerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FreemarkerServlet</servlet-name>
<url-pattern>/servlet/FreemarkerServlet</url-pattern>
</servlet-mapping>
但运行时,会出现一下异常:
javax.servlet.ServletException: Servlet.init() for servlet freemarker threw exception
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:619)
root cause
java.lang.NullPointerException
org.apache.struts2.views.freemarker.FreemarkerServlet.createConfiguration(FreemarkerServlet.java:76)
org.apache.struts2.views.freemarker.FreemarkerServlet.init(FreemarkerServlet.java:54)
javax.servlet.GenericServlet.init(GenericServlet.java:212)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:619)
2.关于freemarker调用struts标签的问题
在ftl文件中,如要使用strut2的标签库就要复制,struts包的标签到指定的目录下,建立对其的引用。
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"]> //struts-tag.tld复制到了WEB-INF下
<html>
<head><title>Struts2 FreeMarker</title></head>
<body>
<@s.form action="login.action">
<@s.textfield name="uid" label="USRNAME"/>
<@s.textfield name="password" label="PASSWORD"/>
<@s.submit value="login"/>
</@s.form>
</body>
</html>
但是在我使用的时候并没有达到页面显示的内容,也许前面的问题和这个问题是环环相扣的。
3,
ide对<@s.textfield>标签的提示并没有表现出来,也只有${}这样的标识也予以提示.
四:加载模板文件(templates)的几种方式
1,通过setClassForTemplateLoading()方式,参数一,指定当前类,参数二:ftl文件所在文件。前提是当前类是ftl所在目录的父目录。
configuration.setClassForTemplateLoading(FreeMarkerManager.class,"templates");
2.通过configuration.setServletContextForTemplateLoading(getServletContext(),
"\\template"),其中第一参数是应用上下文,第二个参数是相对于classpath的ftl所在的目录。
3.通过configuration.setDirectoryForTemplateLoading(new File("templates")),newFile()文件与src是同级目录。
五:sturt2和freemaker
因为以上问题,所以在示例中并没有采用调用struts2标签的方式来进行页面类似输入框的显示,只执行简单的struts2和freemaker数据交互的过程,示例如下。
public class LoginAction extends ActionSupport implements ServletRequestAware,
ServletResponseAware, ServletContextAware {
private HttpServletRequest request;
@SuppressWarnings("unused")
private HttpServletResponse response;
private ServletContext servletContext;
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
@SuppressWarnings("unchecked")
public String Login() throws IOException, TemplateException {
Configuration configuration = new Configuration();
configuration.setServletContextForTemplateLoading(getServletContext(),
"\\template");
configuration.setObjectWrapper(new DefaultObjectWrapper()); // 设置默认的对象包装器
configuration.setTemplateExceptionHandler(TemplateExceptionHandler
.IGNORE_HANDLER);// 设置异常处理器
Map map = new HashMap();
map.put("name", "zhangsan");
map.put("password", "123");
try {
Writer out = response.getWriter();
Template template = configuration.getTemplate("login.ftl");
response.setContentType("text/html;charset="
+ template.getEncoding());
template.process(map, out);
out.close();
} catch (TemplateException e) {
}
return SUCCESS;
}
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
public ServletContext getServletContext() {
return servletContext;
}
}
struts.xml配置
<struts>
<package namespace="/free" name="free" extends="struts-default">
<action name="LoginAction_*"
class="cn.spring.action.LoginAction" method="{1}">
<result>/template/login.ftl</result>
</action>
</package>
</struts>
login.ftl
<html>
<body>
<form action="">
username:<input type="text" name="username" value="${name}"/>
password:<input type="text" name="password" value="${password}"/>
</form>
</body>
</html>
地址栏输入:http://localhost:8080/freeMark/free/LoginAction_Login.action,显示页面如下
- 大小: 7.1 KB
- 大小: 38.1 KB
- 大小: 25.2 KB
- 大小: 12.8 KB
- 大小: 1.1 KB
分享到:
相关推荐
Freemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+java
大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出‘.doc’ word文档。经测试这样方式生成的word文档完全符合office标准,...
这个“freeMarker模板文件附件.zip”压缩包包含了一些关键资源,便于学习者深入理解并实践FreeMarker模板语言的用法。 1. **FreeMarker模板语言基础** FreeMarker是基于模板的,它与Java代码分离,使得视图层的...
通过springboot 整合freemarker模板引擎,自动发送html格式邮件
本主题将深入探讨如何利用Freemarker模板和wkhtmltox工具来实现这一功能。 **Freemarker模板** 是一个强大的Java模板引擎,用于动态生成文本输出,如HTML、XML或PDF。它支持变量替换、控制结构(如if/else)和复杂...
Java 使用 FreeMarker 模板技术导出 Word 是一种常见的数据动态生成文档的方法,它结合了 Java 的编程能力和 FreeMarker 模板引擎的强大功能,能够帮助开发者高效地生成结构化的 Word 文档。FreeMarker 是一个开源的...
本篇将重点介绍一款名为“基于Freemarker模板的代码生成器工具”,这是一款纯Java实现的工具,利用了Freemarker模板引擎的强大功能。 **一、Freemarker模板引擎** Freemarker是一个开源的模板语言,用于生成动态...
FreeMarker概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 虽然FreeMarker具有一些编程的能力...
本主题将探讨如何利用Freemarker模板生成PDF以及如何使用EasyPOI生成带有图片、水印和分页功能的Excel。 首先,让我们深入了解Freemarker。Freemarker是一个强大的模板引擎,它用于生成文本输出,如HTML、XML或PDF...
本话题主要探讨的是如何利用可视化div布局来生成FreeMarker模板,并结合Spring MVC 3框架进行应用。下面将详细阐述这些概念及其相关知识点。 1. **FreeMarker模板引擎**:FreeMarker是一个开源的Java模板引擎,它...
### FreeMarker模板基本语法 #### 一、FreeMarker概述与基本用法 **FreeMarker**是一种强大的、基于Java的模板引擎,主要用于动态生成HTML页面,但也支持其他类型的文本格式(如XML、JavaScript、电子邮件等)。它...
在本项目中,我们将利用FreeMarker模板语言和Spring Boot后端API接口来实现一个用户列表的查询功能。下面,我将详细讲解这个过程中的关键知识点。 1. **FreeMarker模板**: FreeMarker是一个Java模板引擎,它能够...
本示例关注的是如何使用FreeMarker模板引擎来实现这个功能,并且包含在Word文档中插入图片的能力。FreeMarker是一个强大的、轻量级的模板语言,常用于Java应用中的视图层渲染。 首先,理解FreeMarker的基本概念。...
Java FreeMarker 模板生成Word动态表格是一种在Java开发中常用的技术,用于生成基于模板的复杂文档,特别是当需要创建包含动态数据的Word表格时。FreeMarker是一个强大的模板引擎,它与Java代码分离,允许开发者使用...
- `TemplateException`:FreeMarker在处理模板时抛出的异常,通常由语法错误或数据模型问题引起。 - `TemplateProcessingException`:在模板处理过程中发生的异常,通常涉及数据模型的访问。 6. **最佳实践** - ...
本主题涉及的核心技术是使用Freemarker模板引擎来生成DTO(Data Transfer Object)、DAO(Data Access Object)、RowMapper、BO(Business Object)和服务层代码。这些组件在Spring框架中扮演着重要角色。 1. **...
本教程将探讨如何使用iText7和FreeMarker库结合,来创建一个基于模板的PDF生成流程,确保中文支持和图片的正常显示。 首先,iText7是一款强大的Java库,专门用于生成和操作PDF文档。它提供了丰富的API,可以方便地...
在这个"freemarker模板使用"的讨论中,我们将深入探讨Freemarker的核心概念、语法以及如何在实际项目中进行图片插入。 1. **核心概念**: - **模板(Template)**:Freemarker模板是包含固定文本和变量的文本文件...
Freemarker是一个强大的、开源的模板引擎,主要应用于Java平台,用于生成动态内容。它的工作原理是将设计人员创建的HTML或XML模板与由程序员提供的数据模型相结合,生成最终的HTML或其他格式的输出。这对于Web开发中...