最近在导师的实验室里做事情,因为是刚刚接受JSP开发这方面的东西。
我们做的是一个关于资源方面的门户,这些资源主要指的是一些URL链接。
现在要做的就是在后台形成一个死链检查。
要实现这样的功能:后台服务器每一周对网络资源也就是URL链接进行循环检测,如果为死链则标识出来,并在用户访问这些网络资源时说明为死链。
求高手给思路。

解决方案 »

  1.   

    不需要思路吧……要判断是否死链,必需首先打开该URL,取得返回值,楼主只要研究一下URL的返回状态套接字就可以了,用程序取得该URL的返回套接字,具体用什么协议的话,那得问高手了!如果是我的话,就直接取该URL内容,然后正则匹配是否有我需要的关键字……哈
      

  2.   

    1.将“死"链接保存到数据度中(既然是死链接,保存到数据库中好处理),并用一字段标志是否是死链接.
    2.检测时读出这些链接,逐条检测.
    3.检测方法是:
            boolean died=true
            try{
                URL url=new URL(res.getString("url"));
                String protocol=url.getProtocol();
                if(protocol==null || protocol.trim().length()==0)
                    died=true
            }catch(Exception e){
                died=false;
            }
            //如果died==true,是死链接.将好个标志字段做“死"链接标志.
            //本思路是根据很久以前的一个类似东西写出的,可能有更好的办法.
      

  3.   

    上面的方法有缺陷,改成下面的方法1.将“死"链接保存到数据度中(既然是死链接,保存到数据库中好处理),并用一字段标志是否是死链接.
    2.检测时读出这些链接,逐条检测.
    3.检测方法是:
            boolean died=true
            try{
                URL url=new URL(res.getString("url"));
                BufferedReader rd=new BufferedReader(new InputStreamReader(url.openStream()));
                String line=null;
                while((line=rd.readLine())!=null && line.indexOf("BODY")>=0){
                    died=false;
                }
            }catch(Exception e){
                died=false;
            }
            //如果died==true,是死链接.将好个标志字段做“死"链接标志.否则标志为“活”链接。
            //本思路是根据很久以前的一个类似东西写出的,可能有更好的办法.
      

  4.   

    boolean died=true
            try{
                URL url=new URL(res.getString("url"));
                BufferedReader rd=new BufferedReader(new InputStreamReader(url.openStream()));
                String line=null;
                while((line=rd.readLine())!=null && line.indexOf("......")>=0){
                    died=false;
                }
            }catch(Exception e){
                died=true;
            }
            //line.indexOf("......")中省略号是开发者要作判断的关键字。
            //如果是死链接,url.openStream()这句会抛出异常的话,算法是另外样子,而且会简单得多,楼主可作测试。