欢迎使用CSDN-markdown编辑器

来源:互联网 发布:find命令linux 编辑:程序博客网 时间:2024/05/20 14:15

文章添加(使用模板article.ftl,然后进行封装,保存至本地)
注:上传至ftp服务器另外文章说明

@RequestMapping("/addarticle")    public ModelAndView addArticle(HttpServletRequest request,            HttpServletResponse response,@ModelAttribute ArticleEntity article) throws Exception{        ModelAndView view = new ModelAndView();        String fileName=null;        FreeMarkerUtil freeMarkerUtil = FreeMarkerUtil.getFreeMarkerUtil();         String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());        //1、整体包含内容rootMap        Map<String, String> rootMap = new HashMap<String, String>();        rootMap.put("content", article.getContent());        rootMap.put("imageurl", article.getIMAGE_URL());        rootMap.put("title", article.getTITLE());        rootMap.put("summary", article.getSUMMARY());        rootMap.put("time", time);        rootMap.put("image_urls", article.getIMAGE_URL());        //2、html命名        long timenow = System.currentTimeMillis();        fileName = fileRename(timenow+".html");        //3、设置本地保存地址        String projroot = request.getSession().getServletContext().getRealPath("/");        String directory = new File(projroot).getParent()+"/ROOT/html/";        //4、封装    保存到本地        boolean isok = freeMarkerUtil.genHtmlFile(directory,"article.ftl", rootMap, fileName);        //5、封装成功--- 数据库文章url   图片url        if(isok){            article.setCONTENT_URL(fileName);        }        //数据插入数据库        boolean ok = articleService.saveEntity(article);        if (ok){            view.setViewName("redirect:/article/articlelist");        }else{            view.setViewName("/jsp/error/error_404");        }        return view;    }

调用部分的方法(fileRename()和FreeMarkerUtil 的genHtmlFile()):

public static String fileRename(String fileName){        String formatDate = new SimpleDateFormat("yyyyMMddHHmmss")                .format(new Date());        String rename;        int i = (int) (Math.random() * fileName.length());        if(fileName!=null&&fileName.contains(".")){            rename = formatDate +i+fileName.substring(fileName.lastIndexOf("."));        }else{            rename = formatDate +i;        }        return rename;      } public boolean genHtmlFile(String sRootDir, String templateFileName, Map<?, ?> propMap,            String htmlFileName) throws Exception    {        File file = null;        try        {            Template t = getFreeMarkerConfig().getTemplate(templateFileName);            t.setEncoding("UTF-8");            createDirs(sRootDir);            file = new File(sRootDir + "/" + htmlFileName);            Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));            t.process(propMap, out);            out.flush();            out.close();        }        catch (TemplateException e)        {            if(file != null) {                file.delete();            }            logger.error("Error while processing FreeMarker Template" + templateFileName, e);            throw new Exception();        }        catch (IOException e)        {            if(file != null) {                file.delete();            }            logger.error("Error while generate static html file" + htmlFileName, e);            throw new Exception();        }        return true;    }