今天无事,做了一个Jsp或asp.Net的预编译工具...

[入库:2005年8月19日] [更新:2007年3月25日]

本文简介:选择自 zituocn 的 blog




原理很简单.
虽然一些jsp的webserver提供预编译的功能,不过也可以试着自己写一个.
里面主要用到了java的httpurlconnection 和java.io.*;以下是console的code:

package sam.bobpig.com;
import java.io.*;
import java.net.*;
/**
 * <p>title: asp.net 或 jsp的precompile程序</p>
 * <p>description: </p>
 * <p>copyright: copyright (c) 2004</p>
 * <p>company:重庆飞时数码公司 </p>
 * @author 宋光义
 * @version 1.0
 */

public class precomplie {
  public static filefilter filefilter=new precompilefilefilter();
  public url rooturl;

  public precomplie(url arooturl) {
    rooturl = arooturl;
  }

  //
  public void precompiledirectory(file dir,string startdir)
  {
    file[] files=dir.listfiles(filefilter);
    for(int i=0;i<files.length;i++)
    {
      if(files[i].isdirectory())
      {
        precompiledirectory(files[i],startdir+dir.getname());
      }
      else
      {
        precompilefile(files[i],startdir+dir.getname());
      }
    }
  }

  public void precompilefile(file file,string startdir)
  {
    try
    {
      url precompileurl=new url(rooturl,startdir+"/"+file.getname()+"?asp_pre=true");

      //system.out.println(rooturl.tostring());
      system.out.println(precompileurl.tostring());

      httpurlconnection conn=(httpurlconnection) precompileurl.openconnection();
      int responsecode=conn.getresponsecode();
      system.out.println(rooturl+startdir+"/"+file.getname()+" has ok!  ["+responsecode+"]");
    }
    catch(exception exc)
    {
      system.out.println("exception:"+exc.tostring()+"for"+startdir+file.getname());

    }
  }


  public static void main(string[] args) {
    if(args.length<2)
    {
      system.out.print("please supply a base url and a base directory...");
      system.exit(0);
    }

    try
    {
      string starturl=args[0];
      file start=new file(args[1]);

      precomplie precomp=new precomplie(new url(starturl));

      if(start.isdirectory())
      {
        precomp.precompiledirectory(start,"");
      }
      else
      {
        precomp.precompilefile(start,"");
      }
    }
    catch(exception exc)
    {
      exc.printstacktrace();
    }

  }
}

class precompilefilefilter implements filefilter
{
  public boolean accept(file f)
  {
    if(f.isdirectory()) return true;
    if(f.getname().endswith(".aspx")) return true;
    return false;
  }
}

本文关键:今天无事,做了一个Jsp或asp.Net的预编译工具...
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top