日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java路径问题最终解决方案使用演示

發布時間:2023/12/9 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java路径问题最终解决方案使用演示 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java路徑問題最終解決方案使用演示 前言 在《Java路徑問題最終解決方案—可定位所有資源的相對路徑尋址》一文中,我給大家提供了一個助手類ClassLoaderUtil ,和它的public static URL getExtendResource(String relativePath)方法。這個方法能夠接受“../”這樣的參數,允許我們用相對路徑來定位classpath外面的資源。這樣,我們就可以使用相對于classpath的路徑,定位所有位置的資源! 本文中,我給大家提供了一個在JavaEE程序中使用這個便利方法尋找相對路徑的代碼實例。 在《JavaEE路徑陷阱之getRealPath》一文中,探討了JavaEE程序中資源尋址的問題,有興趣的讀者可以看看那篇文章。 Java路徑問題最終解決方案使用演示 示例背景 使用ClassLoaderUtil.getExtendResource()方法進行尋址的這個示例,是一個JavaEE程序,使用了SpringMVC框架進行前臺開發。上傳文件部分,使用了Apache的commons upload技術。 這個模塊的功能是,向服務器上傳一個JBoss的工作流引擎Jbpm的工作流定義文件。然后把它部署到服務器上。同時,把上傳的工作流定義文件保存到服務器的Web應用程序根目錄/WEB-INF/jbpm/upload/目錄下,以備查閱! 源代碼: import java.io.File; import java.net.URI; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.servlet.ModelAndView; import com.withub.common.base.BaseController; import com.withub.common.util.ClassLoaderUtil; import com.withub.common.util.IDeployProcessDefinition; import com.withub.wcms.UrlMap; import com.withub.wcms.manage.deployProcessDefinition.jbpm.bean.FileUploadBean; /** ?*@author沈東良shendl_s@hotmail.com ?*Nov27,2006?1:31:25PM ?*這個類負責上傳并部署Jbpm工作流定義文件 ?*并且把已上傳的文件copyWeb應用程序根目錄/WEB-INF/jbpm/upload/目錄下,以備查閱! ?* ?*/ publicclass UploadAndDeployJbpmProcessDefinition extends BaseController { ??? /** ??? ?*Service,部署本地上傳的xml業務程序定義文件到服務器端的數據庫! ??? ?*Bean是單例。?運行時,不set這個變量。只在初始化載入Spring容器時調用set方法。注意同步資源! ??? ?*/ ??? private IDeployProcessDefinition deployProcessDefinition; ??? /** ??? ?*這個方法,直接返回上傳、部署工作流定義頁面。這是為了用.page控制上傳頁面的訪問權。 ??? ?*@paramrequest ??? ?*@paramresponse ??? ?*@return ??? ?*@throwsException ??? ?*/ ??? public?ModelAndView list(HttpServletRequest request,HttpServletResponse response) throws Exception{ ?????? ?????? returnnew ModelAndView(UrlMap.map("manage.deployProcessDefinition.list")); ??? } ??? ??? /** ??? ?* ??? ?*@paramrequest ??? ?*@paramresponse ??? ?*@paramcommand ??? ?*@return ??? ?*@throwsException ??? ?*/ ??? public?ModelAndView onSubmit(HttpServletRequest request,HttpServletResponse response,FileUploadBean command) throws Exception { ? ?? ?????? ? ?? ??????? // let's see if there's content there ?? ??????? MultipartFile file = command.getFile(); ?? ??????? if (file == null) { ?? ???????????? // hmm, that's strange, the user did not upload anything ?? ??????? ?thrownew RuntimeException("上傳文件出錯!未能成功上傳文件!"); ?? ??????? ? ?? ??????? }else{ ?? ??????? ?//部署上傳的文件 ?? ??????? ?? this.getDeployProcessDefinition().deployProcessDefinitionTransaction(file.getInputStream()); ?? ??????? ?File destFile=null; ?? ??????? ?/** ?? ??????? ??*使用自定義的方法,實現了相對于classpath的相對路徑尋址。 ?? ??????? ??*/ ?? ??????? ?String uploadPath=ClassLoaderUtil.getExtendResource("../jbpm/upload/").toString(); ?? ??????? ?String uploadFile=uploadPath+String.valueOf(new Date().getTime())+"_"+file.getOriginalFilename(); ?? ??????? ?destFile=new File(new URI(uploadFile)); ?? ??????? ?file.transferTo(destFile); ?? ??????? ? ?? ??????? } ? ?? ???????? // well, let's do nothing with the bean for now and return ?? ??????? //return super.onSubmit(request, response, command, errors); ?? ??????? returnnew ModelAndView(UrlMap.map("manage.deployProcessDefinition.success")); ?? ??? } ??? ??? /** ??? ?*@paramargs ??? ?*/ ??? publicstaticvoid main(String[] args) { ?????? /** ?????? ?* ?????? ?*/ ??? } ??? /** ??? ?*@returnthedeployProcessDefinition ??? ?*/ ??? public IDeployProcessDefinition getDeployProcessDefinition() { ?????? returndeployProcessDefinition; ??? } ??? /** ??? ?*@paramdeployProcessDefinitionthedeployProcessDefinitiontoset ??? ?*/ ??? publicvoid setDeployProcessDefinition( ?????????? IDeployProcessDefinition deployProcessDefinition) { ?????? this.deployProcessDefinition = deployProcessDefinition; ??? } } 后記 這里,我使用了自己實現的ClassLoaderUtil.getExtendResource()方法,實現了相對于classpath的相對路徑尋址。 沒有使用ServletContext接口提供的尋址方法。這樣的代碼,不依賴于JavaEE環境,依賴的是標準的JavaSE,可以用在任何Java程序中! 如果你要使用ServletContext接口提供的尋址方法,那么請一定不要使用getRealPath(“/”)方法,而應該使用getResource()方法或者getResourceAsStream()方法尋址。參數應該是“/”開頭的相對路徑,相對的是Web應用程序根目錄的相對路徑,而不是classpath的相對路徑。具體原因,在《JavaEE路徑陷阱之getRealPath》一文中作了詳細的解釋。

轉載于:https://www.cnblogs.com/armlinux/archive/2006/12/03/2391050.html

總結

以上是生活随笔為你收集整理的Java路径问题最终解决方案使用演示的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。