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

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

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

    后臺(tái)是spring + hibernate + freemarker

    這個(gè)模塊也是整個(gè)系統(tǒng)中的一小部門。從中對(duì)于XSL的使用,XSL很好很強(qiáng)。



    并且對(duì)EXT中的vtype驗(yàn)證方式有了更加全面的總結(jié)。


    貼代碼:RssAction.java

    public class RssAction extends BaseActionSuport {
        private static RssService rssService;
        private Collection<Rss> rsses;
        private static final Logger logger = Logger.getLogger(RssAction.class);
        private String rssname; // RSS名稱
        private String rssurl; // RSS地址
        private String defaultUrl; // defaultUrl地址
        private String url;// URl地址
        private String rssPath;
        private Long deleteId;

        public Long getDeleteId() {
        return deleteId;
        }

        public void setDeleteId(Long deleteId) {
        this.deleteId = deleteId;
        }

        public String getRssname() {
        return rssname;
        }

        public void setRssname(String rssname) {
        this.rssname = rssname;
        }

        public String getRssurl() {
        return rssurl;
        }

        public void setRssurl(String rssurl) {
        this.rssurl = rssurl;
        }

        public String deal() {
        try {
            Rss rss = new Rss();
            logger.debug("rssname:" + rssname);
            logger.debug("rssurl:" + rssurl);
            rss.setName(rssname);
            rss.setUrl(rssurl);
            rssService.create(rss);
        } catch (Exception e) {
            logger.error(e.toString());
            return this.ERROR;
        }
        return this.SUCCESS;
        }

        public String rssDelete() {
        try {
            logger.debug("deleteId:" + deleteId);
            rssService.deleteById(deleteId);
        } catch (Exception e) {
            logger.error(e.toString());
            return this.ERROR;
        }
        return this.SUCCESS;

        }

        public String listAll() {
        try {
            rsses = rssService.listAllRss();
            return this.SUCCESS;
        } catch (Exception e) {
            logger.error(e.toString());
            return this.ERROR;
        }
        }

        public String getRss() {
        HttpURLConnection conn = null;
        InputStream ios = null;
        ByteArrayOutputStream out = null;
        ActionContext ctx = ActionContext.getContext();
        HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);

        try {

            URL addr = null;
            if (url == null || url.trim().length() == 0) {
            addr = new URL(defaultUrl);
            } else {
            addr = new URL(url);
            }
            conn = (HttpURLConnection) addr.openConnection();
            conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5");
            conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
            conn.setRequestProperty("Accept-Language", "zh-cn");
            conn.setRequestProperty("Accept-Charset", "gb2312,gbk,utf-8;q=0.7,*;q=0.7");
            String contentType = conn.getContentType();
            String contentEncoding = conn.getContentEncoding();
            int statusCode = conn.getResponseCode();
            int length = conn.getContentLength();

            if (logger.isDebugEnabled()) {

            // logger.debug("contentType:" + contentType);
            // logger.debug("contentEncoding:" + contentEncoding);
            // logger.debug("statusCode:" + statusCode);
            // logger.debug("length:" + length);
            }
            if (contentEncoding == null) {
            if (contentType != null) {
                contentEncoding = getCharSet(contentType);
            }
            if (contentEncoding == null) {
                contentEncoding = "UTF-8";
            }
            else if(contentEncoding.equals("ansi"))
                contentEncoding = "GBK";
            }
            ios = conn.getInputStream();
            out = new ByteArrayOutputStream();
            
            byte buffer[] = new byte[1024];

            int len = 0;
            while ((len = ios.read(buffer)) != -1) {
            out.write(buffer, 0, len);
            }
            out.flush();
            logger.debug("contentEncoding:" + contentEncoding);
            String rssData = new String(out.toByteArray(), contentEncoding);
            //logger.debug("rssData:"+rssData);
            String rssDa = rssxsl(rssData);
            request.setAttribute("rssData", rssDa);
            request.setAttribute("Encoding", contentEncoding);
            return this.SUCCESS;
        } catch (Exception e) {
            logger.error(e.toString());
            e.printStackTrace();
            return this.ERROR;
        } finally {

            if (out != null) {
            try {
                out.close();
            } catch (IOException e) {
                logger.error(e.toString());
            }
            }
            if (ios != null) {
            try {
                ios.close();
            } catch (IOException e) {
                logger.error(e.toString());
            }
            }

            if (conn != null)
            conn.disconnect();

        }
        }

        public RssService getRssService() {
        return rssService;
        }

        public void setRssService(RssService rssService) {
        this.rssService = rssService;
        }

        public Collection<Rss> getRsses() {
        return rsses;
        }

        public void setRsses(Collection<Rss> rsses) {
        this.rsses = rsses;
        }

        public String getName() {
        return rssname;
        }

        public void setName(String name) {
        this.rssname = rssname;
        }

        public String getRssPath() {
        return rssPath;
        }

        public void setRssPath(String rssPath) {
        this.rssPath = rssPath;
        }

        public String getRssUrl() {
        return rssurl;
        }

        public void setRssUrl(String rssUrl) {
        this.rssurl = rssurl;
        }

        public String getUrl() {
        return url;
        }

        public void setUrl(String url) {
        this.url = url;
        }

        public String getDefaultUrl() {
        return defaultUrl;
        }

        public void setDefaultUrl(String defaultUrl) {
        this.defaultUrl = defaultUrl;
        }

        private String getCharSet(String contentTypeEnd) {
        if (contentTypeEnd != null) {

            int pointer = contentTypeEnd.indexOf('=');
            if (pointer > 0) {
            String result = contentTypeEnd.substring(pointer + 1);
            result = result.trim();
            if (result != null) {
                if (result.length() > 0) {
                if (result.charAt(0) == '"') {
                    if (result.charAt(result.length() - 1) == '"') {
                    result = result.substring(1, result.length() - 1);
                    }
                } else if (result.charAt(0) == '"'') {
                    if (result.charAt(result.length() - 1) == '"'') {
                    result = result.substring(1, result.length() - 1);
                    }
                }
                }
            }
            return result.trim().toLowerCase();
            }
        }
        return null;
        }

        private String rssxsl(String rssData) {
        String formerStr = "";
        HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
        String path = request.getRealPath("");
        path = path + rssPath;
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        XMLWriter writer = null;
        try {
            TransformerFactory tFactory = TransformerFactory.newInstance();
            Transformer transformer = tFactory.newTransformer(new javax.xml.transform.stream.StreamSource(path));
            transformer.transform(new javax.xml.transform.stream.StreamSource(new StringReader(rssData)), new javax.xml.transform.stream.StreamResult(out));
            formerStr = new String(out.toByteArray(), "UTF-8");
            formerStr = removeXmlHead(formerStr);

        } catch (Exception e) {
            logger.error(e.toString());
        } finally {
            if (writer != null) {
            try {
                writer.close();
            } catch (IOException e) {
                logger.error(e.toString());
            }
            }
            try {
            out.close();
            } catch (IOException e) {
            logger.error(e.toString());
            }

        }
        return formerStr;

        }

        private String removeXmlHead(String content) {
        if (content == null) {
            return null;
        }
        content = content.trim();
        if (content.indexOf("<?xml") != 0) {
            return content;
        }
        int index = content.indexOf("?>");
        if (index < 0) {
            return content;
        }
        content = content.substring(index + 2);
        return content;
        }
    }


    RssServic.java代碼

    import java.util.Collection;
    import gov.ict.mcg.vbm.pojo.Rss;

    public interface RssService {
         public void create(Rss rss) throws Exception;
         public void deleteById(Long id) throws Exception;

         public Collection<Rss> listAllRss() throws Exception;
    }

    RssServiceImp.java 代碼:

    import java.util.Collection;

    import org.apache.log4j.Logger;

    import gov.ict.mcg.vbm.dao.RssDao;
    import gov.ict.mcg.vbm.pojo.Rss;
    import gov.ict.mcg.vbm.services.RssService;

    public class RssServiceImpl extends BaseService implements RssService {

        private static final Logger logger = Logger.getLogger(RssServiceImpl.class);
        private RssDao rssDao;

        public RssDao getRssDao() {
        return rssDao;
        }

        public void setRssDao(RssDao rssDao) {
        this.rssDao = rssDao;
        }

        public void create(Rss rss) throws Exception {
        try {
            rssDao.create(rss);
        } catch (Exception e) {
            throw new Exception();
        }
        }

        public Collection<Rss> listAllRss() throws Exception {
        return rssDao.listAll();
        }

        public void deleteById(Long id) throws Exception {
        try {
            rssDao.deleteByIdCommit(id);
        } catch (Exception e) {
            throw new Exception();
        }
        }

    }

    下面是控制顯示的simple.xsl

    <xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema"
    version="1.0" exclude-result-prefixes="xsl ddwrt msxsl rssaggwrt"
    xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime"
    xmlns:rssaggwrt="http://schemas.microsoft.com/WebParts/v3/rssagg/runtime"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt"
    xmlns:rssFeed="urn:schemas-microsoft-com:sharepoint:RSSAggregatorWebPart"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:rss1="http://purl.org/rss/1.0/" xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
    xmlns:atom2="http://purl.org/atom/ns#" xmlns:ddwrt2="urn:frontpage:internal">

    <xsl:template match="/">
    <xsl:for-each select="/rss/channel/item">
    <div class="item">
     <div><h4><a href="{./link}" target="_blank"><xsl:value-of select="./title"/></a></h4></div>
     <div>
         <font style="font-weight: bold" face="Courier New" size="2" bold="true">標(biāo)簽: </font><font face="Courier New" size="2">
         <xsl:value-of select="./itunes:keywords"/>     ||       
         <xsl:value-of select="./pubDate"/></font>
    </div>

     <div class="content" id="content">
     <xsl:value-of select="./description" disable-output-escaping="yes"/>
     <xsl:if test="system-property('xsl:vendor')='Transformiix'">
     <script type="text/javascript">
     var element = document.getElementById("content");
     element.innerHTML = element.textContent;
     </script>
     </xsl:if>
     </div>
    </div>
    </xsl:for-each>
    </xsl:template>

    </xsl:stylesheet>

    Feedback

    # re: 基于EXT+XSL的的RSS訂閱系統(tǒng)[未登錄]  回復(fù)  更多評(píng)論   

    2009-01-14 09:49 by 1
    ????什么意思

    # re: 基于EXT+XSL的的RSS訂閱系統(tǒng)[未登錄]  回復(fù)  更多評(píng)論   

    2009-01-14 10:58 by haha
    源代碼 在哪呢?

    # re: 基于EXT+XSL的的RSS訂閱系統(tǒng)  回復(fù)  更多評(píng)論   

    2009-01-14 12:12 by Robert Su
    @haha
    源代碼我過(guò)幾天有時(shí)間整理下發(fā)上來(lái)

    # re: 基于EXT+XSL的的RSS訂閱系統(tǒng)[未登錄]  回復(fù)  更多評(píng)論   

    2009-01-19 17:03 by moon
    請(qǐng)盡快發(fā)哦,急需

    # re: 基于EXT+XSL的的RSS訂閱系統(tǒng)  回復(fù)  更多評(píng)論   

    2009-01-19 23:52 by 墻頭草
    怎么沒有源碼................




    =================================================================
    Struts2中paramsPrepareParamsStack攔截器的PO id注入問(wèn)題
    Struts2實(shí)現(xiàn)的6位數(shù)字的驗(yàn)證碼程序
    Struts2中實(shí)現(xiàn)可編輯的表格
    Struts2開發(fā)環(huán)境搭建

    更多Struts

    # re: 基于EXT+XSL的的RSS訂閱系統(tǒng)  回復(fù)  更多評(píng)論   

    2009-02-10 12:14 by babymouse
    @moon
    已經(jīng)發(fā)了

    # re: 基于EXT+XSL的的RSS訂閱系統(tǒng)[未登錄]  回復(fù)  更多評(píng)論   

    2009-02-18 12:47 by sking
    源碼在哪兒呢?樓主能不能發(fā)個(gè)壓縮包?非常感謝!

    # re: 基于EXT+XSL的的RSS訂閱系統(tǒng)  回復(fù)  更多評(píng)論   

    2009-02-19 10:33 by babymouse
    @sking

    不是已經(jīng)把代碼都貼出來(lái)了么~

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


    網(wǎng)站導(dǎo)航:
     

    posts - 103, comments - 104, trackbacks - 0, articles - 5

    Copyright © Robert Su

    主站蜘蛛池模板: 亚洲日韩中文字幕在线播放| jizzjizz亚洲| 久久精品一本到99热免费| 乱淫片免费影院观看| 亚洲欧洲免费无码| 亚洲午夜久久久精品电影院| 久久亚洲一区二区| 亚洲系列中文字幕| 在线视频精品免费| 3d成人免费动漫在线观看| 18禁无遮挡无码国产免费网站| 日本免费大黄在线观看| 18禁成人网站免费观看| 真人做A免费观看| 国产成人免费爽爽爽视频| 中文字幕无码视频手机免费看| 99久久99久久精品免费看蜜桃| 在线观看免费宅男视频| 日产国产精品亚洲系列| 久久亚洲国产精品一区二区| 久久精品夜色噜噜亚洲A∨| 国产亚洲综合成人91精品| 无码区日韩特区永久免费系列| 成人毛片免费在线观看| 国产V亚洲V天堂A无码| 亚洲成A人片在线播放器| 巨胸喷奶水视频www免费视频| 久草视频免费在线| 亚洲成年轻人电影网站www| 亚洲最大无码中文字幕| 可以免费观看的毛片| 女人18毛片特级一级免费视频| 久久精品国产亚洲网站| 亚洲中文无码亚洲人成影院| 国产又黄又爽胸又大免费视频| 男女免费观看在线爽爽爽视频| 亚洲国产成人久久精品99 | 一个人看的免费视频www在线高清动漫 | aaa毛片免费观看| 最近的中文字幕大全免费版| 久久久久久a亚洲欧洲aⅴ|