精华内容
下载资源
问答
  • FreeMaker

    2019-04-20 16:06:47
    什么是freemaker FreeMaker是一款模版引擎:基于模版和要改变的数据,并用来生成输出文本(HTML、配置文件)的工具,主要用Freemarker做静态页面或是页面展示 简而言之:Freemaker是一个模版引擎,一个基于模版文件...
    1. 什么是freemaker
      FreeMaker是一款模版引擎:基于模版和要改变的数据,并用来生成输出文本(HTML、配置文件)的工具,主要用Freemarker做静态页面或是页面展示
      简而言之:Freemaker是一个模版引擎,一个基于模版文件生成输出的工具,使用java编写

    2. FreeMaker在servlet中的使用
      1)导入依赖

          <dependency>
             <groupId>freemarker</groupId>
             <artifactId>freemarker</artifactId>
             <version>2.3.8</version>
         </dependency>
    

    2)编写servlet

       private UserService userService = new UserService();
       //freemaker 实例
       private Configuration configuration;
       //数据驱动
       Map<String,Object> root;
    
       @Override
       public void init(ServletConfig config) throws ServletException {
           //实例化freemaker
           configuration = new Configuration();
    
           //设置模版文件存放目录
           //方法一 :使用servletContext
           configuration.setServletContextForTemplateLoading(this.getServletContext(),"WEB-INF/templates");
           //方法二:使用类路径
           //configuration.setClassForTemplateLoading(this.getClass(),"/templates");
           //方法三:使用系统文件
           /*try {
               configuration.setDirectoryForTemplateLoading(new File("/templates"));
           } catch (IOException e) {
               e.printStackTrace();
           }*/
           //设置模版缓存时间
           configuration.setTemplateUpdateDelay(5000);
           //设置缓存策略
           configuration.setCacheStorage(new MruCacheStorage(20,250));
           String path = this.getServletContext().getContextPath();
           root.put("path",path);
       }
       @Override
       protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           String method = req.getParameter("method");
           if("query".equals(method)){
               try {
                   this.query(req,resp);
               } catch (SQLException e) {
                   e.printStackTrace();
               } catch (ClassNotFoundException e) {
                   e.printStackTrace();
               } catch (TemplateException e) {
                   e.printStackTrace();
               }
           }
       }
    
       private void query(HttpServletRequest req, HttpServletResponse resp) throws SQLException, ClassNotFoundException, IOException, TemplateException {
           List<?> list = userService.queryManagerList();
           root.put("list",list);
           Template template = configuration.getTemplate("/user/user_list.ftl");
           template.process(root,resp.getWriter());
       }
    

    3)编写ftl文件

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>User模块的查询展示页面</title></head>
    <a href="${path}manage/user.do?method=addpage">进入添加页面</a>
       <table border="1">
           <tr>
               <td>用户id</td>
               <td>用户名</td>
               <td>密码</td>
               <td>标识†</td>
               <td>操作</td>
           </tr>
           <#list list as user >
               <tr>
                   <td>${user.id}</td>
                   <td>${user.name}</td>
                   <td>${user.pwd}</td>
                   <td>${user.note}</td>
                   <td>
                   <a href="${path}manage/user.do?method=editpage&id=${user.id}">修改</a>
                   <a href="${path}manage/user.do?method=delete&id=${user.id}">删除</a>
                   </td>
               </tr>
           </#list>
       </table>
    </body>
    </html>
    
    1. Struts对freemaker的支持
      在这里插入图片描述
    展开全文
  • freemaker

    2020-09-10 09:16:23
    Freemaker实现特殊字符 #$以及代码不解析 ${r"#"} ${r"$"} <#noparse> </#noparse>

    Freemaker实现特殊字符 #$以及代码不解析 

    ${r"#"}
    ${r"$"}
    <#noparse>
    </#noparse>

     

    展开全文
  • Freemaker

    2020-08-12 09:32:32
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nuXuQzqe-1597195948643)(Freemaker.assets/image-20200810220525099.png)] Freemarker的入门案例 maven的坐标 <dependency> <...

    Freemarker

    Freemarker是用一种表现层的实现技术,而且还可以生成XML,JSP,Java等

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nuXuQzqe-1597195948643)(Freemaker.assets/image-20200810220525099.png)]

    Freemarker的入门案例

    maven的坐标

    <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.28</version>
    </dependency>
    

    创建模板文件

    模板中有四种元素

    1. 文本,直接输出的部分

    2. 注释

      <#---->
      
    3. 插值(Interpolation):即${…}部分,将使用数据模型中的部分代替输出

    4. FTL指令:Freemarker指令,和HTML标记类似,名字前加#用来区分,不会输出

    5. Freemarker的模板文件后缀可以任意,一般使用ftl

    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Freemarker入门</title>
    </head>
        <body>
          <#--我只是一个注释,我不会有任何输出  -->
         ${name}你好,${message}
        </body>
    </html>
    
    public static void main(String[] args) throws Exception{
            //创建freemarker的配置对象
            Configuration configuration = new Configuration(Configuration.getVersion());
            //设置模板文件所在目录
            configuration.setDirectoryForTemplateLoading(new File("F:\\ftl"));
            //设置字符集
            configuration.setDefaultEncoding("utf-8");
            //加载模板文件
            Template template = configuration.getTemplate("test.ftl");
            //准备模板文件中所需要的数据,通常是通过map进行构建
            Map map = new HashMap();
            map.put("name","zhangsan");
            map.put("message","cq");
            //准备输出流对象,用于输出静态文件
            FileWriter fileWriter = new FileWriter("F:\\ftl\\test.html");
            //输出
            template.process(map,fileWriter);
            //关闭流
            fileWriter.close();
        }
    

    效果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LAkprAdN-1597195948646)(Freemaker.assets/image-20200810223137458.png)]

    AIP

    名字 作用
    Configuration configuration =new Configuration(Configuration.getVersion()); 创建freemarker的配置对象
    setDirectoryForTemplateLoading 设置模板文件所在的目录
    setDefaultEncoding 设定字符集
    Template template = configuration.getTemplate(“test.ftl”) 加载模板文件
    注:往模板文件中写入所需要的数据,用map
    FileWriter fileWriter = new FileWriter(“F:\ftl\test.html”); 准备输出流,用来输出静态文件
    template.process 输出

    Freemarker的指令

    assign指令

    • 定义变量

      <#assign linkman="aaa">
          test :${linkman}
      
    • 定义对象

      <#addign 
               info={"mobile":"123456","address":"cq">
          电话:${info.mobile} 地址:${info.address}
      

    include

    用于模板文件的嵌套

    <#include "head.ftl"/>
    

    if 用于判断

    <#if success=true>
    你已通过实名认证
    <#else> 
    你未通过实名认证
    </#if>
    

    其中的success在java中赋值

    map.put("success",true);
    

    其中的属性还可以使用assign进行赋值,如果两个都有以模板文件为准

    list

    用于遍历

    as固定写法

    <#list goodsList as goods>
    	商品名称:${goods.name} 价格:${goods.price}   
    </#list>
    

    java中为goodList赋值

    List goodsList=new ArrayList();
    Map goods1=new HashMap();
    goods1.put("name", "苹果");
    goods1.put("price", 5.8);
    Map goods2=new HashMap();
    goods2.put("name", "香蕉");
    goods2.put("price", 2.5);
    Map goods3=new HashMap();
    goods3.put("name", "橘子");
    goods3.put("price", 3.2);
    goodsList.add(goods1);
    goodsList.add(goods2);
    goodsList.add(goods3);
    map.put("goodsList", goodsList);
    

    new HashMap();
    goods3.put(“name”, “橘子”);
    goods3.put(“price”, 3.2);
    goodsList.add(goods1);
    goodsList.add(goods2);
    goodsList.add(goods3);
    map.put(“goodsList”, goodsList);

    
    
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,922
精华内容 1,168
关键字:

freemaker