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

来源:互联网 发布:易语言时时彩计划源码 编辑:程序博客网 时间:2024/05/29 15:19

一.步骤:

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("“", "”");         contents=contents.replaceAll("”","”");         contents=contents.replaceAll("“", "‘");         contents=contents.replaceAll("”","’");         contents=contents.replaceAll("·","·");         contents=contents.replaceAll("—","—");         contents=contents.replaceAll("…","…");         contents=contents.replaceAll(" ","");         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>



原创粉丝点击