`

framework freemarker / velocity

阅读更多

CMS 静态化参考

 

JAVA静态化,如何生成html问题

http://hi.csdn.net/yuezu1026/

http://topic.csdn.net/u/20080829/14/7ee4965f-f0d3-4c84-a2fa-10d44b735d63.html

 

http://hi.csdn.net/yuezu1026/

中国灯饰商贸网

www.lighting86.com.cn

中山市旅游网

http://www.86760.com/

 

 

public class Test {

    //config.getDriverName(),config.getUrl(),config.getUserName(),config.getPassword());
    public static void main(String[] args) {
        Config config = ConfigResolver.parseXML(null);
       
        String jspPage = config.getIndexFrom();//jsp文件地址
        String htmlPage = config.getIndexTo();//html文件名 
        if(jspPage!=null && htmlPage!=null ){
            createHtml(jspPage,htmlPage); //处理站点首页
        }
       
        jspPage = config.getGroupZhengquanFrom();//jsp文件地址
        htmlPage = config.getGroupZhengquanTo();//html文件名
        if(jspPage!=null && htmlPage!=null ){
            createHtml(jspPage,htmlPage); //处理证券圈子页面
        }
public static void createHtml(String jspPage,String htmlPage){
        System.out.println(jspPage+"----------------start");
        BufferedReader in = null;
        BufferedWriter out= null;
        try{
            in = new BufferedReader(new InputStreamReader(new FileInputStream(htmlPage)));
            out = getOut(htmlPage+"_old", true); //备分原文件
            copyFile(in,out); //备分原文件
        }catch(Exception e){
            e.printStackTrace();
        }       
       
        in = getIn(jspPage);
        out = getOut(htmlPage+"_back", true);
        generateHtml(in, out,jspPage);//生成静态页面
        close(in, out);
       
        try{
            in=new BufferedReader(new InputStreamReader(new FileInputStream(htmlPage+"_back")));
        }catch(Exception e){
            e.printStackTrace();
        }
        out = getOut(htmlPage, true);
        copyFile(in,out); //文件拷贝
        System.out.println(jspPage+"----------------end");
    }

    public final static void generateHtml(BufferedReader in, BufferedWriter out,String jspPage) {
        boolean flag=true;

        if (out == null)
            return;//不生成静态页面
        try {
            out.write(" <%@ page language=\"java\" %>\r\n");
            out.write(" <%@ page contentType=\"text/html; charset=GBK\"%>\r\n");
            String c;
            while ((c = in.readLine()) != null) {
//                if(c.trim().equals(" <!--portalheaderbegin-->")){           
//                    flag=false;
//                }
//                if(c.trim().equals(" <!--portalheaderend-->")){
//                    if(jspPage.indexOf("channel.jsp")!=-1){ //如果是频道页面
//                        c=" <jsp:include page='/include/portalheader.jsp?channelId="+jspPage.split("type_id=")[1]+"' />\r\n";
//                    }else if(jspPage.indexOf("zhengquan_group_act.jsp")!=-1){ //证券圈
//                        c=" <jsp:include page='/include/portalheader.jsp?groupId=43' />\r\n";
//                    }else if(jspPage.indexOf("group_general.jsp")!=-1){ //其他圈子
//                        c=" <jsp:include page='/include/portalheader.jsp?groupId="+jspPage.split("type_id=")[1]+"' />\r\n";
//                    }else if(jspPage.indexOf("group_index")!=-1){ //圈子首页
//                        c=" <jsp:include page='/include/portalheader.jsp?groupId=group' />\r\n";
//                    }else if(jspPage.indexOf("community_index")!=-1){ //社区首页
//                        c=" <jsp:include page='/include/portalheader.jsp?shequId=abc123' />\r\n";
//                    }else{
//                        c=" <jsp:include page='/include/portalheader.jsp' />\r\n";
//                    }
//                    flag=true;
//                }
               
                if(c.trim().equals(" <!--portalheaderbegin-->")){           
                    flag=false;
                }
               
                if(c.trim().equals(" <!--portalheaderend-->")){
                    if(jspPage.indexOf("channel.jsp")!=-1){ //如果是频道页面
                        //c=" <jsp:include page='/include/portalheader.jsp?channelId="+jspPage.split("type_id=")[1]+"' />\r\n";
                        c=" <jsp:include page='/permissionFilter.jsp' />\r\n";
                    }else if(jspPage.indexOf("zhengquan_group_act.jsp")!=-1){ //证券圈
                        c=" <jsp:include page='/include/portalheader.jsp?groupId=43' />\r\n";
                    }else if(jspPage.indexOf("group_general.jsp")!=-1){ //其他圈子
                        //c=" <jsp:include page='/include/portalheader.jsp?groupId="+jspPage.split("type_id=")[1]+"' />\r\n";
                        c=" <jsp:include page='/permissionFilter.jsp' />\r\n";
                    }else if(jspPage.indexOf("group_index")!=-1){ //圈子首页
                        c=" <jsp:include page='/include/portalheader.jsp?groupId=group' />\r\n";
                    }else if(jspPage.indexOf("community_index")!=-1){ //社区首页
                        c=" <jsp:include page='/include/portalheader.jsp?shequId=abc123' />\r\n";
                    }else if(jspPage.indexOf("portal/index_act.jsp")!=-1){ //首页
                        //c=" <jsp:include page='/include/portalheader.jsp?index=yes' />\r\n";
                        c=" <jsp:include page='/permissionFilter.jsp' />\r\n";
                    }else if(jspPage.indexOf("portal/blogershare_act.jsp")!=-1){ //分享页
                        c=" <jsp:include page='/permissionFilter.jsp' />\r\n";
                    }else{
                        c=" <jsp:include page='/include/portalheader.jsp' />\r\n";
                    }
                    flag=true;
                }
                if(flag&&c.length()>0){
                    out.write(c+"\r\n");
                }
            }
            out.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
public final static void copyFile(BufferedReader from, BufferedWriter to) {
        if (to == null || from == null)
            return;//不生成静态页面
        try {
            int c;
                while ((c = from.read()) != -1) {
                    to.write((char)c);
            }
            to.flush();
            close(from, to);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public final static BufferedReader getIn(String jspPage) {

        BufferedReader in = null;
        URL url = null;
        URLConnection urlConn = null;
        try {
            url = new URL(jspPage);
            urlConn = url.openConnection();//建立http连接
            in = new BufferedReader(new InputStreamReader(urlConn
                    .getInputStream(), "GBK"));//设置Encoding,必须设置,否则显示中文会有问题
        } catch (IOException e) {
            e.printStackTrace();
           
        }finally{
            urlConn=null;
            url=null;
        }
       

        return in;
    }

    public final static BufferedWriter getOut(String htmlPage, boolean flag) {

        BufferedWriter out = null;

        try {
            File htmlFile = new File(htmlPage);
            if (flag) {
                htmlFile.createNewFile();
            } else {//如果flag为false则不覆盖文件
                if (htmlFile.exists()) {//如果文件已经存在则返回null
                    return null;
                } else {//建立新文件
                    htmlFile.createNewFile();
                }
            }
            out = new BufferedWriter(new OutputStreamWriter(
                    new FileOutputStream(htmlFile), "GBK"));//设置Encoding
        } catch (IOException e) {
            e.printStackTrace();
        }

        return out;

    }//flag为真则覆盖原文件

    public final static void close(BufferedReader in, BufferedWriter out) {

        try {
            in.close();
            if (out != null)
                out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

 

 

public class ConfigResolver {
    private static String xmlPath = "config/config.xml";

    /**
    * 获取配置文件对象信息
    *
    * @param fileName
    * @return
    * @throws Exception
    */
    public static Config parseXML(String fileName) {
        if (null != fileName) {
            xmlPath = fileName;
        }
        Config configFile = new Config();
        try {
            XMLConfiguration parser = new XMLConfiguration();
            parser.setFile(new File(xmlPath));
            parser.load();

            //首页原
            String indexFrom = (String) parser.getProperty("indexFrom");
            configFile.setIndexFrom(indexFrom);
            //首页目标
            String indexTo = (String) parser.getProperty("indexTo");
            configFile.setIndexTo(indexTo);

            //圈子页原
            String groupZhengquanFrom = (String) parser
                    .getProperty("groupZhengquanFrom");
            configFile.setGroupZhengquanFrom(groupZhengquanFrom);
            //圈子页目标
            String groupZhengquanTo = (String) parser
                    .getProperty("groupZhengquanTo");
            configFile.setGroupZhengquanTo(groupZhengquanTo);

            //频道页原
            String channelFrom = (String) parser.getProperty("channelFrom");
            configFile.setChannelFrom(channelFrom);
            //频道页目标
            String channelTo = (String) parser.getProperty("channelTo");
            configFile.setChannelTo(channelTo);

            String channelIds = (String) parser.getProperty("channelIds");
            configFile.setChannelIds(channelIds);

            //大杂烩原
            String dazahuiFrom = (String) parser.getProperty("dazahuiFrom");
            configFile.setDazahuiFrom(dazahuiFrom);
            //大杂烩目标
            String dazahuiTo = (String) parser.getProperty("dazahuiTo");
            configFile.setDazahuiTo(dazahuiTo);

            //别人的订阅,关注原
            String anthorTakenFrom = (String) parser
                    .getProperty("anthorTakenFrom");
            configFile.setAnthorTakenFrom(anthorTakenFrom);
            //别人的订阅,关注目标
            String anthorTakenTo = (String) parser.getProperty("anthorTakenTo");
            configFile.setAnthorTakenTo(anthorTakenTo);

            //房产圈子页原
            String fangChanFrom = (String) parser
                    .getProperty("groupFangchanFrom");
            configFile.setGroupFangchanFrom(fangChanFrom);
            //房产圈子页目标
            String fangChanTo = (String) parser.getProperty("groupFangchanTo");
            configFile.setGroupFangchanTo(fangChanTo);
            String groupIds = (String) parser.getProperty("groupIds");
            configFile.setGroupIds(groupIds);

            //首页用圈子文章list原
            String quanziArticleListFrom = (String) parser.getProperty("quanziArticleListFrom");
            configFile.setQuanziArticleListFrom(quanziArticleListFrom);
            //首页用圈子文章list目标
            String quanziArticleListTo = (String) parser.getProperty("quanziArticleListTo");
            configFile.setQuanziArticleListTo(quanziArticleListTo);
           
            String quanziIds = (String) parser.getProperty("quanziIds");
            configFile.setQuanziIds(quanziIds);
           
           
            //圈子首页原
            String groupIndexFrom = (String) parser.getProperty("groupIndexFrom");
            configFile.setGroupIndexFrom(groupIndexFrom);
            //圈子首页目标
            String groupIndexTo = (String) parser.getProperty("groupIndexTo");
            configFile.setGroupIndexTo(groupIndexTo);
           
            //社区首页原
            String shequIndexFrom = (String) parser.getProperty("shequIndexFrom");
            configFile.setShequIndexFrom(shequIndexFrom);
            //社区首页目标
            String shequIndexTo = (String) parser.getProperty("shequIndexTo");
            configFile.setShequIndexTo(shequIndexTo);
           
            //热点排名周源
            String articleRankWeekFrom = (String) parser.getProperty("articleRankWeekFrom");
            configFile.setArticleRankWeekFrom(articleRankWeekFrom);
            //热点排名周目标
            String articleRankWeekTo = (String) parser.getProperty("articleRankWeekTo");
            configFile.setArticleRankWeekTo(articleRankWeekTo);
           
            //热点排名月源
            String articleRankMonthFrom = (String) parser.getProperty("articleRankMonthFrom");
            configFile.setArticleRankMonthFrom(articleRankMonthFrom);
            //热点排名月目标
            String articleRankMonthTo = (String) parser.getProperty("articleRankMonthTo");
            configFile.setArticleRankMonthTo(articleRankMonthTo);
           
            //图片首页more源
            String photoIndexMoreFrom = (String) parser.getProperty("photoIndexMoreFrom");
            configFile.setPhotoIndexMoreFrom(photoIndexMoreFrom);
            //图片首页more目标
            String photoIndexMoreTo = (String) parser.getProperty("photoIndexMoreTo");
            configFile.setPhotoIndexMoreTo(photoIndexMoreTo);
           
            //博客分享源
            String blogerShareFrom = (String) parser.getProperty("blogerShareFrom");
            configFile.setBlogerShareFrom(blogerShareFrom);
            //博客分享目标
            String blogerShareTo = (String) parser.getProperty("blogerShareTo");
            configFile.setBlogerShareTo(blogerShareTo);

        } catch (Exception e) {
            e.printStackTrace();
        }
        return configFile;
    }
}

 

 

 

end

 

分享到:
评论

相关推荐

    spring mvc与velocity整合

    &lt;property name="resourceLoaderPath" value="/WEB-INF/velocity/" /&gt; &lt;/bean&gt; &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"&gt; ...

    SpringMVC3+velocity最简单配置例子

    4. **创建Velocity模板**: 在指定的资源路径(如`/WEB-INF/velocity/`)下创建`.vm`文件,如`example.vm`,并使用VTL语法引用模型中的数据。 5. **运行与测试**: 启动服务器,访问对应的URL,SpringMVC会调用...

    servlet的模板

    对于初学者,可以从简单的模板如Freemarker或Velocity开始,随着经验的积累,可以尝试使用更强大的框架如Spring MVC或Play Framework来构建大型的Web应用。无论选择哪种模板,理解其基本原理和工作方式都是至关重要...

    freemarker基础v1.1.pdf

    在模板引擎领域,Freemarker与JSP、Thymeleaf、Velocity等都是常见的选择。每种模板引擎有其特点和适用场景,例如JSP是直接在服务器端生成HTML,而Freemarker和Thymeleaf则更加注重分离视图和逻辑,提供更清晰的模板...

    高级Java人才培训专家-02-Freemarker.pptx

    Freemarker与其他几种模板引擎技术进行了对比,包括JSP、Velocity和Thymeleaf: - **JSP**:专为Servlet设计,不能独立使用。 - **Velocity**:更新缓慢,自2010年发布2.0版本以来,7年内未有更新。Spring Boot官方...

    spring-framework-3.2.4-RELEASE Maven Source Code

    - **Web MVC增强**:增加了对RESTful风格的支持,增强了模板引擎的集成,如FreeMarker、Velocity等。 - **WebSocket支持**:引入WebSocket API,为实时通信提供了新的解决方案。 - **性能优化**:在内存使用和...

    spring-framework-2.5-rc2-with-dependencies\spring-framework-2.5-rc2\spring-framework-2.5-rc2源代码

    同时,它增强了视图解析能力,支持多种视图技术,如JSP、FreeMarker和Velocity等。 对于Struts框架的集成,Spring提供了Struts Action与Spring Bean的无缝连接,允许开发者利用Spring的DI和AOP(面向切面编程)特性...

    spring3 多视图集成

    &lt;property name="resourceLoaderPath" value="/WEB-INF/velocity/" /&gt; &lt;/bean&gt; &lt;bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"&gt; ...

    Spring Boot如何集成模板引擎FreeMarker

    在Java中,主要的模板引擎有JSP、Thymeleaf、FreeMarker、Velocity等。 二、Spring Boot集成FreeMarker 要集成FreeMarker,首先我们需要引入依赖,除了核心的web依赖外,只需引入FreeMarker的starter依赖。 ```...

    spring-framework-3.2.8.RELEASE-dist.zip

    此外,该版本还加强了模型视图处理,例如支持模板引擎的改进,如FreeMarker和Velocity,使视图渲染更为便捷。 在AOP(面向切面编程)模块中,Spring 3.2.8.RELEASE引入了更高效的切面实现,提高了代理性能,同时...

    Spring中使用FreeMaker或Vilocity模板发送邮件

    这篇博客将深入探讨如何在Spring中利用FreeMarker和Velocity来发送邮件。 首先,我们需要理解Spring的`JavaMailSender`接口,它是发送邮件的核心组件。通过实现这个接口,我们可以配置SMTP服务器的相关参数,如主机...

    spring boot 完整版整合mybatis,rabbitmq,freemarker,redis等

    Spring Boot 不仅支持 Freemarker,还支持 Thymeleaf、Velocity 等多种模板引擎,同时也支持与 RabbitMQ、Redis 等中间件的集成。 **4.1 Thymeleaf 集成** 集成 Thymeleaf 的步骤与 Freemarker 类似,只需添加相应...

    FreeMarker_Manual_zh_CN

    - **Velocity/Thymeleaf**: FreeMarker与类似的模板引擎相比,各有优劣,选择时需考虑项目需求和团队熟悉度。 以上是对FreeMarker的基本介绍,包括其核心概念、语法特性以及在Web应用中的使用。通过深入学习和实践...

    Javaframework框架笔记

    Struts2整合了许多其他框架,如Freemarker和Velocity模板引擎,OGNL表达式语言,以及拦截器机制。 五、Java EE相关框架 除了上述独立的框架,Java EE(现在称为Jakarta EE)提供了一系列标准的服务器端框架,如JSF...

    spring-framework-3.0.6.RELEASE.zip

    3. **MVC(Model-View-Controller)**:Spring MVC提供了全面的Web应用解决方案,3.0.6版本增强了对RESTful风格的支持,提升了异步处理能力,并引入了模板引擎支持,如FreeMarker和Velocity。 4. **数据访问/集成...

    SpringMVC所用jar包

    11. **Freemarker/Velocity**: `freemarker.jar`, `velocity.jar`是两种常用的模板引擎,可以动态生成HTML或其他文本格式的文件。 12. **SLF4J/Logback**: `slf4j-api.jar`, `logback-classic.jar`, `logback-core....

    velocity参考文档

    - **集成环境**:如Spring框架可以通过`org.springframework.ui.velocity.VelocityEngineFactoryBean`来集成Velocity。 #### 六、Velocity进阶技巧 1. **自定义宏**:创建可重用的模板片段。 2. **模板继承**:...

    spring-framework-3.0.5.RELEASE-dependencies-1

    org.apache.velocity org.apache.xerces org.apache.xml org.apache.xmlbeans org.apache.xmlcommons org.apache.derby org.apache.poi org.apache.struts org.apache.taglibs 5号包: org.codehaus.castor org....

    SpringMvc简易Maven工程

    - 支持多种视图技术:如 JSP、FreeMarker、Velocity 等。 8. **学习资源**: - 博文链接:[https://ruoli.iteye.com/blog/2320390](https://ruoli.iteye.com/blog/2320390) - 官方文档:...

    spring-framework-3.1.2.RELEASE jar包

    在Web层,Spring MVC框架在3.1.2版本中也得到了加强,包括更强大的模型-视图-控制器(MVC)功能,如RESTful支持的改进,以及对模板引擎(如FreeMarker和Velocity)更好的整合。此外,Spring 3.1引入了...

Global site tag (gtag.js) - Google Analytics