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>