天天看点

文章添加(本地)

文章添加(使用模板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;
    }
           

继续阅读