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




原理很简单.
虽然一些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;
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值