FreeMarker配置使用问题

java_yinxuan 2014-07-10 05:22:17
没有整合其他框架,FreeMarker独自运行
出现模板文件找不到问题
求救啊
...全文
187 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Inhibitory 2014-07-11
  • 打赏
  • 举报
回复
我只会用我说的这种方式,你的那种没用过。
java_yinxuan 2014-07-11
  • 打赏
  • 举报
回复
引用 1 楼 Inhibitory 的回复:
tpl 模板应该放在/WEB-INF/classes目录下,而不是lib目录下

我的代码中这样设置的
cfg.setServletContextForTemplateLoading(getServletContext(),
"WEB-INF/templates");
java_yinxuan 2014-07-11
  • 打赏
  • 举报
回复
引用 2 楼 Inhibitory 的回复:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         id="WebApp_ID" version="2.5">
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <!-- Freemarker in Servlet -->
    <servlet>
        <servlet-name>freemarker</servlet-name>
        <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
        <init-param>
            <param-name>TemplatePath</param-name>
            <param-value>/</param-value>
        </init-param>
        <init-param>
            <param-name>NoCache</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>ContentType</param-name>
            <param-value>text/html;charset=UTF-8</param-value>
        </init-param>
        <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>
    </servlet>
    <servlet-mapping>
        <servlet-name>freemarker</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>test</servlet-name>
        <servlet-class>servlet.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>test</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
</web-app>
配置<init-param></init-param>是必须的吗? 我刚接触FreeMarker,没有整合任何框架,只单纯用FreeMarker
java_yinxuan 2014-07-11
  • 打赏
  • 举报
回复
引用 4 楼 maihao110 的回复:
// 设置模版路径
freemarker.template.Configuration.setDirectoryForTemplateLoading(new File(ftlpath));

这样配置不行吗?
cfg.setServletContextForTemplateLoading(getServletContext(),
"WEB-INF/templates");

java_yinxuan 2014-07-10
  • 打赏
  • 举报
回复
引用 楼主 java_yinxuan 的回复:
没有整合其他框架,FreeMarker独自运行
出现模板文件找不到问题
求救啊

我的代码中这样设置的
cfg.setServletContextForTemplateLoading(getServletContext(),
"WEB-INF/templates");



路径不应该这样写吗?
  • 打赏
  • 举报
回复
// 设置模版路径 freemarker.template.Configuration.setDirectoryForTemplateLoading(new File(ftlpath));
Inhibitory 2014-07-10
  • 打赏
  • 举报
回复
使用FreeMarker的Servlet
import bean.User;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        User user = new User("HuangBiao", "password");
        req.setAttribute("user", user);

        req.getRequestDispatcher("/WEB-INF/view/freemarker/fm.htm").forward(req, resp); // 这里可以看到fm.htm放的路径,这个是模板文件
    }
}
Inhibitory 2014-07-10
  • 打赏
  • 举报
回复
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         id="WebApp_ID" version="2.5">
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <!-- Freemarker in Servlet -->
    <servlet>
        <servlet-name>freemarker</servlet-name>
        <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
        <init-param>
            <param-name>TemplatePath</param-name>
            <param-value>/</param-value>
        </init-param>
        <init-param>
            <param-name>NoCache</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>ContentType</param-name>
            <param-value>text/html;charset=UTF-8</param-value>
        </init-param>
        <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>
    </servlet>
    <servlet-mapping>
        <servlet-name>freemarker</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>test</servlet-name>
        <servlet-class>servlet.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>test</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
</web-app>
Inhibitory 2014-07-10
  • 打赏
  • 举报
回复
tpl 模板应该放在/WEB-INF/classes目录下,而不是lib目录下

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧