JavaÀà¼ÓÔØÆ÷
Èç¹ûÄãÏë¶Ôjava¼ÓÔØÀàµÄ»úÖÆÓбȽÏÉîÈëµÄÀí½âµÄ»°,ÇëÄ㻨µãʱ¼äºÃºÃÔĶÁÒ»ÏÂÕâƪ¶«Î÷.
ÕâÀï´ÓÈý¸ö·½Ãæ½²Êöjava classloader
1,½«´ÓwebÓ¦Óóö·¢Ä£ÄâÒ»ÏÂwebÓ¦ÓõÄclassloader(Õâ½ÚÊÇÖصã)
2,ͨ¹ý²âÊÔ2ʵÏÖµÄclassloaderÀ´¼ÓÉîÀí½â
3,·ÒëÒ»ÏÂclassloaderµÄÏà¹Ø¼¼ÊõÎÄÕÂ(À´×ÔCore JavaµÚ¶þ¾íµÄChapter 9. Security),ÓÉÓÚÎÒµÄÓ¢ÎÄˮƽÓÐÏÞ,ÄÑÃâÓв»ºÏÊÊ,Çë´ó¼ÒÖ¸³ö.
¿´¿´ÔõôʵÏÖÒ»¸ö×Ô¼ºµÄClassLoader£¨ÎÒÃÇÒÔwebÓ¦ÓõÄclassloaderΪÀýÀ´½²½â £©
´ó¼Ò¶¼ºÜÊìϤtomcat,±ÈÈçÎÒÃÇҪдһ¸öservletÔËÐеĻ°.
1,ÎÒÃÇͨ³£»áÔÚtomcatµÄwebappsĿ¼Ï½¨Ò»¸ö×Ô¼ºµÄwebĿ¼(±ÈÈçmyweb),È»ºóÈÃ×Ô¼ºµÄmywebÖÁÉÙ¾ßÓÐÒÔÏÂĿ¼½á¹¹.
©¸©¤WEB-INF
©À©¤classes
©¸©¤lib
2,Ö±½Ó°ÑclassÎļþ¿½±´µ½classesĿ¼ÏÂ,»òÕß°Ñ×Ô¼º×öµÄservet´ò³Éjar·Åµ½libÏÂ
3,Æô¶¯tomcat¾ÍÄÜ·ÃÎÊservletÁË.
ÔÙ˵һµã:²»ÉÙÈËÁ˽âstruts,Ò²×ö¹ý»ùÓÚstrutsµÄÓ¦ÓÃ.Æäʵstruts¶ÔÓÚÎÒÃÇÀ´ËµÖ»ÊǼ¸¸öjar¶øÒÑ,ÎÒÃÇÒªÔÚ×Ô¼ºµÄÓ¦ÓÃÖÐÓÃstruts,
Ö»²»¹ý¾ÍÏóÉÏÃæÒ»Ñù°ÑstrutsµÄ¸÷¸ölib¿½±´µ½webÓ¦ÓõÄWEB-INF/libϾÍOKÁË.
ÔÙ×ÛºÏÇ°ÃæµÄ»ù´¡²¿·Ö,ÆäʵwebÓ¦ÓÃÊÇÓÐ×Ô¼ºµÄclassloaderµÄ,ËûרߺÔð¼ÓÔØWEB-INF/libºÍWEB- INF/classesµÄÀà¡£ÏÂÃæÎÒÃǾÍÀ´Ä£ÄâÒ»ÏÂwebÓ¦ÓõÄclassloader,ÏàÐÅ¿´ÁËÏÂÃæµÄ´úÂëÄã¾Í»á¶ÔclassloaderµÄÀí½âÓÖÉÏÒ»¸ǫ̈½×.
view plaincopy to clipboardprint?
import java.io.File;
import java.io.FilenameFilter;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
/*
* webÓ¦ÓõÄclassloader
* ´øÄã²½ÈëclassloaderµÄÌìÌÃ
*/
public class WebAppClassLoader{
URLClassLoader myClassLoader = null;
/*
* Ó÷¨:new WebAppClassLoader(webRoot)
* ±ÈÈç:new WebAppClassLoader("c:/web")
&
Ïà¹ØÎĵµ£º
Ò».°¢ÀïÑз¢Ôº-º¼ÖÝ-Java¸ß¼¶³ÌÐòÔ±
ÈËÊý£º1ÈË
ѧÀú£º±¾¿Æ¼°ÒÔÉÏ
¹¤×÷µØµã£ºº¼ÖÝ
ְλÃèÊö:
1¡¢ Éè¼Æ¡¢¿ª·¢¡¢¸Ä½ø»ùÓÚJavaµÄ¹¤¾ßºÍ¿ò¼Ü£»
2¡¢ Ö¸µ¼¿ª·¢ÍŶÓʹÓù¤¾ßºÍ¿ò¼Ü£¬½â¾öÒÉÄÑÎÊÌâ¡£
ְλҪÇó£º
1¡¢ ÊìϤ²¢×ÔÈçÔËÓÃJavaÓïÑÔ¼°JDKÀà¿â£¬¾ß±¸Á¼ºÃµÄ±à³ÌÏ°¹ß£»
2¡¢ ÊìϤ¶àÖÖJava¿ªÔ´ÏîÄ¿£¬¾«Í¨Ä¿Ç°Ö÷Á ......
package com.dongyang;
/*
* ¶Áxlsдxml
*/
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;
imp ......
/***********Ryear.java begin********************/
import java.util.Scanner;
public class Ryear {
/**
* @param args
*/
public static void main(String[] args) {
/**
* ±àд³ÌÐò ......
½ñÌìÏë¶ÁÈ¡srcϵÄÅäÖÃÎļþ£¬ÒÔǰһֱûÕÒµ½·½·¨£¬½ñÌìÑо¿ÁËÏÂÖÕÓÚOKÁË
System.out.println("path1:" + getClass().getResource("config.xml").getPath());
System.out.println("path2:" + getClass().getClassLoader().getResource("config.xml").getPath());
path1:/D:/DJ/workspace/.metadata ......
1.1.1. ¼¯ºÏ¿ò¼ÜÖеĽӿÚ
Ëùν¿ò¼Ü¾ÍÊÇÒ»¸öÀà¿âµÄ¼¯ºÏ¡£¼¯ºÏ¿ò¼Ü¾ÍÊÇÒ»¸öÓÃÀ´±íʾºÍ²Ù×÷¼¯ºÏµÄͳһµÄ¼Ü¹¹£¬°üº¬ÁËʵÏÖ¼¯ºÏµÄ½Ó¿ÚÓëÀà¡£
* Collection£º¼¯ºÏ²ã´ÎÖеĸù½Ó¿Ú£¬JDKûÓÐÌṩÕâ¸ö½Ó¿ÚÖ±½ÓµÄʵÏÖÀà¡£
* Se ......