<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    俊星的BLOG

    RSS初探

    1、此處有一篇比較好RSS原理介紹文章:http://www.sunnychen.org/article.asp?id=82
    2、編寫相關的實現(xiàn)代碼:
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.Timestamp;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.Locale;
    import java.util.TimeZone;

    /**
     * 簡單HTTP服務器
     * 
     * 
    @author kinkding
     
    */
    public class MyHTTPServer implements Runnable {
        ServerSocket server;
        
    int port = 80;

        
    public MyHTTPServer() throws IOException {
            server 
    = new ServerSocket(port);
            
    new Thread(this).start();
            System.out.println(
    "HTTP服務器已經(jīng)啟動");
        }

        
    public void run() {
            
    while (true) {
                
    try {
                    Socket client 
    = server.accept();
                    System.out.println(
    "接收到客戶端:" + client);

                    PrintWriter out 
    = new PrintWriter(client.getOutputStream(), true);
                    out.println(
    "HTTP/1.0 200 OK");
                    out.println(
    "Content-Type:text/html;charset=GBK");
                    out.println();
    // HTTP協(xié)議:空行表示信息結束
                    this.sendRss(out);
                    out.close();
                    client.close();
                } 
    catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

        
    private void sendRss(PrintWriter out) throws IOException {
            
    // 按照RSS 2.0 的規(guī)則進行生成
            out.println("<?xml version=\"1.0\" encoding=\"GBK\"?>");
            out.println(
    "<rss version=\"2.0\">");
            out.println(
    "<channel>");
            out.println(
    "<title>科技要聞-CT新聞</title>");
            out.println(
    "<link>http://localhost</link>");
            out.println(
    "<language>zh-cn</language>");
            out.println(
    "<description>科技要聞-CT新聞</description>");
            Date date 
    = new Date();
            SimpleDateFormat formatter 
    = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z", Locale.US);
            formatter.setTimeZone(TimeZone.getTimeZone(
    "GMT"));
            out.println(
    "<pubDate>" + formatter.format(date) + "</pubDate>");
            
    // 封裝條目
            List<Message> msgs = this.queryMsgs();
            
    for (Message m : msgs) {
                out.println(
    "<item>");
                out.println(
    "<title>" + m.name + "</title>");
                out.println(
    "<pubDate>" + formatter.format(m.time) + "</pubDate>");
                out.println(
    "<description>" + m.desc + "</description>");
                out.println(
    "<link>http://localhost/" + m.id + "</link>");
                out.println(
    "<guid>http://localhost/" + m.id + "</guid>");
                out.println(
    "</item>");
            }
            out.println(
    "</channel>");
            out.println(
    "</rss>");
        }

        
    private List<Message> queryMsgs() {
            List
    <Message> msgs = new ArrayList<Message>();
            
    try {
                Class.forName(
    "org.postgresql.Driver");
                String url 
    = "jdbc:postgresql://localhost:5432/postgres";
                Connection connection 
    = DriverManager.getConnection(url, "postgres""admin");
                Statement stmt 
    = connection.createStatement();
                
    // 查詢前5條記錄進行顯示
                ResultSet rs = stmt.executeQuery("SELECT * FROM tbl_messages order by msg_time desc limit 5");

                
    while (rs.next()) {
                    Message msg 
    = new Message();
                    msg.id 
    = rs.getInt("msg_id");
                    msg.name 
    = rs.getString("msg_name");
                    msg.desc 
    = rs.getString("msg_desc");
                    msg.time 
    = rs.getTimestamp("msg_time");
                    msgs.add(msg);
                }
                rs.close();
                stmt.close();
                connection.close();
            } 
    catch (ClassNotFoundException e) {
                e.printStackTrace();
            } 
    catch (SQLException e) {
                e.printStackTrace();
            }
            
    return msgs;
        }

        
    public static void main(String[] args) {
            
    try {
                
    new MyHTTPServer();
            } 
    catch (IOException e) {
                e.printStackTrace();
            }
        }

        
    class Message {
            
    int id;
            String name;
            String desc;
            Timestamp time;
        }

    }

    3、配置postgresql,本機安裝的是9.0版本,特別需要注意的是,安裝目錄中不能有空格。(直接exe方式安裝的話,會自動生成一個服務);
    同時還需要額外到官網(wǎng)下載相關的jdbc驅動,因我本機JAVA是1.5,所以選擇的是JDBC3的驅動包:postgresql-9.0-801.jdbc3.zip
    4、編寫相關的腳本:
    create table tbl_messages(
    msg_id 
    integer PRIMARY KEY,
    msg_name 
    text,
    msg_desc 
    text,
    msg_time  
    timestamp     
    );

    INSERT INTO tbl_messages (msg_id,msg_name, msg_desc, msg_time) VALUES (1'騰訊正式起訴360不正當競爭','北京時間10月14日晚間消息,新浪科技今天在騰訊官網(wǎng)獲悉,騰訊已于近日正式起訴360,要求奇虎及其關聯(lián)公司停止侵權、公開道歉并作出賠償。'current_timestamp);
    INSERT INTO tbl_messages (msg_id,msg_name, msg_desc, msg_time) VALUES (2'國奧“搶人“引中超多隊不滿','  本屆國奧隊集訓計劃的安排,意味集訓的26人將錯過中超聯(lián)賽的最后四輪比賽。受影響最大的大連實德俱樂部只同意楊博宇一人按時去報到,呂鵬、王選宏和趙宏略三人將在聯(lián)賽結束后才能去參加集訓。'current_timestamp);
    INSERT INTO tbl_messages (msg_id,msg_name, msg_desc, msg_time) VALUES (3'外交部就日朝官員訪華及南海問題等答問','  2010年10月14日,外交部發(fā)言人馬朝旭主持例行記者會。'current_timestamp);
    INSERT INTO tbl_messages (msg_id,msg_name, msg_desc, msg_time) VALUES (4'智利總統(tǒng)稱將追究礦難責任','據(jù)外電報道,智利圣何塞銅礦救援行動取得了令人感動的成功,也吸引了全世界關注的目光,不過,在救援行動完成后,圣何塞銅礦的“命運”又將何去何從?智利總統(tǒng)皮涅拉14日表示,該礦將永久性關閉,同時,將責成當局對相關責任人進行懲罰。'current_timestamp);
    INSERT INTO tbl_messages (msg_id,msg_name, msg_desc, msg_time) VALUES (5'魯能只是所謂領頭羊','  本周六,上海申花就將北上長春,客場挑戰(zhàn)長春亞泰。對于這個幾個賽季都沒有戰(zhàn)勝的對手來說,本場比賽異常關鍵。賽前,老布對這個對手異常重視,在他看來,長春這個對手絕非一般,而對于本場比賽,老布也明確表示,自己要率領球隊,贏得本場比賽的勝利,打破從未戰(zhàn)勝過長春的尷'current_timestamp);
    INSERT INTO tbl_messages (msg_id,msg_name, msg_desc, msg_time) VALUES (6'英第二大警察局通過Twitter公布每起案件','北京時間10月14日晚間消息,據(jù)國外媒體報道,英國第二大警察局大曼徹斯特警察局周四表示,計劃將所處理的每一起案件在24小時內發(fā)布到Twitter網(wǎng)站上。'current_timestamp);

    5、運行:
    在瀏覽器中輸入http://localhost/進行訪問即可。

    posted on 2010-10-15 00:23 俊星 閱讀(135) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 亚洲综合无码一区二区三区| 自拍偷自拍亚洲精品第1页| 亚洲国产综合专区在线电影| 国产99久久久久久免费看| 亚洲精品国自产拍在线观看| 污污视频免费观看网站| 亚洲第一福利网站在线观看| japanese色国产在线看免费| 国产精品亚洲αv天堂无码| baoyu777永久免费视频| 亚洲AV人无码综合在线观看| 午夜免费啪视频在线观看| 亚洲精品国产第1页| 成人女人A级毛片免费软件| 亚洲性无码一区二区三区| 在线观看91精品国产不卡免费| 美国免费高清一级毛片| 亚洲成人国产精品| 免费日本一区二区| 亚洲狠狠狠一区二区三区| 免费一本色道久久一区| 美女视频黄a视频全免费网站色| 中文字幕亚洲电影| 最近免费mv在线电影| 亚洲伊人久久精品| 全黄性性激高免费视频| 国产做国产爱免费视频| 亚洲成人一级电影| 国产一级一片免费播放| 91在线视频免费观看| 在线观看免费中文视频| 亚洲小说区图片区| 久久精品国产亚洲AV麻豆~| 亚洲av中文无码乱人伦在线咪咕| 中文字幕亚洲精品无码| 久久影视综合亚洲| 91免费在线播放| sss在线观看免费高清| 亚洲成AV人片久久| 亚洲国产精品一区二区第四页| 久久久免费精品re6|