• 2006-05-25

    写一个对搜索引擎友好的文章SEO分页类

    Views: 9392 | No Comments

    使用jsp/php/asp等动态程序生成的页面如何对搜索引擎友好呢?你可能想使用url_rewrite。不过,最好还是让同一个网址在任意时间对应的页面内容都是一样的或者相似的。因为搜索引擎不喜欢页面内容总是在变化的网址。

    一般博客文章需要将新发表的文章显示在前面,所以会使用"order by id desc"类似的SQL语句来查询一页包含的多篇文章。例如下面在JAVA+MYSQL中:

    public Article[] getArticleArray(int from, int size){
        Article[] article = new Article[0];
        String query = "SELECT * FROM blog ORDER BY DESC id LIMIT " + from + "," + size;
        try{
            ResultSet rs = st.executeQuery(query);
            rs.last();
            size = rs.getRow();
            article = new Article[size];
            rs.beforeFirst();
            for(int i=0; rs.next(); i++){
                article[i] = new Article(
                    rs.getInt("id"), rs.getString("time"),
                    rs.getString("name"), rs.getString("blog")
                );
            }
            rs.close();
        }catch(Exception e){
            System.out.println(e);
        }
        return article;
    }
    

    这是我们的SEO分页类MySEOPager中的一个方法。如果我们想显示第一页,我们使用getArticleArray(0,10)来查询最新发表的10篇文章。

    这有什么问题呢?问题是当你添加一篇文章之后,原来的所有分页都改变了。为了让getArticleArray(0,10)每一次查询显示相同的文章,应该让getArticleArray(0,10)显示新先发表的10篇文章。我们可以这样改造我们的分页类。删除与将影响页面的内容,你删除越新的文章,生成的页面改变越大。

    public Article[] getArticleArray(int from, int size){
        Article[] article = new Article[0];
        String query = "SELECT * FROM blog ORDER BY id LIMIT " + from + "," + size;
        try{
            ResultSet rs = st.executeQuery(query);
            rs.last();
            size = rs.getRow();
            article = new Article[size];
            rs.beforeFirst();
            for(int i=0; rs.next(); i++){
                article[i] = new Article(
                    rs.getInt("id"), rs.getString("time"),
                    rs.getString("name"), rs.getString("blog")
                );
            }
            rs.close();
        }catch(Exception e){
            System.out.println(e);
        }
        return article;
    }
    

    我们还需要得到数据库里到底有多少文章,所以再增加一个方法。

    public int getArticleCount(){
        int rowcount = 0;
        String query = "SELECT COUNT(*) AS rowcount FROM ideabook";
        try{
            ResultSet rs = st.executeQuery(query);
            if(rs.next()){
                rowcount = rs.getInt("rowcount");
            }
        }catch(Exception e){
            System.out.println(e);
        }
        return rowcount;
    }
    

    现在我们在JSP页面中显示最新发表的10篇文章。

    int start = -1;
    MySEOPager pager = new MySEOPager();
    int artcount = pager.getArticleCount();
    try{
        Integer.parseInt(request.getParameter("start"));
    }catch(Exception e){
        start = artcount-10;
    }
    if(start > artcount - 10) start = artcount - 10;
    if(start < 0) start = 0;
    
    Article art = pager.getArticleArray(start, 10);
    // do something with art here.
    int previous = start + 10; // 传到上一页的start值
    int next = start - 10; // 传到下一页的start值
    

    这样,生成的页面的内容的是否改变与你是否删除了先发表的文章有关系。只要你不删除文章,showblog.jsp?start=0带有这个参数的网址对应的页面都不改变。只要你删除的是第n篇文章,那么start<(n-pagesize)对应的页面都不改变。你添加文章只影响第一页。

    在我编写的ideabook留言本使用了这种方法。

    这种方法被证明是愚蠢的,唯一的好处是同一个网址对应的内容几乎不变。

    Posted by ideawu at 2006-05-25 12:41:31
  • 2006-05-24

    关于本网站的友情链接

    Views: 11345 | 7 Comments

    本网站暂不接受友情链接申请.

    Posted by ideawu at 2006-05-24 14:22:23
  • 2006-05-24

    狼和小羊英文原版

    Views: 11970 | 1 Comment

    《伊索寓言》中的《狼和小羊》同我们看到的很多中文版本不一样,甚至不同的“原版”也不一样。我这里使用的是“英语大书虫世界文学名著文库”中的。从语言风格来看,我认为这是比较纯的版本。

    The Wolf and the Lamb

    Wolf, meeting with a Lamb astray from the fold, resolved not to lay violent hands on him, but to find some plea to eat him.

    He thus addressed him,"Sirrah, last year you grossly insulted me."

    "Indeed," bleated the Lamb in a mournful tone of voice,"I was not then born."

    Then said the Wolf,"You feed in my pasture."

    "No, good sir,"replied the Lamb,"I have not yet tasted grass."

    Again said the Wolf,"You drink of my well."

    "No,"exclaimed the Lamb,"I never yet drank water, for as yet my mother's milk is both food and drink to me."

    Upon which the Wolf seized him and ate him up, saying, "Well! I won't remain supperless, even though you refute every one of my imputations."

    The tyrant will always find a pretext for his tyranny.

    Posted by ideawu at 09:56:35
  • 2006-05-22

    使用Firefox+Web Developer插件制作网页

    Views: 14826 | 1 Comment

    Firefox浏览器是一个良好支持W3C标准的开放源代码的浏览器,拥有Linux/Windows/Mac版本。因为Firefox浏览器良好支持W3C标准,所以使用Firefox来调试网页是非常好的。

    Firefox默认安装包只有8M(Linux版)和5M(Win版),安装后功能较少。为了能制作网页,我们需要安装Web Developer插件。下面我就介绍一下我使用使用Firefox + Web Developer插件制作网页的简单过程。

    1. 设计好你的页面的粗略内容,结构化它们

    你可能是在心里设计,也可能是在纸上设计,也可能在电脑里用PhotoShop设计。我强调,先有内容,再有表现。但不是先有所有的内容然后再来设计表现,我认为内容应该占主导地位。将内容分类,也就是结构化。

    2. 把内容的文本输入HTML文件中,设计和收集将要使用的图像

    使用带有语法着色功能的文本编辑器输入文本,利用段落来结构化你的文本。

    3. 用HTML/XHTML标签括住内容的文本

    因为你已经将文本结构化好了,那么轻易就可以用标签将它们括住----主要使用div标签,列表内容使用列表标签,文本段落使用p标签。为重要的标签(到底哪一些标签是重要的,你在结构化的时候已经想好)分配id属性和class属性。创建一个空白的CSS文件,并在网页中引用它。

    4. 用Firefox浏览器打开HTML文件浏览器

    现在,你已经写好了一个纯HTML的网页。即使这样,它在浏览器下也应该具有良好的显示。否则说明你的结构化过程不够成功,查看代码,找出是否有需要改进的地方。

    5. 应用Web Developer插件来设计完整的CSS样式表,使用网页的显示更加完好

    用鼠标右键单击网页,选择菜单Web Developer-->CSS-->Edit Css,打开可编辑CSS的侧栏。在里面输入CSS代码,你的代码将立即作用于网页。所以,这也是另一种意义上的可视化网页制作方式。在调试定位的时候,你可以为对象加上不同颜色的边框,这样可以使对象间的位置关系更加显然。

    为了防止代码丢失,经常把你的CSS代码保存在你所创建的CSS文件中。

    6. 收尾

    当你对页面的显示已经相对满意的时候,在IE,Opera和其它你所能弄到的浏览器里查看你的网页的显示效果。如果有差异,以Firefox为准,并利用hack消除在IE中的差异。

    7. 结语

    这里只不过给出了步骤性的教程,一个网页是否显示良好,更主要的是你的艺术感觉和你的经验。

    Posted by ideawu at 2006-05-22 15:53:41 Tags:
  • 2006-05-21

    Protected: The Winter’s Gone

    Views: 7387 | Comments Off

    This content is password protected. To view it please enter your password below:

    Posted by ideawu at 2006-05-21 21:01:28
  • 2006-05-21

    Protected: 获取与珍惜

    Views: 7362 | Comments Off

    This content is password protected. To view it please enter your password below:

    Posted by ideawu at 18:50:08
|<<<120121122123124125126127128>>>| 124/138 Pages, 825 Results.