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

一.步骤:

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;""");
  &n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值