热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

页面静态化技术

在eclipse中点击Window,选择Reference,弹出如下框找到:General --Editors --FileAssociations如下:如果有*.ftl文件,


  1. 在eclipse中点击Window,选择Reference,弹出如下框

  2. 找到:General --> Editors --> File Associations

如下:如果有*.ftl文件,就不用点击上面的Add。如果没有,就点击Add新建

 

 

 



  1. 然后点击此页面下面的Add按钮:

 

 

 

 

 

 



  1. 然后选择General--Content Types: 

  2.  

     编程步骤,这里我们写一个工具类方便我们使用




  3. package cn.jiedada.util;
    import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.io.Writer;
    import java.util.UUID;
    import freemarker.template.Configuration;
    import freemarker.template.Template;
    public class FreeMakerUtil {
    /**
    * @param templatePath--ftl文件父目录路径
    * @param templateName--ftl文件名称
    * @param object --传入的数据
    * @param suffix --文件后缀
    * @return
    */
    public static String createFile(String templatePath,String templateName,Object data,String suffix) {
    //创建一个配置对象
    Configuration cOnf= new Configuration(Configuration.VERSION_2_3_28);
    Writer pw = null;
    String htmluri=null;
    try {
    //创建父目录文件
    File file = new File(templatePath);
    //设置默认template文件路径及字符集
    conf.setDirectoryForTemplateLoading(file);
    conf.setDefaultEncoding("UTF-8");
    //创建template
    Template template = conf.getTemplate(templateName);
    //设置新的名字
    String uuid=UUID.randomUUID().toString().replace("-", "");
    htmluri = uuid+suffix;
    //设置输出路径
    pw =new PrintWriter(new File(file,htmluri));
    template.process(data, pw );
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally {
    if(pw!=null){
    try {
    pw.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }
    return htmluri;
    }
    }
    View Code

     传入的data只能为map或者实体类



  4. map和实体类的遍历

  5. 实体类直接使用字段名

  6. 多个实体的list对象添加到map中的遍历






  7. //传入的map中的数据as为我们的单条数据
    <#list list as l>
    城市:${l.cname }
    城市级别
    <#if l.id lt 10>
    一线城市
    <#elseif l.id lt 21>
    二线城市
    <#else>
    三线城市



     在项目中我们需要做的事情,因为我们的删除和更新都存入了html的地址所以我们需要在修改和删除的时候同时删除数据



  8. 这里为修改

  9. @RequestMapping("/modify")
    public String modify(Jobs jobs,HttpServletRequest req){
    //先删除url在修改
    String realPath = req.getServletContext().getRealPath("/freemakser");
    File file = new File(realPath,jobs.getHtmlurl());
    if(file.exists()){
    file.delete();
    }
    service.modify(jobs);
    return "forward:page";
    }

     这里为删除




  10. @RequestMapping("/del")
    public String delete(Integer id,String htmlurl,HttpServletRequest req){
    service.del(id);
    String realPath = req.getServletContext().getRealPath("/freemakser");
    File file = new File(realPath,htmlurl);
    if(file.exists()){
    file.delete();
    }
    return "forward:page";
    }
    View Code

     service中的修改为




  11. @Override
    public void modify(Jobs jobs) {
    String templatePath = "F:\\JAVAEE\\2019_09_11_cms4\\src\\main\\webapp\\freemakser";
    String templateName ="join_us_details.ftl";
    String htmlurl = FreeMakerUtil.createFile(templatePath, templateName, jobs, ".html");
    jobs.setHtmlurl(htmlurl);
    dao.modify(jobs);
    }
    @Override
    public void add(Jobs jobs) {
    String templatePath = "F:\\JAVAEE\\2019_09_11_cms4\\src\\main\\webapp\\freemakser";
    String templateName ="join_us_details.ftl";
    String htmlurl = FreeMakerUtil.createFile(templatePath, templateName, jobs, ".html");
    jobs.setHtmlurl(htmlurl);
    dao.add(jobs);
    }
    View Code

     



 



推荐阅读
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文介绍了lintcode(12)题目的要求和解题思路,以及给出了相应的代码实现。题目要求在给定的字符串source中找到包括所有目标字符串字母的最短子串,并且时间复杂度为O(n)。解题思路是使用滑动窗口的方法,通过维护一个unordered_map来记录目标字符串中每个字符的出现次数,并使用双指针来寻找最小子串。代码实现部分给出了具体的实现代码。 ... [详细]
author-avatar
antefigure850_495
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有