`

数据源+freemarker+servlet生成xml文件

    博客分类:
  • JSP
阅读更多
1.在server.xml文件中建立数据源.

<Service name="Cms">
     <Connector debug="0" enableLookups="false" port="8084" protocol="AJP/1.3" redirectPort="8443"/>
    <Connector acceptCount="100" connectionTimeout="20000" debug="0" disableUploadTimeout="true" 

enableLookups="false" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" port="8081" redirectPort="8443"/>
    <Engine defaultHost="localhost_Cms" name="Catalina_Cms">
      <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_cmt_log." suffix=".txt" timestamp="true"/>
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
      <Host autoDeploy="true" debug="0" name="localhost_Cms" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
         <Context debug="0" docBase="D:WorkspaceCMSweb" path="/" reloadable="true" workDir="D:WorkspaceCMSj2src"> 
          <Resource name="jdbc/news_DB" auth="Container" type="javax.sql.DataSource"/>
        <ResourceParams name="jdbc/news_DB">
     <parameter>
       <name>factory</name>
       <!-- DBCP Basic Datasource Factory -->
       <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
     </parameter>
      
     <parameter>
       <name>maxActive</name>
       <value>1000</value>
     </parameter>
     <parameter>
        <name>validationQuery</name>
        <value>select 1+1</value>
     </parameter>
     <parameter>
       <name>maxIdle</name>
       <value>100</value>
     </parameter>
     <parameter>
       <name>maxWait</name>
       <value>10000</value>
     </parameter>
     <parameter>
       <name>removeAbandoned</name>
       <value>true</value>
     </parameter>
     <parameter>
       <name>removeAbandonedTimeout</name>
       <value>60</value>
     </parameter>
     <parameter>
       <name>logAbandoned</name>
       <value>false</value>
     </parameter>
      
     <parameter>
       <name>username</name>
       <value>aaaa</value>
     </parameter>
     <parameter>
       <name>password</name>
       <value>bbbbbb</value>
     </parameter>
     <parameter>
       <name>driverClassName</name>
       <value>net.sourceforge.jtds.jdbc.Driver</value>
     </parameter>
     <parameter>
       <name>url</name>
       <value>jdbc:jtds:sqlserver://111.111.111.111:1433/cms</value>
     </parameter>
      </ResourceParams>
      
   </Context>
      </Host>
</Engine>
  </Service> 


2.在web.xml文件中配置servlet
<servlet>
        <description>generate xml file</description>
        <servlet-name>NewsXmlServlet</servlet-name>
        <servlet-class>xml.NewsXmlServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>NewsXmlServlet</servlet-name>
        <url-pattern>/xmlServlet</url-pattern>
    </servlet-mapping>
    <servlet>

3.newsXmlServlet.java
package xml;

import java.io.*;
import java.nio.charset.Charset;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.util.Locale;

public class NewsXmlServlet extends HttpServlet...{

    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException ...{
        // TODO Auto-generated method stub
        try ...{
            Connection conn=null;
            Context ctx = new InitialContext();
            DataSource ds=(DataSource)ctx.lookup("java:comp/env/jdbc/news_DB");
            conn=ds.getConnection();
            Statement stmt=conn.createStatement();
            ResultSet rs=stmt.executeQuery("select url,updatetime,tpf_edu_contentTitle,tpf_edu_contentneirong,tpf_edu_contentlaiyuan,tpf_edu_contentkeyword from tp5__edu_content where url<>'' and url is not null and dateDiff(d,updatetime,getDate())=1 order by updatetime desc");
            Configuration cfg=new Configuration();
            cfg.setDirectoryForTemplateLoading(new File("E:/wwwroot/CMS/web/WEB-INF/classes/xml"));
            Template tem=cfg.getTemplate("news.ftl");
            
            List list=new ArrayList();
            OutputStreamWriter out=new OutputStreamWriter(System.out);
            while(rs.next())...{
                Map item=new HashMap();
                item.put("title",rs.getString(3));
                item.put("link","http://test.com.cn"+rs.getString(1));
                item.put("pubdate",rs.getTimestamp(2));
                item.put("content",DelHtml(rs.getString(4)));
                item.put("source",rs.getString(5));
                item.put("keywords",DelHtml(rs.getString(6)));
                list.add(item);
            }
            Map data=new HashMap();
            data.put("items",list);
            StringWriter writer=new StringWriter();
            tem.process(data,writer);
            String content=writer.toString();
            writer.close();
            createXml(content);
            out.close();
            //resp.setContentType("text/xml; charset=utf-8");
            //resp.getWriter().write(content);
            
        } catch (NamingException e) ...{
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) ...{
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (TemplateException e) ...{
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
    public String DelHtml(String content)...{
        String contents=content.replaceAll("<\/?\s*(\S+)(\s*[^>]*)?\s*\/?>","");
         contents=contents.replaceAll("&ldquo;", "”");
         contents=contents.replaceAll("&rdquo;","”");
         contents=contents.replaceAll("&ldquo;", "‘");
         contents=contents.replaceAll("&rdquo;","’");
         contents=contents.replaceAll("&middot;","·");
         contents=contents.replaceAll("&mdash;","—");
         contents=contents.replaceAll("&hellip;","…");
         contents=contents.replaceAll("&nbsp;","");
         contents=contents.replaceAll(","," ");
        return contents;        
    }
    public void createXml(String fileContent)...{
        try ...{
            String filePath="E:/wwwroot/cmsHtml/education/news.xml";
            File fileXml=new File(filePath);
            if(!fileXml.exists())...{            
                fileXml.createNewFile();
            }
            
            /**//*FileWriter fileWriter=new FileWriter(fileXml);
            fileWriter.
            fileWriter.write(fileContent);
            fileWriter.close();*/
                OutputStreamWriter writer=new OutputStreamWriter(new FileOutputStream(fileXml), Charset.forName("utf-8"));     
                writer.write(fileContent);
                writer.close();
            } catch (IOException e) ...{
                // TODO Auto-generated catch block
                e.printStackTrace();
        }
    }
    
    public void destroy() ...{
        // TODO Auto-generated method stub
        super.destroy();
    }

    public void init() throws ServletException ...{
        // TODO Auto-generated method stub
        super.init();
    }
    
}


4.news.ftl

<?xml version="1.0" encoding="utf-8" ?>
<document>
    <webSite>edu.aweb.com.cn</webSite>
    <webMaster>webmaster@aweb.com.cn</webMaster>
    <updatePeri>1440</updatePeri>
    <#list items as it>
    <item>
        <title><![CDATA[$...{it.title}]]></title>
        <link>$...{it.link}</link>
        <pubDate>$...{it.pubdate}</pubDate>
        <text><![CDATA[$...{it.content}]]></text>
        <image/>
        <source>$...{it.source}</source>
        <keywords><![CDATA[$...{it.keywords}]]></keywords>
    </item>
    </#list>
</document>
分享到:
评论

相关推荐

    FreeMarker模板引擎-其他

    虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据。 FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件。FreeMarker与容器无关,...

    超完整FreeMarker中文教程,代码

    什么是FreeMarker? ................................................................................................. 7 我们应该阅读什么内容? .............................................................

    JAVA上百实例源码以及开源项目源代码

    日历表格面板 [ConfigLine.java] 控制条类 [RoundBox.java] 限定选择控件 [MonthMaker.java] 月份表算法类 [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    FreeMarker 手册

    FreeMarker 手册 .......................................................................................................... 1 用于 FreeMarker 2.3.18 .......................................................

    DN_CMS:DN_CMS网站后台管理系统

    DN_CMS DN_CMS网站后台管理系统 部署说明: 1.已测试部署环境: ...若需要请到springmvc-servlet.xml中将freemarker的全局变量webRoot更改"http://127.0.0.1:8080/",避免出现图片等静态资源路径失效。 4

    java开源包1

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包11

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包2

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包3

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包6

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包5

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包10

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包4

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包8

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包7

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包9

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    java开源包101

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

    Java资源包01

    Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 ...

Global site tag (gtag.js) - Google Analytics