

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