数据源+freemarker+servlet生成xml文件
来源:互联网 发布:python 列表推导式循环 编辑:程序博客网 时间:2024/06/05 02:20
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>
<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>
<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();
}
}
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>
<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+servlet生成xml文件
- 数据源+freemarker+servlet生成xml文件
- 数据源+freemarker+servlet生成xml文件
- Freemarker+XML+Servlet 实现生成word
- Servlet将数据库文件生成XML文件
- 使用freemarker生成文件
- freemarker 生成静态文件
- freemarker 模版生成文件
- freemarker 模板生成 文件
- 使用FreeMarker生成xml字符串
- 使用freemarker生成XML字符串
- 使用freemarker生成xml模板
- 用freemarker+xml生成word
- FreeMarker入门 生成xml模板
- C# 数据源生成多级xml
- FreeMarker Servlet 的配置 (web.xml)
- FreeMarker Servlet 的配置 (web.xml)
- jsp生成xml文件示例-JSP教程,Jsp/Servlet
- 解析#pragma指令(转)
- 使用 Request.QueryString 接受参数时,跟编码有关的一些问题
- ASP.NET开源多用户博客系统
- XMMS乱码和不能播放MP3、wma的解决方法
- Oracle 左连接和右连接
- 数据源+freemarker+servlet生成xml文件
- wwwwwwwwwww
- 《C++高级编程》之--揭开C++I/O的神秘面纱
- 获取长度中英文有?td>
- Catastrophic failure with COM+ client Options
- 漂亮图骗新闻
- 防止页面刷新重复提交的方法
- ASP.NET配置文件Web.config 详细解释
- Tomcat 6 通过 JDBC 连接池连接 SQL Server 2000 和 MySQL 5 的设置