在JAR包中內嵌頁面資源
有時候使用JAVA寫一些功能,封裝為一個JAR包,提供給專案使用,這些專案最終釋出為WAR包。
但是有的時候,我提供的功能需要少許的頁面,如JSP,JS,HTML和圖片等。
但是又不能侵入到專案的程式碼。
當然,使用Servlet3.0可以實現在JAR中內嵌檢視資源的功能。
但是如果不使用Servlet3.0,可以寫一個過濾器實現這個功能。
過濾器攔截URL中以"/Web/virtual/"開頭的請求,並將JAR包中resource下的同名資源返回。
程式碼如下:
resource中的index.html程式碼如下
但是有的時候,我提供的功能需要少許的頁面,如JSP,JS,HTML和圖片等。
但是又不能侵入到專案的程式碼。
當然,使用Servlet3.0可以實現在JAR中內嵌檢視資源的功能。
但是如果不使用Servlet3.0,可以寫一個過濾器實現這個功能。
過濾器攔截URL中以"/Web/virtual/"開頭的請求,並將JAR包中resource下的同名資源返回。
程式碼如下:
-
import java.io.IOException;
-
import java.io.InputStream;
-
-
import javax.servlet.Filter;
-
import javax.servlet.FilterChain;
-
import javax.servlet.FilterConfig;
-
import javax.servlet.ServletException;
-
import javax.servlet.ServletRequest;
-
import javax.servlet.ServletResponse;
-
import javax.servlet.annotation.WebFilter;
-
import javax.servlet.http.HttpServletRequest;
-
-
import org.apache.commons.io.IOUtils;
-
-
/**
-
* Servlet Filter implementation class ResourceFilter
-
*/
-
@WebFilter(urlPatterns = "*")
-
public class ResourceFilter implements Filter {
-
-
@Override
-
public void destroy() {
-
}
-
-
@Override
-
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
-
HttpServletRequest request = (HttpServletRequest) arg0;
-
String url = request.getRequestURI();
-
if (url.startsWith("/Web/virtual/")) {
-
InputStream in = this.getClass().getClassLoader().getResourceAsStream("/resource/" + url.substring("/Web/virtual/".length()));
-
try {
-
IOUtils.copy(in, arg1.getOutputStream());
-
} finally {
-
IOUtils.closeQuietly(in);
-
}
-
} else {
-
arg2.doFilter(arg0, arg1);
-
}
-
}
-
-
@Override
-
public void init(FilterConfig arg0) throws ServletException {
-
}
-
- }
-
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-
<html>
-
<head>
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
<title></title>
-
</head>
-
<body>
-
<img src="pic.jpg" width="200px" height="150px" />
-
</body>
- </html>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1066649/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 客戶端內嵌Vue頁面客戶端Vue
- 讀取 jar 包中巢狀的 jar 包內容的方法JAR巢狀
- android內嵌html5頁面不能播放影片AndroidHTML
- 淺談小程式內嵌網頁及內嵌網頁跳轉分享實現網頁
- golang1.16內嵌靜態資源指南Golang
- 修改jar包內的classJAR
- ios和android內嵌h5頁面聯調小結iOSAndroidH5
- 深入Jar包:Gradle構建可執行jar包與訪問jar包中資料夾與檔案JARGradle
- 使用iframe內嵌網頁的時候,如何做到內嵌網頁的高度自適應 有大用網頁
- linux 啟動jar包:在 Linux 上啟動 Java jar 包的方法LinuxJARJava
- 課時20:內嵌函式和閉包函式
- 微信小程式內嵌H5,釋出後無法開啟頁面微信小程式H5
- springboot jar包執行中獲取資原始檔Spring BootJAR
- JDBC中連線資料庫的常用jar包JDBC資料庫JAR
- jar包JAR
- spring內嵌cglib包,這裡藏著一個大坑SpringCGLib
- linux系統中怎麼中執行jar包?linux系統中執行jar包的方法LinuxJAR
- 在pom檔案中新增jar包的方法JAR
- java-jar啟動jar包JavaJAR
- 026.Vue3入門,父頁面給子頁面傳遞資料,在子頁面不能修改,只能改自己的data內容Vue
- 3dTiles 資料規範詳解[3] 內嵌在瓦片檔案中的兩大資料表3D大資料
- JDK中內嵌JS引擎介紹及使用JDKJS
- 使用Chrome開發者工具除錯Android端內網頁(微信,QQ,UC,App內嵌頁等)Chrome除錯Android內網網頁APP
- Nginx 內嵌變數Nginx變數
- Springboot 獲取jar包中的檔案Spring BootJAR
- 從Maven專案中獲取Jar包MavenJAR
- java修改jar包JavaJAR
- idea打包jar包IdeaJAR
- centos 部署jar包CentOSJAR
- linux 部署jar包LinuxJAR
- JavaScript 獲取div在頁面中座標JavaScript
- 在WPF中嵌入WebBrowser視覺化頁面Web視覺化
- Spring在不同的使用中需要匯入的jar包(轉載未完待續)SpringJAR
- 起點海外版 Hybrid App-內嵌頁優化實踐APP優化
- iframe可以使用父頁面中的資源嗎(如:css、js等)?CSSJS
- Spring Boot啟動後讀取jar包內部檔案Spring BootJAR
- springboot 打包jar包後部署,提示無法解析返回的路徑,也就是無法解析html頁面Spring BootJARHTML
- IDEA中打Jar包的正確姿勢IdeaJAR
- java在centos7下部署執行jar包JavaCentOSJAR