URLClassloader 載入本地方法
package cn.how2j.diytomcat.servlet;
import cn.how2j.diytomcat.Request;
import cn.how2j.diytomcat.Response;
import cn.how2j.http.HttpServer;
import org.apache.tomcat.util.scan.Constants;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLStreamHandler;
/**
* @author WangYifei
* @desc Servlet 處理類
*/
public class ServletProcessor1 {
public void process(Request request, Response response) {
String uri = request.getUri();
String servletName = uri.substring(uri.lastIndexOf("/") + 1);
URLClassLoader loader = null;
try {
// create a URLClassLoader
URL[] urls = new URL[1];
URLStreamHandler streamHandler = null;
File file = new File(System.getProperty("user.dir") + File.separator + "webroot" + File.separator + "wyf-diytomcat.jar");
urls[0] = file.toURI().toURL();
System.out.println(urls[0]);
loader = new URLClassLoader(urls);
} catch (IOException e) {
System.out.println(e.toString());
}
Class myClass = null;
try {
System.out.println(servletName);
myClass = loader.loadClass("cn.how2j.diytomcat.servlet.PrimitiveServlet");
} catch (ClassNotFoundException e) {
System.out.println(e.toString());
}
Servlet servlet = null;
try {
servlet = (Servlet) myClass.newInstance();
servlet.service(request, response);
} catch (InstantiationException e) {
System.out.println(e.toString());
} catch (IllegalAccessException e) {
System.out.println(e.toString());
} catch (ServletException e) {
System.out.println(e.toString());
} catch (IOException e) {
System.out.println(e.toString());
}
}
}
從《深入剖析tomcat》中看到使用URLClassloader載入,一步一步跟著做,可能由於部分沒有寫出來,自己百度瞭解到URLClassloader載入的是jar包,通過loadClass 去使用jar,對jar中的某個類進行例項化,為了下一步手動將本專案打包成為jar之後設定固定值進行測試,為了學習下一步,雖然還有一部分問題並且與書中程式碼不一致,現在不知道怎麼實現,但是基本概念已經有了,可以進行下一步的學習了。
相關文章
- java URLClassLoader 載入外部jar包中的指定的類JavaJAR
- 用URLClassLoader無法實現重新載入類,幫幫忙
- WebGL載入本地模型Web模型
- WKWebView載入本地檔案WebView
- Remix本地化,載入本地合約檔案,本地連結RemixREM
- vue如何動態載入本地圖片Vue地圖
- 載入本地圖片模糊,Glide載入網路圖片卻很清晰地圖IDE
- Java通過URLClassLoader讓程式支援外掛擴充套件(轉載)Java套件
- Windows系統電腦不能載入本地儲存的配置檔案的解決方法Windows
- 如何載入本地下載下來的BERT模型,pytorch踩坑!!模型PyTorch
- js 進入頁面載入的方法JS
- 在 PowerShell 中,"本地載入"和"遠端載入"通常指的是執行指令碼或命令的位置或方式。以下是關於本地載入和遠端載入的一些基本概念和示例:指令碼
- 使用URLClassLoader報錯not class found exceptionException
- JAVA載入配置檔案方法Java
- 懶載入簡單的方法
- Python重新載入模組方法Python
- 動態載入JS的方法JS
- MapGis載入及使用方法
- Glide 4.0.0 下之載入本地快取的圖片IDE快取
- Android 自定義本地圖片載入庫,仿微信相簿Android地圖
- 梨影片(PearVideo)下載解析的方法和技巧,梨影片下載到本地IDE
- oracle本地登入Oracle
- js資料載入完成的方法JS
- aix 6.0 載入磁帶的方法AI
- Qt(QtWebEngine)載入本地網頁跨域問題的總結QTWeb網頁跨域
- Android WebView適配html載入本地檔案並上傳AndroidWebViewHTML
- 雲盤本地載入工具:CloudMounter for mac v4.3啟用版CloudMac
- Swift - 網頁控制元件(UIWebView)載入本地資料,檔案Swift網頁控制元件UIWebView
- 載入ntfs分割槽(透過載入支援ntfs核心補丁的方法)
- Android入門教程 | Fragment (載入方法與通訊)AndroidFragment
- iOS 本地DNS解析方法iOSDNS
- 儲存到本地的方法
- java方法客戶端下載伺服器上的檔案到本地Java客戶端伺服器
- golang匯入本地包Golang
- React Native學習之Image載入本地圖片的坑(iOS)React Native地圖iOS
- TensorFlow 載入多個模型的方法模型
- 部落格園去google廣告載入方法Go
- $(function(){}裡面方法不載入問題Function